diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 74dea387a..4cc6d4f05 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,7 +1,7 @@ ### Version -_Version of Slic3r Prusa Edition used goes here_ +_Version of Slic3r++ used goes here_ -_Use `About->About Slic3r` for release versions_ +_Use `About->About Slic3r++` for release versions_ _For -dev versions, use `git describe --tag` or get the hash value for the version you downloaded or `git rev-parse HEAD`_ @@ -18,9 +18,9 @@ _What 3D printer brand / version are you printing on, is it a stock model or did * _If this is a command-line slicing issue, include the options used_ * _Expected Results_ * _Actual Results_ - * _Screenshots from __*Slic3r*__ preview are preferred_ + * _Screenshots from __*Slic3r++*__ preview are preferred_ _Is this a new feature request?_ #### Project File (.3MF) where problem occurs -_Upload a Slic3r PE Project File (.3MF) (`Plater -> Export plate as 3MF` for Slic3r PE 1.41.2 and older, `File -> Save` / `Save Project` for Slic3r PE 1.42.0-alpha and newer)_ +_Upload a Slic3r++ Project File (.3MF) (`Plater -> Export plate as 3MF` for Slic3r PE 1.41.2 and older, `File -> Save` / `Save Project` for Slic3r++, Slic3r PE 1.42.0-alpha and newer)_ diff --git a/Build.PL b/Build.PL index 3f1cf2633..dfbeac8d9 100644 --- a/Build.PL +++ b/Build.PL @@ -3,7 +3,7 @@ print "This script is currently used for installing Perl dependenices for running\n"; print "the libslic3r unit / integration tests through Perl prove.\n"; print "If you don't plan to run the unit / integration tests, you don't need to\n"; -print "install these dependencies to build and run Slic3r.\n"; +print "install these dependencies to build and run Slic3r++.\n"; use strict; use warnings; @@ -122,7 +122,7 @@ EOF } print "\n"; -print "In the next step, you need to build the Slic3r C++ library.\n"; +print "In the next step, you need to build the Slic3r++ C++ library.\n"; print "1) Create a build directory and change to it\n"; print "2) run cmake .. -DCMAKE_BUILD_TYPE=Release\n"; print "3) run make\n"; diff --git a/CMakeLists.txt b/CMakeLists.txt index 01be581dd..9ccb6e481 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,13 +49,18 @@ foreach (_cache_var ${_cache_vars}) endif () endforeach() +if (SLIC3R_GUI) + add_definitions(-DSLIC3R_GUI) +endif () + if (MSVC) if (SLIC3R_MSVC_COMPILE_PARALLEL) add_compile_options(/MP) endif () # /bigobj (Increase Number of Sections in .Obj file) # error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm90' or greater - add_compile_options(-bigobj -Zm316) + # Generate symbols at every build target, even for the release. + add_compile_options(-bigobj -Zm316 /Zi) endif () # Display and check CMAKE_PREFIX_PATH @@ -135,6 +140,10 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux") # Workaround for an old CMake, which does not understand CMAKE_CXX_STANDARD. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() + + # Boost on Raspberry-Pi does not link to pthreads. + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) endif() if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX) @@ -226,7 +235,11 @@ if(SLIC3R_STATIC) endif() #set(Boost_DEBUG ON) # set(Boost_COMPILER "-vc120") -find_package(Boost REQUIRED COMPONENTS system filesystem thread log locale regex) +if(NOT WIN32) + # boost::process was introduced first in version 1.64.0 + set(MINIMUM_BOOST_VERSION "1.64.0") +endif() +find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS system filesystem thread log locale regex) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) if (APPLE) @@ -317,7 +330,7 @@ include_directories(${GLEW_INCLUDE_DIRS}) # l10n set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/localization") add_custom_target(pot - COMMAND xgettext --keyword=L --from-code=UTF-8 --debug + COMMAND xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -f "${L10N_DIR}/list.txt" -o "${L10N_DIR}/Slic3r++.pot" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} @@ -348,7 +361,7 @@ endif() if (WIN32) install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources") else () - set(SLIC3R_FHS_RESOURCES "${CMAKE_INSTALL_FULL_DATAROOTDIR}/slic3r-prusa3d") + set(SLIC3R_FHS_RESOURCES "${CMAKE_INSTALL_FULL_DATAROOTDIR}/slic3r++") install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${SLIC3R_FHS_RESOURCES}") endif () configure_file(${LIBDIR}/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/platform/unix/fhs.hpp) diff --git a/slic3r.sublime-project b/PrusaSlicer.sublime-project similarity index 100% rename from slic3r.sublime-project rename to PrusaSlicer.sublime-project diff --git a/README.md b/README.md index 159195f1f..29017303e 100644 --- a/README.md +++ b/README.md @@ -4,25 +4,27 @@ A: Yeah! Slic3r ====== -Prebuilt Windows 32b is available through the [git releases page](https://github.com/supermerill/Slic3r/releases). +Prebuilt Windows 64b is available through the [git releases page](https://github.com/supermerill/Slic3r/releases). -Slic3r takes 3D models (STL, OBJ, AMF) and converts them into G-code instructions for -3D printers. It's compatible with any modern printer based on the RepRap toolchain, -including all those based on the Marlin, Sprinter and Repetier firmware. It also works +Slic3r++ takes 3D models (STL, OBJ, AMF) and converts them into G-code +instructions for FFF printers or PNG layers for mSLA 3D printers. It's +compatible with any modern printer based on the RepRap toolchain, including all +those based on the Marlin, Prusa, Sprinter and Repetier firmware. It also works with Mach3, LinuxCNC and Machinekit controllers. -See the [project homepage](http://slic3r.org/) at slic3r.org and the -[manual](http://manual.slic3r.org/) for more information. +Slic3r++ is based on [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranelucci and the RepRap community. + +See the [project homepage](https://www.prusa3d.com/slic3r-prusa-edition/) and +the [documentation directory](doc/) for more information. ### What language is it written in? Almost everything are written in C++, -The C++ API is public and its use in other projects is encouraged. -The goal is to make Slic3r fully modular so that any part of its logic -can be used separately. +The slicing core is the `libslic3r` library, which can be built and used in a standalone way. +The command line interface is a thin wrapper over `libslic3r`. ### What are this fork main features/differences? @@ -32,7 +34,7 @@ can be used separately. * Better Thin walls (anchored inside the print, no more random bits at the ends). * Can join perimeters into a big one to avoid travel moves. * Many other little options and corrections (like the filled concentric pattern). -* It has also all the current slic3rPE features. +* It has also all the current slic3rPE/PrusaSlicer features. #### Complete changelog [here](https://github.com/supermerill/Slic3r/wiki) @@ -61,20 +63,21 @@ Other major features are: * several infill patterns including honeycomb, spirals, Hilbert curves, gyroid * support material, raft, brim, skirt * **standby temperature** and automatic wiping for multi-extruder printing -* customizable **G-code macros** and output filename with variable placeholders +* [customizable **G-code macros**](https://github.com/prusa3d/PrusaSlicer/wiki/Slic3r-Prusa-Edition-Macro-Language) and output filename with variable placeholders * support for **post-processing scripts** * **cooling logic** controlling fan speed and dynamic print speed -### How to install? +### Development You can download a precompiled package from the release page. it will run without the need for any dependency. -If you want to compile the source yourself follow the instructions on one of these wiki pages: -* [Linux](https://github.com/supermerill/Slic3r/tree/master/doc/How%20to%20build%20-%20UNIX.md) -* [Windows](https://github.com/supermerill/Slic3r/tree/master/doc/How%20to%20build%20-%20Windows.md) -* [Mac OSX](https://github.com/supermerill/Slic3r/tree/master/doc/How_to_build_Slic3r.txt) +If you want to compile the source yourself, follow the instructions on one of +these documentation pages: +* [Linux](doc/How%20to%20build%20-%20Linux%20et%20al.md) +* [macOS](doc/How%20to%20build%20-%20Mac%20OS.md) +* [Windows](doc/How%20to%20build%20-%20Windows.md) ### Can I help? Sure! You can do the following to find things that are available to help with: @@ -83,315 +86,12 @@ Sure! You can do the following to find things that are available to help with: Before sending patches and pull requests contact me (preferably through opening a github issue or commenting on an existing, related, issue) to discuss your proposed changes: this way we'll ensure nobody wastes their time and no conflicts arise in development. -### What's Slic3r license? +Slic3r++ is licensed under the _GNU Affero General Public License, version 3_. +The Slic3r++ is originally based on Slic3r by Alessandro Ranellucci. Slic3r is licensed under the _GNU Affero General Public License, version 3_. The first author is Alessandro Ranellucci, and many contributors -Then the he Prusa team +Then the Prusa team Then Durand remi for this fork -The [Silk icon set](http://www.famfamfam.com/lab/icons/silk/) used (and modified) in Slic3r is -licensed under the _Creative Commons Attribution 3.0 License_. -The author of the Silk icon set is Mark James. - -### How can I invoke slic3r.pl using the command line? (not up-to-date yet, use the --help command instead) - - Usage: slic3r.pl [ OPTIONS ] [ file.stl ] [ file2.stl ] ... - - --help Output this usage screen and exit - --version Output the version of Slic3r and exit - --save Save configuration to the specified file - --load Load configuration from the specified file. It can be used - more than once to load options from multiple files. - -o, --output File to output gcode to (by default, the file will be saved - into the same directory as the input file using the - --output-filename-format to generate the filename.) If a - directory is specified for this option, the output will - be saved under that directory, and the filename will be - generated by --output-filename-format. - - Non-slicing actions (no G-code will be generated): - --repair Repair given STL files and save them as _fixed.obj - --cut Cut given input files at given Z (relative) and export - them as _upper.stl and _lower.stl - --split Split the shells contained in given STL file into several STL files - --info Output information about the supplied file(s) and exit - - -j, --threads Number of threads to use (1+, default: 2) - - GUI options: - --gui Forces the GUI launch instead of command line slicing (if you - supply a model file, it will be loaded into the plater) - --no-plater Disable the plater tab - --no-gui Forces the command line slicing instead of gui. - This takes precedence over --gui if both are present. - --autosave Automatically export current configuration to the specified file - - Output options: - --output-filename-format - Output file name format; all config options enclosed in brackets - will be replaced by their values, as well as [input_filename_base] - and [input_filename] (default: [input_filename_base].gcode) - --post-process Generated G-code will be processed with the supplied script; - call this more than once to process through multiple scripts. - --export-png Export zipped PNG files containing slices instead of G-code. - -m, --merge If multiple files are supplied, they will be composed into a single - print rather than processed individually. - - Printer options: - --nozzle-diameter Diameter of nozzle in mm (default: 0.5) - --print-center Coordinates in mm of the point to center the print around - (default: 100,100) - --z-offset Additional height in mm to add to vertical coordinates - (+/-, default: 0) - --gcode-flavor The type of G-code to generate (reprap/teacup/repetier/makerware/sailfish/mach3/machinekit/smoothie/no-extrusion, - default: reprap) - --use-relative-e-distances Enable this to get relative E values (default: no) - --use-firmware-retraction Enable firmware-controlled retraction using G10/G11 (default: no) - --use-volumetric-e Express E in cubic millimeters and prepend M200 (default: no) - --gcode-comments Make G-code verbose by adding comments (default: no) - - Filament options: - --filament-diameter Diameter in mm of your raw filament (default: 3) - --extrusion-multiplier - Change this to alter the amount of plastic extruded. There should be - very little need to change this value, which is only useful to - compensate for filament packing (default: 1) - --temperature Extrusion temperature in degree Celsius, set 0 to disable (default: 200) - --first-layer-temperature Extrusion temperature for the first layer, in degree Celsius, - set 0 to disable (default: same as --temperature) - --bed-temperature Heated bed temperature in degree Celsius, set 0 to disable (default: 0) - --first-layer-bed-temperature Heated bed temperature for the first layer, in degree Celsius, - set 0 to disable (default: same as --bed-temperature) - - Speed options: - --travel-speed Speed of non-print moves in mm/s (default: 130) - --perimeter-speed Speed of print moves for perimeters in mm/s (default: 30) - --small-perimeter-speed - Speed of print moves for small perimeters in mm/s or % over perimeter speed - (default: 30) - --external-perimeter-speed - Speed of print moves for the external perimeter in mm/s or % over perimeter speed - (default: 70%) - --infill-speed Speed of print moves in mm/s (default: 60) - --solid-infill-speed Speed of print moves for solid surfaces in mm/s or % over infill speed - (default: 60) - --top-solid-infill-speed Speed of print moves for top surfaces in mm/s or % over solid infill speed - (default: 50) - --support-material-speed - Speed of support material print moves in mm/s (default: 60) - --support-material-interface-speed - Speed of support material interface print moves in mm/s or % over support material - speed (default: 100%) - --bridge-speed Speed of bridge print moves in mm/s (default: 60) - --gap-fill-speed Speed of gap fill print moves in mm/s (default: 20) - --first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute - value or as a percentage over normal speeds (default: 30%) - - Acceleration options: - --perimeter-acceleration - Overrides firmware's default acceleration for perimeters. (mm/s^2, set zero - to disable; default: 0) - --infill-acceleration - Overrides firmware's default acceleration for infill. (mm/s^2, set zero - to disable; default: 0) - --bridge-acceleration - Overrides firmware's default acceleration for bridges. (mm/s^2, set zero - to disable; default: 0) - --first-layer-acceleration - Overrides firmware's default acceleration for first layer. (mm/s^2, set zero - to disable; default: 0) - --default-acceleration - Acceleration will be reset to this value after the specific settings above - have been applied. (mm/s^2, set zero to disable; default: 0) - - Accuracy options: - --layer-height Layer height in mm (default: 0.3) - --first-layer-height Layer height for first layer (mm or %, default: 0.35) - --infill-every-layers - Infill every N layers (default: 1) - --solid-infill-every-layers - Force a solid layer every N layers (default: 0) - - Print options: - --perimeters Number of perimeters/horizontal skins (range: 0+, default: 3) - --top-solid-layers Number of solid layers to do for top surfaces (range: 0+, default: 3) - --bottom-solid-layers Number of solid layers to do for bottom surfaces (range: 0+, default: 3) - --solid-layers Shortcut for setting the two options above at once - --fill-density Infill density (range: 0%-100%, default: 40%) - --fill-angle Infill angle in degrees (range: 0-90, default: 45) - --fill-pattern Pattern to use to fill non-solid layers (default: honeycomb) - --solid-fill-pattern Pattern to use to fill solid layers (default: rectilinear) - --start-gcode Load initial G-code from the supplied file. This will overwrite - the default command (home all axes [G28]). - --end-gcode Load final G-code from the supplied file. This will overwrite - the default commands (turn off temperature [M104 S0], - home X axis [G28 X], disable motors [M84]). - --before-layer-gcode Load before-layer-change G-code from the supplied file (default: nothing). - --layer-gcode Load after-layer-change G-code from the supplied file (default: nothing). - --toolchange-gcode Load tool-change G-code from the supplied file (default: nothing). - --seam-position Position of loop starting points (random/nearest/aligned, default: aligned). - --external-perimeters-first Reverse perimeter order. (default: no) - --spiral-vase Experimental option to raise Z gradually when printing single-walled vases - (default: no) - --only-retract-when-crossing-perimeters - Disable retraction when travelling between infill paths inside the same island. - (default: no) - --solid-infill-below-area - Force solid infill when a region has a smaller area than this threshold - (mm^2, default: 70) - --infill-only-where-needed - Only infill under ceilings (default: no) - --infill-first Make infill before perimeters (default: no) - - Quality options (slower slicing): - --extra-perimeters Add more perimeters when needed (default: yes) - --avoid-crossing-perimeters Optimize travel moves so that no perimeters are crossed (default: no) - --thin-walls Detect single-width walls (default: yes) - --overhangs Experimental option to use bridge flow, speed and fan for overhangs - (default: yes) - - Support material options: - --support-material Generate support material for overhangs - --support-material-threshold - Overhang threshold angle (range: 0-90, set 0 for automatic detection, - default: 0) - --support-material-pattern - Pattern to use for support material (default: honeycomb) - --support-material-spacing - Spacing between pattern lines (mm, default: 2.5) - --support-material-angle - Support material angle in degrees (range: 0-90, default: 0) - --support-material-contact-distance - Vertical distance between object and support material - (0+, default: 0.2) - --support-material-interface-layers - Number of perpendicular layers between support material and object (0+, default: 3) - --support-material-interface-spacing - Spacing between interface pattern lines (mm, set 0 to get a solid layer, default: 0) - --raft-layers Number of layers to raise the printed objects by (range: 0+, default: 0) - --support-material-enforce-layers - Enforce support material on the specified number of layers from bottom, - regardless of --support-material and threshold (0+, default: 0) - --dont-support-bridges - Experimental option for preventing support material from being generated under bridged areas (default: yes) - - Retraction options: - --retract-length Length of retraction in mm when pausing extrusion (default: 1) - --retract-speed Speed for retraction in mm/s (default: 30) - --retract-restart-extra - Additional amount of filament in mm to push after - compensating retraction (default: 0) - --retract-before-travel - Only retract before travel moves of this length in mm (default: 2) - --retract-lift Lift Z by the given distance in mm when retracting (default: 0) - --retract-lift-above Only lift Z when above the specified height (default: 0) - --retract-lift-below Only lift Z when below the specified height (default: 0) - --retract-layer-change - Enforce a retraction before each Z move (default: no) - --wipe Wipe the nozzle while doing a retraction (default: no) - - Retraction options for multi-extruder setups: - --retract-length-toolchange - Length of retraction in mm when disabling tool (default: 10) - --retract-restart-extra-toolchange - Additional amount of filament in mm to push after - switching tool (default: 0) - - Cooling options: - --cooling Enable fan and cooling control - --min-fan-speed Minimum fan speed (default: 35%) - --max-fan-speed Maximum fan speed (default: 100%) - --bridge-fan-speed Fan speed to use when bridging (default: 100%) - --top-fan-speed Fan speed to use when printing top layer (default: 100%) - --fan-below-layer-time Enable fan if layer print time is below this approximate number - of seconds (default: 60) - --slowdown-below-layer-time Slow down if layer print time is below this approximate number - of seconds (default: 30) - --min-print-speed Minimum print speed (mm/s, default: 10) - --disable-fan-first-layers Disable fan for the first N layers (default: 1) - --fan-always-on Keep fan always on at min fan speed, even for layers that don't need - cooling - - Skirt options: - --skirts Number of skirts to draw (0+, default: 1) - --skirt-distance Distance in mm between innermost skirt and object - (default: 6) - --skirt-height Height of skirts to draw (expressed in layers, 0+, default: 1) - --min-skirt-length Generate no less than the number of loops required to consume this length - of filament on the first layer, for each extruder (mm, 0+, default: 0) - --brim-width Width of the brim that will get added to each object to help adhesion - (mm, default: 0) - - Transform options: - --scale Factor for scaling input object (default: 1) - --rotate Rotation angle in degrees (0-360, default: 0) - --duplicate Number of items with auto-arrange (1+, default: 1) - --duplicate-grid Number of items with grid arrangement (default: 1,1) - --duplicate-distance Distance in mm between copies (default: 6) - --dont-arrange Don't arrange the objects on the build plate. The model coordinates - define the absolute positions on the build plate. - The option --print-center will be ignored. - --xy-size-compensation - Grow/shrink objects by the configured absolute distance (mm, default: 0) - - Sequential printing options: - --complete-objects When printing multiple objects and/or copies, complete each one before - starting the next one; watch out for extruder collisions (default: no) - --extruder-clearance-radius Radius in mm above which extruder won't collide with anything - (default: 20) - --extruder-clearance-height Maximum vertical extruder depth; i.e. vertical distance from - extruder tip and carriage bottom (default: 20) - - Miscellaneous options: - --notes Notes to be added as comments to the output file - --resolution Minimum detail resolution (mm, set zero for full resolution, default: 0) - - Flow options (advanced): - --extrusion-width Set extrusion width manually; it accepts either an absolute value in mm - (like 0.65) or a percentage over layer height (like 200%) - --first-layer-extrusion-width - Set a different extrusion width for first layer - --perimeter-extrusion-width - Set a different extrusion width for perimeters - --external-perimeter-extrusion-width - Set a different extrusion width for external perimeters - --infill-extrusion-width - Set a different extrusion width for infill - --solid-infill-extrusion-width - Set a different extrusion width for solid infill - --top-infill-extrusion-width - Set a different extrusion width for top infill - --support-material-extrusion-width - Set a different extrusion width for support material - --infill-overlap Overlap between infill and perimeters (default: 15%) - --bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: 1) - --over-bridge-flow-ratio Multiplier for extrusion when printing the layer above a bride (> 0, default: 1.15) - - Multiple extruder options: - --extruder-offset Offset of each extruder, if firmware doesn't handle the displacement - (can be specified multiple times, default: 0x0) - --perimeter-extruder - Extruder to use for perimeters and brim (1+, default: 1) - --infill-extruder Extruder to use for infill (1+, default: 1) - --solid-infill-extruder Extruder to use for solid infill (1+, default: 1) - --support-material-extruder - Extruder to use for support material, raft and skirt (1+, default: 1) - --support-material-interface-extruder - Extruder to use for support material interface (1+, default: 1) - --ooze-prevention Drop temperature and park extruders outside a full skirt for automatic wiping - (default: no) - --ooze-prevention Drop temperature and park extruders outside a full skirt for automatic wiping - (default: no) - --standby-temperature-delta - Temperature difference to be applied when an extruder is not active and - --ooze-prevention is enabled (default: -5) - - -If you want to change a preset file, just do - - slic3r.pl --load config.ini --layer-height 0.25 --save config.ini - -If you want to slice a file overriding an option contained in your preset file: - - slic3r.pl --load config.ini --layer-height 0.25 file.stl +Please refer to the [Command Line Interface](https://github.com/prusa3d/PrusaSlicer/wiki/Command-Line-Interface) wiki page. diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 1e025adac..d29b8611e 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -1,12 +1,12 @@ # -# This CMake project downloads, configures and builds Slic3r PE dependencies on Unix and Windows. +# This CMake project downloads, configures and builds Slic3r++ dependencies on Unix and Windows. # # When using this script, it's recommended to perform an out-of-source build using CMake. # # All the dependencies are installed in a `destdir` directory in the root of the build directory, # in a traditional Unix-style prefix structure. The destdir can be used directly by CMake # when building Slic3r - to do this, set the CMAKE_PREFIX_PATH to ${destdir}/usr/local. -# Warning: On UNIX/Linux, you also need to set -DSLIC3R_STATIC=1 when building Slic3r. +# Warning: On UNIX/Linux, you also need to set -DSlic3r_STATIC=1 when building Slic3r. # # For better clarity of console output, it's recommended to _not_ use a parallelized build # for the top-level command, ie. use `make -j 1` or `ninja -j 1` to force single-threaded top-level @@ -32,6 +32,7 @@ if (NPROC EQUAL 0) endif () set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory") + option(DEP_DEBUG "Build debug variants (only applicable on Windows)" ON) option(DEP_WX_STABLE "Build against wxWidgets stable 3.0 as opposed to default 3.1 (Linux only)" OFF) @@ -73,7 +74,9 @@ else () include("deps-linux.cmake") endif() -add_custom_target(deps ALL +if (MSVC) + + add_custom_target(deps ALL DEPENDS dep_boost dep_tbb @@ -81,8 +84,22 @@ add_custom_target(deps ALL dep_wxwidgets dep_gtest dep_nlopt - dep_libpng -) + dep_zlib # on Windows we still need zlib + ) + +else() + + add_custom_target(deps ALL + DEPENDS + dep_boost + dep_tbb + dep_libcurl + dep_wxwidgets + dep_gtest + dep_nlopt + ) + +endif() # Note: I'm not using any of the LOG_xxx options in ExternalProject_Add() commands # because they seem to generate bogus build files (possibly a bug in ExternalProject). diff --git a/deps/deps-linux.cmake b/deps/deps-linux.cmake index 125553f77..03e8e12d5 100644 --- a/deps/deps-linux.cmake +++ b/deps/deps-linux.cmake @@ -3,7 +3,6 @@ set(DEP_CMAKE_OPTS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") include("deps-unix-common.cmake") - ExternalProject_Add(dep_boost EXCLUDE_FROM_ALL 1 URL "https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz" @@ -25,19 +24,6 @@ ExternalProject_Add(dep_boost INSTALL_COMMAND "" # b2 does that already ) -ExternalProject_Add(dep_libpng - EXCLUDE_FROM_ALL 1 - URL "https://github.com/glennrp/libpng/archive/v1.6.36.tar.gz" - URL_HASH SHA256=5bef5a850a9255365a2dc344671b7e9ef810de491bd479c2506ac3c337e2d84f - CMAKE_GENERATOR "${DEP_MSVC_GEN}" - CMAKE_ARGS - -DPNG_SHARED=OFF - -DPNG_TESTS=OFF - ${DEP_CMAKE_OPTS} - INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" - INSTALL_COMMAND "" -) - ExternalProject_Add(dep_libopenssl EXCLUDE_FROM_ALL 1 URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.tar.gz" @@ -55,7 +41,7 @@ ExternalProject_Add(dep_libopenssl ExternalProject_Add(dep_libcurl EXCLUDE_FROM_ALL 1 - DEPENDS dep_libopenssl + DEPENDS dep_libopenssl URL "https://curl.haxx.se/download/curl-7.58.0.tar.gz" URL_HASH SHA256=cc245bf9a1a42a45df491501d97d5593392a03f7b4f07b952793518d97666115 BUILD_IN_SOURCE 1 @@ -127,7 +113,7 @@ ExternalProject_Add(dep_wxwidgets --with-libxpm=builtin --with-libjpeg=builtin --with-libtiff=builtin - --with-zlib=builtin + --with-zlib --with-expat=builtin --disable-precomp-headers --enable-debug_info diff --git a/deps/deps-macos.cmake b/deps/deps-macos.cmake index 4676b14fc..c7c6819e3 100644 --- a/deps/deps-macos.cmake +++ b/deps/deps-macos.cmake @@ -87,26 +87,14 @@ ExternalProject_Add(dep_libcurl INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" ) -ExternalProject_Add(dep_libpng - EXCLUDE_FROM_ALL 1 - URL "https://github.com/glennrp/libpng/archive/v1.6.36.tar.gz" - URL_HASH SHA256=5bef5a850a9255365a2dc344671b7e9ef810de491bd479c2506ac3c337e2d84f - CMAKE_GENERATOR "${DEP_MSVC_GEN}" - CMAKE_ARGS - -DPNG_SHARED=OFF - -DPNG_TESTS=OFF - ${DEP_CMAKE_OPTS} - INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" - INSTALL_COMMAND "" -) - - ExternalProject_Add(dep_wxwidgets EXCLUDE_FROM_ALL 1 - URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2" - URL_HASH SHA256=4cb8d23d70f9261debf7d6cfeca667fc0a7d2b6565adb8f1c484f9b674f1f27a + GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets" + GIT_TAG v3.1.1-patched +# URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2" +# URL_HASH SHA256=4cb8d23d70f9261debf7d6cfeca667fc0a7d2b6565adb8f1c484f9b674f1f27a BUILD_IN_SOURCE 1 - PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/wxwidgets-pngprefix.h" src/png/pngprefix.h +# PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/wxwidgets-pngprefix.h" src/png/pngprefix.h CONFIGURE_COMMAND env "CXXFLAGS=${DEP_WERRORS_SDK}" "CFLAGS=${DEP_WERRORS_SDK}" ./configure "--prefix=${DESTDIR}/usr/local" --disable-shared @@ -119,7 +107,7 @@ ExternalProject_Add(dep_wxwidgets --with-libxpm=builtin --with-libjpeg=builtin --with-libtiff=builtin - --with-zlib=builtin + --with-zlib --with-expat=builtin --disable-debug --disable-debug_flag diff --git a/deps/deps-unix-common.cmake b/deps/deps-unix-common.cmake index 6c0a1b182..3cf843f73 100644 --- a/deps/deps-unix-common.cmake +++ b/deps/deps-unix-common.cmake @@ -8,30 +8,27 @@ ExternalProject_Add(dep_tbb CMAKE_ARGS -DTBB_BUILD_SHARED=OFF -DTBB_BUILD_TESTS=OFF + -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local ${DEP_CMAKE_OPTS} - INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" ) ExternalProject_Add(dep_gtest EXCLUDE_FROM_ALL 1 URL "https://github.com/google/googletest/archive/release-1.8.1.tar.gz" URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c - CMAKE_ARGS -DBUILD_GMOCK=OFF ${DEP_CMAKE_OPTS} - INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" + CMAKE_ARGS -DBUILD_GMOCK=OFF ${DEP_CMAKE_OPTS} -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local ) ExternalProject_Add(dep_nlopt EXCLUDE_FROM_ALL 1 URL "https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz" URL_HASH SHA256=c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae - CMAKE_GENERATOR "${DEP_MSVC_GEN}" CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DNLOPT_PYTHON=OFF -DNLOPT_OCTAVE=OFF -DNLOPT_MATLAB=OFF -DNLOPT_GUILE=OFF + -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local ${DEP_CMAKE_OPTS} - INSTALL_COMMAND make install "DESTDIR=${DESTDIR}" - INSTALL_COMMAND "" ) diff --git a/deps/deps-windows.cmake b/deps/deps-windows.cmake index 7276277e6..b3b31e5f3 100644 --- a/deps/deps-windows.cmake +++ b/deps/deps-windows.cmake @@ -62,7 +62,7 @@ ExternalProject_Add(dep_tbb -DTBB_BUILD_SHARED=OFF -DTBB_BUILD_TESTS=OFF "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local" - BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj + BUILD_COMMAND msbuild /m /P:Configuration=Release INSTALL.vcxproj INSTALL_COMMAND "" ) if (${DEP_DEBUG}) @@ -70,7 +70,7 @@ if (${DEP_DEBUG}) ExternalProject_Add_Step(dep_tbb build_debug DEPENDEES build DEPENDERS install - COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj + COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj WORKING_DIRECTORY "${BINARY_DIR}" ) endif () @@ -86,7 +86,7 @@ ExternalProject_Add(dep_gtest -Dgtest_force_shared_crt=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local" - BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj + BUILD_COMMAND msbuild /m /P:Configuration=Release INSTALL.vcxproj INSTALL_COMMAND "" ) if (${DEP_DEBUG}) @@ -94,7 +94,7 @@ if (${DEP_DEBUG}) ExternalProject_Add_Step(dep_gtest build_debug DEPENDEES build DEPENDERS install - COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj + COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj WORKING_DIRECTORY "${BINARY_DIR}" ) endif () @@ -114,7 +114,7 @@ ExternalProject_Add(dep_nlopt -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_DEBUG_POSTFIX=d "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local" - BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj + BUILD_COMMAND msbuild /m /P:Configuration=Release INSTALL.vcxproj INSTALL_COMMAND "" ) if (${DEP_DEBUG}) @@ -122,7 +122,7 @@ if (${DEP_DEBUG}) ExternalProject_Add_Step(dep_nlopt build_debug DEPENDEES build DEPENDERS install - COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj + COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj WORKING_DIRECTORY "${BINARY_DIR}" ) endif () @@ -138,7 +138,7 @@ ExternalProject_Add(dep_zlib "-DINSTALL_BIN_DIR=${CMAKE_CURRENT_BINARY_DIR}\\fallout" # I found no better way of preventing zlib from creating & installing DLLs :-/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local" - BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj + BUILD_COMMAND msbuild /m /P:Configuration=Release INSTALL.vcxproj INSTALL_COMMAND "" ) if (${DEP_DEBUG}) @@ -146,7 +146,7 @@ if (${DEP_DEBUG}) ExternalProject_Add_Step(dep_zlib build_debug DEPENDEES build DEPENDERS install - COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj + COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj WORKING_DIRECTORY "${BINARY_DIR}" ) endif () @@ -165,46 +165,6 @@ if (${DEP_DEBUG}) endif () -ExternalProject_Add(dep_libpng - DEPENDS dep_zlib - EXCLUDE_FROM_ALL 1 - URL "https://github.com/glennrp/libpng/archive/v1.6.36.tar.gz" - URL_HASH SHA256=5bef5a850a9255365a2dc344671b7e9ef810de491bd479c2506ac3c337e2d84f - CMAKE_GENERATOR "${DEP_MSVC_GEN}" - CMAKE_ARGS - -DPNG_SHARED=OFF - -DPNG_TESTS=OFF - -DSKIP_INSTALL_FILES=ON # Prevent installation of man pages et al. - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local" - BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj - INSTALL_COMMAND "" -) -if (${DEP_DEBUG}) - ExternalProject_Get_Property(dep_libpng BINARY_DIR) - ExternalProject_Add_Step(dep_libpng build_debug - DEPENDEES build - DEPENDERS install - COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj - WORKING_DIRECTORY "${BINARY_DIR}" - ) -endif () -# The following steps are unfortunately needed to remove the _static suffix on libraries -# (And also overwrite the dynamic .lib) -ExternalProject_Add_Step(dep_libpng fix_static - DEPENDEES install - COMMAND "${CMAKE_COMMAND}" -E rename libpng16_static.lib libpng16.lib - WORKING_DIRECTORY "${DESTDIR}\\usr\\local\\lib\\" -) -if (${DEP_DEBUG}) - ExternalProject_Add_Step(dep_libpng fix_static_debug - DEPENDEES install - COMMAND "${CMAKE_COMMAND}" -E rename libpng16_staticd.lib libpng16d.lib - WORKING_DIRECTORY "${DESTDIR}\\usr\\local\\lib\\" - ) -endif () - - if (${DEPS_BITS} EQUAL 32) set(DEP_LIBCURL_TARGET "x86") else () @@ -250,10 +210,12 @@ endif () ExternalProject_Add(dep_wxwidgets EXCLUDE_FROM_ALL 1 - URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.1/wxWidgets-3.1.1.tar.bz2" - URL_HASH SHA256=c925dfe17e8f8b09eb7ea9bfdcfcc13696a3e14e92750effd839f5e10726159e + GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets" + GIT_TAG v3.1.1-patched +# URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.1/wxWidgets-3.1.1.tar.bz2" +# URL_HASH SHA256=c925dfe17e8f8b09eb7ea9bfdcfcc13696a3e14e92750effd839f5e10726159e BUILD_IN_SOURCE 1 - PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}\\wxwidgets-pngprefix.h" src\\png\\pngprefix.h +# PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}\\wxwidgets-pngprefix.h" src\\png\\pngprefix.h CONFIGURE_COMMAND "" BUILD_COMMAND cd build\\msw && nmake /f makefile.vc BUILD=release SHARED=0 UNICODE=1 USE_GUI=1 "${DEP_WXWIDGETS_TARGET}" INSTALL_COMMAND "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include" diff --git a/deps/wxwidgets-pngprefix.h b/deps/wxwidgets-pngprefix.h index de62e310b..67c70af80 100644 --- a/deps/wxwidgets-pngprefix.h +++ b/deps/wxwidgets-pngprefix.h @@ -1,4 +1,4 @@ -// Patched in Slic3r: These two were missing: +// Patched in PrusaSlicer: These two were missing: #define png_write_eXIf wx_png_write_eXIf #define png_handle_eXIf wx_png_handle_eXIf diff --git a/doc/How to build - Linux et al.md b/doc/How to build - Linux et al.md index 14ec23b2d..67556a6f7 100644 --- a/doc/How to build - Linux et al.md +++ b/doc/How to build - Linux et al.md @@ -1,13 +1,13 @@ -# Building Slic3r PE on UNIX/Linux +# Building Slic3r++ on UNIX/Linux -Slic3r PE uses the CMake build system and requires several dependencies. +Slic3r++ uses the CMake build system and requires several dependencies. The dependencies can be listed in `deps/deps-linux.cmake`, although they don't necessarily need to be as recent as the versions listed - generally versions available on conservative Linux distros such as Debian stable or CentOS should suffice. Perl is not required any more. -In a typical situation, one would open a command line, go to the Slic3r sources, create a directory called `build` or similar, +In a typical situation, one would open a command line, go to the Slic3r++ sources, create a directory called `build` or similar, `cd` into it and call: cmake .. @@ -19,13 +19,13 @@ Additional CMake flags may be applicable as explained below. ### Dependency resolution -By default Slic3r looks for dependencies the default way CMake looks for them, i.e. in default system locations. -On Linux this will typically make Slic3r depend on dynamically loaded libraries from the system, however, Slic3r can be told +By default Slic3r++ looks for dependencies the default way CMake looks for them, i.e. in default system locations. +On Linux this will typically make Slic3r++ depend on dynamically loaded libraries from the system, however, Slic3r++ can be told to specifically look for static libraries with the `SLIC3R_STATIC` flag passed to cmake: cmake .. -DSLIC3R_STATIC=1 -Additionally, Slic3r can be built in a static manner mostly independent of the system libraries with a dependencies bundle +Additionally, Slic3r++ can be built in a static manner mostly independent of the system libraries with a dependencies bundle created using CMake script in the `deps` directory (these are not interconnected with the rest of the CMake scripts). Note: We say _mostly independent_ because it's still expected the system will provide some transitive dependencies, such as GTK for wxWidgets. @@ -37,7 +37,7 @@ To do this, go to the `deps` directory, create a `build` subdirectory (or the li where the target destdir is a directory of your choosing where the dependencies will be installed. You can also omit the `DESTDIR` option to use the default, in that case the `destdir` will be created inside the `build` directory where `cmake` is run. -To pass the destdir path to the top-level Slic3r CMake script, use the `CMAKE_PREFIX_PATH` option along with turning on `SLIC3R_STATIC`: +To pass the destdir path to the top-level Slic3r++ CMake script, use the `CMAKE_PREFIX_PATH` option along with turning on `SLIC3R_STATIC`: cmake .. -DSLIC3R_STATIC=1 -DCMAKE_PREFIX_PATH=/usr/local @@ -48,24 +48,24 @@ This is because wxWidgets hardcode the installation path. ### wxWidgets version -By default, Slic3r PE looks for wxWidgets 3.1, this is because the 3.1 version has +By default, Slic3r++ looks for wxWidgets 3.1, this is because the 3.1 version has a number of bugfixes and improvements not found in 3.0. However, it can also be built with wxWidgets 3.0. This is done by passing this option to CMake: -DSLIC3R_WX_STABLE=1 -Note that Slic3r PE is tested with wxWidgets 3.0 somewhat sporadically and so there may be bugs in bleeding edge releases. +Note that Slic3r++ is tested with wxWidgets 3.0 somewhat sporadically and so there may be bugs in bleeding edge releases. ### Build variant -By default Slic3r builds the release variant. +By default Slic3r++ builds the release variant. To create a debug build, use the following CMake flag: -DCMAKE_BUILD_TYPE=Debug ### Enabling address sanitizer -If you're using GCC/Clang compiler, it is possible to build Slic3r with the built-in address sanitizer enabled to help detect memory-corruption issues. +If you're using GCC/Clang compiler, it is possible to build Slic3r++ with the built-in address sanitizer enabled to help detect memory-corruption issues. To enable it, simply use the following CMake flag: -DSLIC3R_ASAN=1 @@ -74,12 +74,12 @@ This requires GCC>4.8 or Clang>3.1. ### Installation -At runtime, Slic3r needs a way to access its resource files. By default, it looks for a `resources` directory relative to its binary. +At runtime, Slic3r++ needs a way to access its resource files. By default, it looks for a `resources` directory relative to its binary. -If you instead want Slic3r installed in a structure according to the File System Hierarchy Standard, use the `SLIC3R_FHS` flag +If you instead want Slic3r++ installed in a structure according to the File System Hierarchy Standard, use the `SLIC3R_FHS` flag cmake .. -DSLIC3R_FHS=1 -This will make Slic3r look for a fixed-location `share/slic3r-prusa3d` directory instead (note that the location becomes hardcoded). +This will make Slic3r++ look for a fixed-location `share/slic3r-prusa3d` directory instead (note that the location becomes hardcoded). -You can then use the `make install` target to install Slic3r. +You can then use the `make install` target to install Slic3r++. diff --git a/doc/How to build - Mac OS.md b/doc/How to build - Mac OS.md index 670e9fd87..e03fa475d 100644 --- a/doc/How to build - Mac OS.md +++ b/doc/How to build - Mac OS.md @@ -1,12 +1,12 @@ -# Building Slic3r PE on Mac OS +# Building Slic3r++ on Mac OS -To build Slic3r PE on Mac OS, you will need to install XCode, [CMake](https://cmake.org/) (available on Brew) and possibly git. +To build Slic3r++ on Mac OS, you will need to install XCode, [CMake](https://cmake.org/) (available on Brew) and possibly git. ### Dependencies -Slic3r comes with a set of CMake scripts to build its dependencies, it lives in the `deps` directory. -Open a terminal window and navigate to Slic3r sources directory and then to `deps`. +Slic3r++ comes with a set of CMake scripts to build its dependencies, it lives in the `deps` directory. +Open a terminal window and navigate to Slic3r++ sources directory and then to `deps`. Use the following commands to build the dependencies: mkdir build @@ -21,10 +21,10 @@ You can also customize the bundle output path using the `-DDESTDIR=` (This is because wxWidgets hardcodes the installation path.) -### Building Slic3r +### Building Slic3r++ -If dependencies are built without errors, you can proceed to build Slic3r itself. -Go back to top level Slic3r sources directory and use these commands: +If dependencies are built without errors, you can proceed to build Slic3r++ itself. +Go back to top level Slic3r++ sources directory and use these commands: mkdir build cd build @@ -33,7 +33,7 @@ Go back to top level Slic3r sources directory and use these commands: The `CMAKE_PREFIX_PATH` is the path to the dependencies bundle but with `/usr/local` appended - if you set a custom path using the `DESTDIR` option, you will need to change this accordingly. **Warning:** the `CMAKE_PREFIX_PATH` needs to be an absolute path. -The CMake command above prepares Slic3r for building from the command line. +The CMake command above prepares Slic3r++ for building from the command line. To start the build, use make -jN @@ -44,12 +44,12 @@ Alternatively, if you would like to use XCode GUI, modify the `cmake` command to cmake .. -GXcode -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -and then open the `Slic3r.xcodeproj` file. +and then open the `Slic3r++.xcodeproj` file. This should open up XCode where you can perform build using the GUI or perform other tasks. ### Note on Mac OS X SDKs -By default Slic3r builds against whichever SDK is the default on the current system. +By default Slic3r++ builds against whichever SDK is the default on the current system. This can be customized. The `CMAKE_OSX_SYSROOT` option sets the path to the SDK directory location and the `CMAKE_OSX_DEPLOYMENT_TARGET` option sets the target OS X system version (eg. `10.14` or similar). @@ -58,6 +58,13 @@ In case you set both, the two settings need to agree with each other. (Building is currently unsupported because some of the dependencies don't support this, most notably wxWidgets.) Please note that the `CMAKE_OSX_DEPLOYMENT_TARGET` and `CMAKE_OSX_SYSROOT` options need to be set the same -on both the dependencies bundle as well as Slic3r PE itself. +on both the dependencies bundle as well as Slic3r++ itself. -Official Mac Slic3r builds are currently built against SDK 10.9 to ensure compatibility with older Macs. +Official Mac Slic3r++ builds are currently built against SDK 10.9 to ensure compatibility with older Macs. + +_Warning:_ XCode may be set such that it rejects SDKs bellow some version (silently, more or less). +This is set in the property list file + + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist + +To remove the limitation, simply delete the key `MinimumSDKVersion` from that file. diff --git a/doc/How to build - Windows.md b/doc/How to build - Windows.md index e09c2a1d2..5042b16a3 100644 --- a/doc/How to build - Windows.md +++ b/doc/How to build - Windows.md @@ -1,7 +1,7 @@ -# Building Slic3r PE on Microsoft Windows +# Building Slic3r++ on Microsoft Windows -The currently supported way of building Slic3r PE on Windows is with CMake and MS Visual Studio 2013. +The currently supported way of building Slic3r++ on Windows is with CMake and MS Visual Studio 2013. You can use the free [Visual Studio 2013 Community Edition](https://www.visualstudio.com/vs/older-downloads/). CMake installer can be downloaded from [the official website](https://cmake.org/download/). @@ -11,8 +11,8 @@ _Note:_ Thanks to [**@supermerill**](https://github.com/supermerill) for testing ### Dependencies -On Windows Slic3r is built against statically built libraries. -We provide a prebuilt package of all the needed dependencies. +On Windows Slic3r++ is built against statically built libraries. +We provide a prebuilt package of all the needed dependencies. This package only works on Visual Studio 2013, so if you are using a newer version of Visual Studio, you need to compile the dependencies yourself as per [below](#building-the-dependencies-package-yourself). The package comes in a several variants: - [64 bit, Release mode only](https://bintray.com/vojtechkral/Slic3r-PE/download_file?file_path=destdir-64.7z) (41 MB, 578 MB unpacked) @@ -26,14 +26,14 @@ If you're unsure where to unpack the package, unpack it into `C:\local\` (but it Alternatively you can also compile the dependencies yourself, see below. -### Building Slic3r PE with Visual Studio +### Building Slic3r++ with Visual Studio -First obtain the Slic3 PE sources via either git or by extracting the source archive. +First obtain the Slic3r++ sources via either git or by extracting the source archive. Then you will need to note down the so-called 'prefix path' to the dependencies, this is the location of the dependencies packages + `\usr\local` appended. For example on 64 bits this would be `C:\local\destdir-64\usr\local`. The prefix path will need to be passed to CMake. -When ready, open the relevant Visual Studio command line and `cd` into the directory with Slic3r sources. +When ready, open the relevant Visual Studio command line and `cd` into the directory with Slic3r++ sources. Use these commands to prepare Visual Studio solution file: mkdir build @@ -44,16 +44,16 @@ Note that if you're building a 32-bit variant, you will need to change the `"Vis Conversely, if you're using Visual Studio version other than 2013, the version number will need to be changed accordingly. -If `cmake` has finished without errors, go to the build directory and open the `Slic3r.sln` solution file in Visual Studio. -Before building, make sure you're building the right project (use one of those starting with `slic3r_app_...`) and that you're building +If `cmake` has finished without errors, go to the build directory and open the `Slic3r++.sln` solution file in Visual Studio. +Before building, make sure you're building the right project (use one of those starting with `Slic3r++_app_...`) and that you're building with the right configuration, i.e. _Release_ vs. _Debug_. When unsure, choose _Release_. Note that you won't be able to build a _Debug_ variant against a _Release_-only dependencies package. #### Installing using the `INSTALL` project -Slic3r PE can be run from the Visual Studio or from Visual Studio's build directory (`src\Release` or `src\Debug`), +Slic3r++ can be run from the Visual Studio or from Visual Studio's build directory (`src\Release` or `src\Debug`), but for longer-term usage you might want to install somewhere using the `INSTALL` project. -By default, this installs into `C:\Program Files\Slic3r`. +By default, this installs into `C:\Program Files\Slic3r++`. To customize the install path, use the `-DCMAKE_INSTALL_PREFIX=` when invoking `cmake`. ### Building from the command line @@ -66,7 +66,7 @@ There are several options for building from the command line: To build with msbuild, use the same CMake command as in previous paragraph and then build using - msbuild /P:Configuration=Release ALL_BUILD.vcxproj + msbuild /m /P:Configuration=Release ALL_BUILD.vcxproj To build with Ninja or nmake, replace the `-G` option in the CMake call with `-G Ninja` or `-G "NMake Makefiles"` , respectively. Then use either `ninja` or `nmake` to start the build. @@ -75,32 +75,38 @@ To install, use `msbuild /P:Configuration=Release INSTALL.vcxproj` , `ninja inst ### Building the dependencies package yourself -The dependencies package is built using CMake scripts inside the `deps` subdirectory of Slic3r PE sources. +The dependencies package is built using CMake scripts inside the `deps` subdirectory of Slic3r++ sources. (This is intentionally not interconnected with the CMake scripts in the rest of the sources.) -Open the preferred Visual Studio command line (64 or 32 bit variant) and `cd` into the directory with Slic3r sources. +Open the preferred Visual Studio command line (64 or 32 bit variant) and `cd` into the directory with Slic3r++ sources. Then `cd` into the `deps` directory and use these commands to build: mkdir build cd build cmake .. -G "Visual Studio 12 Win64" -DDESTDIR="C:\local\destdir-custom" - msbuild ALL_BUILD.vcxproj + msbuild /m ALL_BUILD.vcxproj You can also use the Visual Studio GUI or other generators as mentioned above. The `DESTDIR` option is the location where the bundle will be installed. -This may be customized. If you leave it empty, the `DESTDIR` will be places inside the same `build` directory. For using your newly compile deps, use -DCMAKE_INSTALL_PREFIX= in your cmake command for slic3r. +This may be customized. If you leave it empty, the `DESTDIR` will be placed inside the same `build` directory. Warning: If the `build` directory is nested too deep inside other folders, various file paths during the build -become too long and the build might fail due to file writing errors. For this reason, it is recommended to +become too long and the build might fail due to file writing errors (\*). For this reason, it is recommended to place the `build` directory relatively close to the drive root. Note that the build variant that you may choose using Visual Studio (i.e. _Release_ or _Debug_ etc.) when building the dependency package is **not relevant**. The dependency build will by default build _both_ the _Release_ and _Debug_ variants regardless of what you choose in Visual Studio. -You can disable building of the debug variant by passing the `-DDEP_DEBUG=OFF` option to CMake, this will only produce a _Release_ build. +You can disable building of the debug variant by passing the + + -DDEP_DEBUG=OFF + +option to CMake, this will only produce a _Release_ build. Refer to the CMake scripts inside the `deps` directory to see which dependencies are built in what versions and how this is done. +\*) Specifically, the problem arises when building boost. Boost build tool appends all build options into paths of +intermediate files, which are not handled correctly by either `b2.exe` or possibly `ninja` (?). ### building tests You must use visual studio 2017, and build all deps & all projects with it (not the same compiler as vs 2013). Also, you have to add the "CRT SDK" to your windows 2017 installation (can be done via the VS intaller). diff --git a/doc/Localization_guide.md b/doc/Localization_guide.md index 656f225ef..f013118ae 100644 --- a/doc/Localization_guide.md +++ b/doc/Localization_guide.md @@ -1,6 +1,8 @@ # Localization and translation guide -The purpose of this guide is to describe how to contribute to the Slic3rPE translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations. +note: this guide was done for PrusaSlicer. You can use PrusaSlicer .pom file for Slic3r++ but some fields will be missed. + +The purpose of this guide is to describe how to contribute to the PrusaSlicer translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations. Those can be downloaded here: - https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog. @@ -13,40 +15,40 @@ Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext ### Scenario 1. How do I add a translation or fix an existing translation 1. Get PO-file from corresponding folder here: -https://github.com/prusa3d/Slic3r/tree/master/resources/localization +https://github.com/prusa3d/PrusaSlicer/tree/master/resources/localization 2. Open this file in PoEdit as "Edit a translation" 3. Apply your corrections to the translation -4. Push changed Slic3rPE.po and Slic3rPE.mo (will create automatically after saving of Slic3r.po in PoEdit) back to to the enter folder. +4. Push changed PrusaSlicer.po and PrusaSlicer.mo (will create automatically after saving of PrusaSlicer.po in PoEdit) back to to the enter folder. ### Scenario 2. How do I add a new language support -1. Get file Slic3rPE.pot here : -https://github.com/prusa3d/Slic3r/tree/master/resources/localization +1. Get file PrusaSlicer.pot here : +https://github.com/prusa3d/PrusaSlicer/tree/master/resources/localization 2. Open it in PoEdit for "Create new translation" 3. Select Translation Language (for example French). 4. As a result you will have fr.po - the file containing translation to French. Notice. When the translation is complete you need to: - - Rename the file to Slic3rPE.po - - Click "Save file" button. Slic3rPE.mo will be created immediately - - Both Slic3rPE.po and Slic3rPE.mo have to be saved here: -https://github.com/prusa3d/Slic3r/tree/master/resources/localization/fr + - Rename the file to PrusaSlicer.po + - Click "Save file" button. PrusaSlicer.mo will be created immediately + - Both PrusaSlicer.po and PrusaSlicer.mo have to be saved here: +https://github.com/prusa3d/PrusaSlicer/tree/master/resources/localization/fr ( name of folder "fr" means "French" - the translation language). -### Scenario 3. How do I add a new text resource when implementing a feature to Slic3rPE -Each string resource in Slic3rPE available for translation needs to be explicitly marked using L() macro like this: +### Scenario 3. How do I add a new text resource when implementing a feature to PrusaSlicer +Each string resource in PrusaSlicer available for translation needs to be explicitly marked using L() macro like this: ```C++ auto msg = L("This message to be localized") ``` -To get translated text use one of needed macro/function (`_(s)`, `_CHB(s)` or `L_str(s)` ). +To get translated text use one of needed macro/function (`_(s)` or `_CHB(s)` ). If you add new file resource, add it to the list of files containing macro `L()` -### Scenario 4. How do I use GNUgettext to localize my own application taking Slic3rPE as an example +### Scenario 4. How do I use GNUgettext to localize my own application taking PrusaSlicer as an example 1. For convenience create a list of files with this macro `L(s)`. We have -https://github.com/prusa3d/Slic3r/tree/master/resources/localization/list.txt. +https://github.com/prusa3d/PrusaSlicer/tree/master/resources/localization/list.txt. 2. Create template file(*.POT) with GNUgettext command: ``` - xgettext --keyword=L --from-code=UTF-8 --debug -o Slic3rPE.pot -f list.txt + xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o PrusaSlicer.pot -f list.txt ``` Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding diff --git a/resources/icons/Slic3r.icns b/resources/icons/Slic3r.icns deleted file mode 100644 index c1eba897e..000000000 Binary files a/resources/icons/Slic3r.icns and /dev/null differ diff --git a/resources/icons/Slic3r_192px_grayscale.png b/resources/icons/Slic3r_192px_grayscale.png deleted file mode 100644 index 910f94187..000000000 Binary files a/resources/icons/Slic3r_192px_grayscale.png and /dev/null differ diff --git a/resources/icons/action_undo.png b/resources/icons/action_undo.png deleted file mode 100644 index 06bb98b22..000000000 Binary files a/resources/icons/action_undo.png and /dev/null differ diff --git a/resources/icons/action_undo_grey.png b/resources/icons/action_undo_grey.png deleted file mode 100644 index eaa1593e3..000000000 Binary files a/resources/icons/action_undo_grey.png and /dev/null differ diff --git a/resources/icons/add.png b/resources/icons/add.png deleted file mode 100644 index dde16d5e9..000000000 Binary files a/resources/icons/add.png and /dev/null differ diff --git a/resources/icons/add_copies.svg b/resources/icons/add_copies.svg new file mode 100644 index 000000000..45b1d27cf --- /dev/null +++ b/resources/icons/add_copies.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/add_modifier.svg b/resources/icons/add_modifier.svg new file mode 100644 index 000000000..c3cfaabbb --- /dev/null +++ b/resources/icons/add_modifier.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/resources/icons/add_object.png b/resources/icons/add_object.png deleted file mode 100644 index ffc958edc..000000000 Binary files a/resources/icons/add_object.png and /dev/null differ diff --git a/resources/icons/add_part.svg b/resources/icons/add_part.svg new file mode 100644 index 000000000..5f0afdcc3 --- /dev/null +++ b/resources/icons/add_part.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/resources/icons/advanced_plus.svg b/resources/icons/advanced_plus.svg new file mode 100644 index 000000000..48c4e08db --- /dev/null +++ b/resources/icons/advanced_plus.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/resources/icons/application_view_tile.png b/resources/icons/application_view_tile.png deleted file mode 100644 index 3bc0bd32f..000000000 Binary files a/resources/icons/application_view_tile.png and /dev/null differ diff --git a/resources/icons/arrow_down.png b/resources/icons/arrow_down.png deleted file mode 100644 index 2c4e27937..000000000 Binary files a/resources/icons/arrow_down.png and /dev/null differ diff --git a/resources/icons/arrow_left.png b/resources/icons/arrow_left.png deleted file mode 100644 index 5dc696781..000000000 Binary files a/resources/icons/arrow_left.png and /dev/null differ diff --git a/resources/icons/arrow_out.png b/resources/icons/arrow_out.png deleted file mode 100644 index 557d7b60b..000000000 Binary files a/resources/icons/arrow_out.png and /dev/null differ diff --git a/resources/icons/arrow_refresh.png b/resources/icons/arrow_refresh.png deleted file mode 100644 index 0de26566d..000000000 Binary files a/resources/icons/arrow_refresh.png and /dev/null differ diff --git a/resources/icons/arrow_right.png b/resources/icons/arrow_right.png deleted file mode 100644 index b1a181923..000000000 Binary files a/resources/icons/arrow_right.png and /dev/null differ diff --git a/resources/icons/arrow_rotate_anticlockwise.png b/resources/icons/arrow_rotate_anticlockwise.png deleted file mode 100644 index abc7535df..000000000 Binary files a/resources/icons/arrow_rotate_anticlockwise.png and /dev/null differ diff --git a/resources/icons/arrow_rotate_clockwise.png b/resources/icons/arrow_rotate_clockwise.png deleted file mode 100644 index 8624dfd11..000000000 Binary files a/resources/icons/arrow_rotate_clockwise.png and /dev/null differ diff --git a/resources/icons/arrow_undo.png b/resources/icons/arrow_undo.png deleted file mode 100644 index 6972c5e59..000000000 Binary files a/resources/icons/arrow_undo.png and /dev/null differ diff --git a/resources/icons/arrow_up.png b/resources/icons/arrow_up.png deleted file mode 100644 index 3319fcc72..000000000 Binary files a/resources/icons/arrow_up.png and /dev/null differ diff --git a/resources/icons/box.png b/resources/icons/box.png deleted file mode 100644 index 424648192..000000000 Binary files a/resources/icons/box.png and /dev/null differ diff --git a/resources/icons/brick.png b/resources/icons/brick.png deleted file mode 100644 index 660d48d4f..000000000 Binary files a/resources/icons/brick.png and /dev/null differ diff --git a/resources/icons/brick_add.png b/resources/icons/brick_add.png deleted file mode 100644 index 978b9fa35..000000000 Binary files a/resources/icons/brick_add.png and /dev/null differ diff --git a/resources/icons/brick_delete.png b/resources/icons/brick_delete.png deleted file mode 100644 index 0e8ecdbdc..000000000 Binary files a/resources/icons/brick_delete.png and /dev/null differ diff --git a/resources/icons/brick_go.png b/resources/icons/brick_go.png deleted file mode 100644 index 409c8f4cb..000000000 Binary files a/resources/icons/brick_go.png and /dev/null differ diff --git a/resources/icons/bricks.png b/resources/icons/bricks.png deleted file mode 100644 index 8eb0091ea..000000000 Binary files a/resources/icons/bricks.png and /dev/null differ diff --git a/resources/icons/browse.svg b/resources/icons/browse.svg new file mode 100644 index 000000000..c4297c41d --- /dev/null +++ b/resources/icons/browse.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/resources/icons/building.png b/resources/icons/building.png deleted file mode 100644 index 37f638f27..000000000 Binary files a/resources/icons/building.png and /dev/null differ diff --git a/resources/icons/bullet_arrow_down.png b/resources/icons/bullet_arrow_down.png deleted file mode 100644 index 9b23c06d7..000000000 Binary files a/resources/icons/bullet_arrow_down.png and /dev/null differ diff --git a/resources/icons/bullet_arrow_up.png b/resources/icons/bullet_arrow_up.png deleted file mode 100644 index 24df0f421..000000000 Binary files a/resources/icons/bullet_arrow_up.png and /dev/null differ diff --git a/resources/icons/bullet_green.png b/resources/icons/bullet_green.png deleted file mode 100644 index 058ad261f..000000000 Binary files a/resources/icons/bullet_green.png and /dev/null differ diff --git a/resources/icons/bullet_red.png b/resources/icons/bullet_red.png deleted file mode 100644 index 0cd803115..000000000 Binary files a/resources/icons/bullet_red.png and /dev/null differ diff --git a/resources/icons/cog.png b/resources/icons/cog.png deleted file mode 100644 index 3c858b7b2..000000000 Binary files a/resources/icons/cog.png and /dev/null differ diff --git a/resources/icons/cog.svg b/resources/icons/cog.svg new file mode 100644 index 000000000..07adb6610 --- /dev/null +++ b/resources/icons/cog.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/resources/icons/control_pause.png b/resources/icons/control_pause.png deleted file mode 100644 index 2d9ce9c4e..000000000 Binary files a/resources/icons/control_pause.png and /dev/null differ diff --git a/resources/icons/control_pause_blue.png b/resources/icons/control_pause_blue.png deleted file mode 100644 index ec61099b0..000000000 Binary files a/resources/icons/control_pause_blue.png and /dev/null differ diff --git a/resources/icons/control_play.png b/resources/icons/control_play.png deleted file mode 100644 index 0846555d0..000000000 Binary files a/resources/icons/control_play.png and /dev/null differ diff --git a/resources/icons/control_play_blue.png b/resources/icons/control_play_blue.png deleted file mode 100644 index f8c8ec683..000000000 Binary files a/resources/icons/control_play_blue.png and /dev/null differ diff --git a/resources/icons/control_stop.png b/resources/icons/control_stop.png deleted file mode 100644 index 893bb60e5..000000000 Binary files a/resources/icons/control_stop.png and /dev/null differ diff --git a/resources/icons/control_stop_blue.png b/resources/icons/control_stop_blue.png deleted file mode 100644 index e6f75d232..000000000 Binary files a/resources/icons/control_stop_blue.png and /dev/null differ diff --git a/resources/icons/cooling.svg b/resources/icons/cooling.svg new file mode 100644 index 000000000..b5d80e434 --- /dev/null +++ b/resources/icons/cooling.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/copy.svg b/resources/icons/copy.svg new file mode 100644 index 000000000..9b8430dd7 --- /dev/null +++ b/resources/icons/copy.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/copy_menu.svg b/resources/icons/copy_menu.svg new file mode 100644 index 000000000..0d1af6a0a --- /dev/null +++ b/resources/icons/copy_menu.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/cross.png b/resources/icons/cross.png deleted file mode 100644 index 54f790b47..000000000 Binary files a/resources/icons/cross.png and /dev/null differ diff --git a/resources/icons/cross.svg b/resources/icons/cross.svg new file mode 100644 index 000000000..96835d259 --- /dev/null +++ b/resources/icons/cross.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/delete.png b/resources/icons/delete.png deleted file mode 100644 index 143c70944..000000000 Binary files a/resources/icons/delete.png and /dev/null differ diff --git a/resources/icons/delete.svg b/resources/icons/delete.svg new file mode 100644 index 000000000..f0976a76b --- /dev/null +++ b/resources/icons/delete.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/delete_all_menu.svg b/resources/icons/delete_all_menu.svg new file mode 100644 index 000000000..5ee6d6ea6 --- /dev/null +++ b/resources/icons/delete_all_menu.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/disclosure_triangle_close.png b/resources/icons/disclosure_triangle_close.png deleted file mode 100644 index 0660422c7..000000000 Binary files a/resources/icons/disclosure_triangle_close.png and /dev/null differ diff --git a/resources/icons/disclosure_triangle_open.png b/resources/icons/disclosure_triangle_open.png deleted file mode 100644 index 81112f2a2..000000000 Binary files a/resources/icons/disclosure_triangle_open.png and /dev/null differ diff --git a/resources/icons/disk.png b/resources/icons/disk.png deleted file mode 100644 index 70dd3d3f1..000000000 Binary files a/resources/icons/disk.png and /dev/null differ diff --git a/resources/icons/dot.svg b/resources/icons/dot.svg new file mode 100644 index 000000000..236db3678 --- /dev/null +++ b/resources/icons/dot.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/resources/icons/dot_white.svg b/resources/icons/dot_white.svg new file mode 100644 index 000000000..90fbaf7fb --- /dev/null +++ b/resources/icons/dot_white.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/resources/icons/editor_menu.svg b/resources/icons/editor_menu.svg new file mode 100644 index 000000000..223efda0f --- /dev/null +++ b/resources/icons/editor_menu.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/empty_icon.png b/resources/icons/empty_icon.png deleted file mode 100644 index 2dd8f0afe..000000000 Binary files a/resources/icons/empty_icon.png and /dev/null differ diff --git a/resources/icons/erase.png b/resources/icons/erase.png deleted file mode 100644 index 4c4cfd755..000000000 Binary files a/resources/icons/erase.png and /dev/null differ diff --git a/resources/icons/error.png b/resources/icons/error.png deleted file mode 100644 index 428360d27..000000000 Binary files a/resources/icons/error.png and /dev/null differ diff --git a/resources/icons/exclamation.svg b/resources/icons/exclamation.svg new file mode 100644 index 000000000..456802652 --- /dev/null +++ b/resources/icons/exclamation.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/exclamation_mark_.png b/resources/icons/exclamation_mark_.png deleted file mode 100644 index 5fe7c1355..000000000 Binary files a/resources/icons/exclamation_mark_.png and /dev/null differ diff --git a/resources/icons/export_config.svg b/resources/icons/export_config.svg new file mode 100644 index 000000000..e70035dae --- /dev/null +++ b/resources/icons/export_config.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/resources/icons/export_config_bundle.svg b/resources/icons/export_config_bundle.svg new file mode 100644 index 000000000..1e587689d --- /dev/null +++ b/resources/icons/export_config_bundle.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/export_gcode.svg b/resources/icons/export_gcode.svg new file mode 100644 index 000000000..317e01f7d --- /dev/null +++ b/resources/icons/export_gcode.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/resources/icons/export_plater.svg b/resources/icons/export_plater.svg new file mode 100644 index 000000000..641d952ad --- /dev/null +++ b/resources/icons/export_plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/flag-green-icon.png b/resources/icons/flag-green-icon.png deleted file mode 100644 index e4bc611f8..000000000 Binary files a/resources/icons/flag-green-icon.png and /dev/null differ diff --git a/resources/icons/flag-red-icon.png b/resources/icons/flag-red-icon.png deleted file mode 100644 index e8a602da7..000000000 Binary files a/resources/icons/flag-red-icon.png and /dev/null differ diff --git a/resources/icons/flag_green.svg b/resources/icons/flag_green.svg new file mode 100644 index 000000000..90932e5e4 --- /dev/null +++ b/resources/icons/flag_green.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/flag_red.svg b/resources/icons/flag_red.svg new file mode 100644 index 000000000..8d39a9d6a --- /dev/null +++ b/resources/icons/flag_red.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/funnel.png b/resources/icons/funnel.png deleted file mode 100644 index 07ab7ad44..000000000 Binary files a/resources/icons/funnel.png and /dev/null differ diff --git a/resources/icons/funnel.svg b/resources/icons/funnel.svg new file mode 100644 index 000000000..8877722e3 --- /dev/null +++ b/resources/icons/funnel.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/gizmos.png b/resources/icons/gizmos.png deleted file mode 100644 index 448e826b8..000000000 Binary files a/resources/icons/gizmos.png and /dev/null differ diff --git a/resources/icons/hourglass.png b/resources/icons/hourglass.png deleted file mode 100644 index e39feab8b..000000000 Binary files a/resources/icons/hourglass.png and /dev/null differ diff --git a/resources/icons/house.png b/resources/icons/house.png deleted file mode 100644 index fed62219f..000000000 Binary files a/resources/icons/house.png and /dev/null differ diff --git a/resources/icons/import_config.svg b/resources/icons/import_config.svg new file mode 100644 index 000000000..636a31151 --- /dev/null +++ b/resources/icons/import_config.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/import_config_bundle.svg b/resources/icons/import_config_bundle.svg new file mode 100644 index 000000000..b8342760a --- /dev/null +++ b/resources/icons/import_config_bundle.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/import_plater.svg b/resources/icons/import_plater.svg new file mode 100644 index 000000000..a953122f2 --- /dev/null +++ b/resources/icons/import_plater.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/infill.png b/resources/icons/infill.png deleted file mode 100644 index 69d3c7254..000000000 Binary files a/resources/icons/infill.png and /dev/null differ diff --git a/resources/icons/infill.svg b/resources/icons/infill.svg new file mode 100644 index 000000000..fcb1f99c9 --- /dev/null +++ b/resources/icons/infill.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/joystick.png b/resources/icons/joystick.png deleted file mode 100644 index 62168f56f..000000000 Binary files a/resources/icons/joystick.png and /dev/null differ diff --git a/resources/icons/lambda.png b/resources/icons/lambda.png deleted file mode 100644 index 3be73b142..000000000 Binary files a/resources/icons/lambda.png and /dev/null differ diff --git a/resources/icons/lambda_.png b/resources/icons/lambda_.png deleted file mode 100644 index 8e9d2b0ea..000000000 Binary files a/resources/icons/lambda_.png and /dev/null differ diff --git a/resources/icons/layers.png b/resources/icons/layers.png deleted file mode 100644 index e1358a362..000000000 Binary files a/resources/icons/layers.png and /dev/null differ diff --git a/resources/icons/layers.svg b/resources/icons/layers.svg index 7718a8cbd..da5dec21d 100644 --- a/resources/icons/layers.svg +++ b/resources/icons/layers.svg @@ -1,25 +1,27 @@ - + - + viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve"> + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/layers_white.svg b/resources/icons/layers_white.svg new file mode 100644 index 000000000..cd71fab3a --- /dev/null +++ b/resources/icons/layers_white.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/lock.png b/resources/icons/lock.png deleted file mode 100644 index 2ebc4f6f9..000000000 Binary files a/resources/icons/lock.png and /dev/null differ diff --git a/resources/icons/lock_closed.svg b/resources/icons/lock_closed.svg new file mode 100644 index 000000000..549cdba23 --- /dev/null +++ b/resources/icons/lock_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/lock_closed_white.svg b/resources/icons/lock_closed_white.svg new file mode 100644 index 000000000..1665dc9a0 --- /dev/null +++ b/resources/icons/lock_closed_white.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/lock_open.png b/resources/icons/lock_open.png deleted file mode 100644 index a471765ff..000000000 Binary files a/resources/icons/lock_open.png and /dev/null differ diff --git a/resources/icons/lock_open.svg b/resources/icons/lock_open.svg new file mode 100644 index 000000000..047e8685c --- /dev/null +++ b/resources/icons/lock_open.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/resources/icons/lorry_add.png b/resources/icons/lorry_add.png deleted file mode 100644 index a2c512499..000000000 Binary files a/resources/icons/lorry_add.png and /dev/null differ diff --git a/resources/icons/lorry_go.png b/resources/icons/lorry_go.png deleted file mode 100644 index 1c296a6aa..000000000 Binary files a/resources/icons/lorry_go.png and /dev/null differ diff --git a/resources/icons/mark_X.svg b/resources/icons/mark_X.svg new file mode 100644 index 000000000..1045debc5 --- /dev/null +++ b/resources/icons/mark_X.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/resources/icons/mark_Y.svg b/resources/icons/mark_Y.svg new file mode 100644 index 000000000..26e01b295 --- /dev/null +++ b/resources/icons/mark_Y.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/resources/icons/mark_Z.svg b/resources/icons/mark_Z.svg new file mode 100644 index 000000000..cd2826ac0 --- /dev/null +++ b/resources/icons/mark_Z.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/resources/icons/mode_middle_.png b/resources/icons/mode_advanced_.png similarity index 100% rename from resources/icons/mode_middle_.png rename to resources/icons/mode_advanced_.png diff --git a/resources/icons/mode_middle_sq.png b/resources/icons/mode_advanced_sq.png similarity index 100% rename from resources/icons/mode_middle_sq.png rename to resources/icons/mode_advanced_sq.png diff --git a/resources/icons/mode_expert.png b/resources/icons/mode_expert.png deleted file mode 100644 index 1716bab44..000000000 Binary files a/resources/icons/mode_expert.png and /dev/null differ diff --git a/resources/icons/mode_middle.png b/resources/icons/mode_middle.png deleted file mode 100644 index b08f73ca6..000000000 Binary files a/resources/icons/mode_middle.png and /dev/null differ diff --git a/resources/icons/mode_off_sq.png b/resources/icons/mode_off_sq.png deleted file mode 100644 index 8d8185653..000000000 Binary files a/resources/icons/mode_off_sq.png and /dev/null differ diff --git a/resources/icons/mode_simple.png b/resources/icons/mode_simple.png deleted file mode 100644 index 8bc300228..000000000 Binary files a/resources/icons/mode_simple.png and /dev/null differ diff --git a/resources/icons/move_hover.png b/resources/icons/move_hover.png deleted file mode 100644 index 8cd66cab9..000000000 Binary files a/resources/icons/move_hover.png and /dev/null differ diff --git a/resources/icons/move_off.png b/resources/icons/move_off.png deleted file mode 100644 index 9e44690df..000000000 Binary files a/resources/icons/move_off.png and /dev/null differ diff --git a/resources/icons/move_on.png b/resources/icons/move_on.png deleted file mode 100644 index c19be461d..000000000 Binary files a/resources/icons/move_on.png and /dev/null differ diff --git a/resources/icons/note.png b/resources/icons/note.png deleted file mode 100644 index 40e206f17..000000000 Binary files a/resources/icons/note.png and /dev/null differ diff --git a/resources/icons/note.svg b/resources/icons/note.svg new file mode 100644 index 000000000..c14214201 --- /dev/null +++ b/resources/icons/note.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/number_of_copies.svg b/resources/icons/number_of_copies.svg new file mode 100644 index 000000000..a5c8affc7 --- /dev/null +++ b/resources/icons/number_of_copies.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/object.png b/resources/icons/object.png deleted file mode 100644 index c85cbaf2f..000000000 Binary files a/resources/icons/object.png and /dev/null differ diff --git a/resources/icons/open.svg b/resources/icons/open.svg new file mode 100644 index 000000000..8fcddc2a6 --- /dev/null +++ b/resources/icons/open.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/resources/icons/output+page_white.svg b/resources/icons/output+page_white.svg new file mode 100644 index 000000000..ec1518f25 --- /dev/null +++ b/resources/icons/output+page_white.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/resources/icons/overlay/cut_hover.png b/resources/icons/overlay/cut_hover.png deleted file mode 100644 index b026667c2..000000000 Binary files a/resources/icons/overlay/cut_hover.png and /dev/null differ diff --git a/resources/icons/overlay/cut_off.png b/resources/icons/overlay/cut_off.png deleted file mode 100644 index c01f20554..000000000 Binary files a/resources/icons/overlay/cut_off.png and /dev/null differ diff --git a/resources/icons/overlay/cut_on.png b/resources/icons/overlay/cut_on.png deleted file mode 100644 index fac6ecb45..000000000 Binary files a/resources/icons/overlay/cut_on.png and /dev/null differ diff --git a/resources/icons/overlay/layflat_hover.png b/resources/icons/overlay/layflat_hover.png deleted file mode 100644 index 508916e48..000000000 Binary files a/resources/icons/overlay/layflat_hover.png and /dev/null differ diff --git a/resources/icons/overlay/layflat_off.png b/resources/icons/overlay/layflat_off.png deleted file mode 100644 index 6bfadd316..000000000 Binary files a/resources/icons/overlay/layflat_off.png and /dev/null differ diff --git a/resources/icons/overlay/layflat_on.png b/resources/icons/overlay/layflat_on.png deleted file mode 100644 index 4892b57fc..000000000 Binary files a/resources/icons/overlay/layflat_on.png and /dev/null differ diff --git a/resources/icons/overlay/move_hover.png b/resources/icons/overlay/move_hover.png deleted file mode 100644 index 933c34c24..000000000 Binary files a/resources/icons/overlay/move_hover.png and /dev/null differ diff --git a/resources/icons/overlay/move_off.png b/resources/icons/overlay/move_off.png deleted file mode 100644 index 6c921a042..000000000 Binary files a/resources/icons/overlay/move_off.png and /dev/null differ diff --git a/resources/icons/overlay/move_on.png b/resources/icons/overlay/move_on.png deleted file mode 100644 index 80204b52e..000000000 Binary files a/resources/icons/overlay/move_on.png and /dev/null differ diff --git a/resources/icons/overlay/rotate_hover.png b/resources/icons/overlay/rotate_hover.png deleted file mode 100644 index 9df377fc7..000000000 Binary files a/resources/icons/overlay/rotate_hover.png and /dev/null differ diff --git a/resources/icons/overlay/rotate_off.png b/resources/icons/overlay/rotate_off.png deleted file mode 100644 index f5b652979..000000000 Binary files a/resources/icons/overlay/rotate_off.png and /dev/null differ diff --git a/resources/icons/overlay/rotate_on.png b/resources/icons/overlay/rotate_on.png deleted file mode 100644 index 6d4c5bf31..000000000 Binary files a/resources/icons/overlay/rotate_on.png and /dev/null differ diff --git a/resources/icons/overlay/scale_hover.png b/resources/icons/overlay/scale_hover.png deleted file mode 100644 index 40a05fffd..000000000 Binary files a/resources/icons/overlay/scale_hover.png and /dev/null differ diff --git a/resources/icons/overlay/scale_off.png b/resources/icons/overlay/scale_off.png deleted file mode 100644 index 351d5a004..000000000 Binary files a/resources/icons/overlay/scale_off.png and /dev/null differ diff --git a/resources/icons/overlay/scale_on.png b/resources/icons/overlay/scale_on.png deleted file mode 100644 index f8450e105..000000000 Binary files a/resources/icons/overlay/scale_on.png and /dev/null differ diff --git a/resources/icons/overlay/sla_support_points_hover.png b/resources/icons/overlay/sla_support_points_hover.png deleted file mode 100644 index 2b385c0e7..000000000 Binary files a/resources/icons/overlay/sla_support_points_hover.png and /dev/null differ diff --git a/resources/icons/overlay/sla_support_points_off.png b/resources/icons/overlay/sla_support_points_off.png deleted file mode 100644 index 0a1e3f570..000000000 Binary files a/resources/icons/overlay/sla_support_points_off.png and /dev/null differ diff --git a/resources/icons/overlay/sla_support_points_on.png b/resources/icons/overlay/sla_support_points_on.png deleted file mode 100644 index e7f5d0a87..000000000 Binary files a/resources/icons/overlay/sla_support_points_on.png and /dev/null differ diff --git a/resources/icons/package.png b/resources/icons/package.png deleted file mode 100644 index 78945fe19..000000000 Binary files a/resources/icons/package.png and /dev/null differ diff --git a/resources/icons/package_green.png b/resources/icons/package_green.png deleted file mode 100644 index 2e5104016..000000000 Binary files a/resources/icons/package_green.png and /dev/null differ diff --git a/resources/icons/pad.svg b/resources/icons/pad.svg new file mode 100644 index 000000000..dc5907e37 --- /dev/null +++ b/resources/icons/pad.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/page_white_go.png b/resources/icons/page_white_go.png deleted file mode 100644 index fee12fb25..000000000 Binary files a/resources/icons/page_white_go.png and /dev/null differ diff --git a/resources/icons/paste.svg b/resources/icons/paste.svg new file mode 100644 index 000000000..028ffb8ea --- /dev/null +++ b/resources/icons/paste.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/paste_menu.svg b/resources/icons/paste_menu.svg new file mode 100644 index 000000000..74dbbf8ee --- /dev/null +++ b/resources/icons/paste_menu.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/plater.svg b/resources/icons/plater.svg new file mode 100644 index 000000000..6fd21215b --- /dev/null +++ b/resources/icons/plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/plugin.png b/resources/icons/plugin.png deleted file mode 100644 index 322685238..000000000 Binary files a/resources/icons/plugin.png and /dev/null differ diff --git a/resources/icons/plugin_add.png b/resources/icons/plugin_add.png deleted file mode 100644 index ae43690ec..000000000 Binary files a/resources/icons/plugin_add.png and /dev/null differ diff --git a/resources/icons/plugin_go.png b/resources/icons/plugin_go.png deleted file mode 100644 index 41da9913d..000000000 Binary files a/resources/icons/plugin_go.png and /dev/null differ diff --git a/resources/icons/preview_menu.svg b/resources/icons/preview_menu.svg new file mode 100644 index 000000000..725caf7b8 --- /dev/null +++ b/resources/icons/preview_menu.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/printer.svg b/resources/icons/printer.svg new file mode 100644 index 000000000..91e103ec7 --- /dev/null +++ b/resources/icons/printer.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/resources/icons/printer_empty.png b/resources/icons/printer_empty.png deleted file mode 100644 index ddaae7e8a..000000000 Binary files a/resources/icons/printer_empty.png and /dev/null differ diff --git a/resources/icons/printer_white.svg b/resources/icons/printer_white.svg new file mode 100644 index 000000000..d94f6fd5c --- /dev/null +++ b/resources/icons/printer_white.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/resources/icons/printers/PrusaResearch_SL1.png b/resources/icons/printers/PrusaResearch_SL1.png index 3c15f95ea..b4425a705 100644 Binary files a/resources/icons/printers/PrusaResearch_SL1.png and b/resources/icons/printers/PrusaResearch_SL1.png differ diff --git a/resources/icons/question.svg b/resources/icons/question.svg new file mode 100644 index 000000000..5463243c6 --- /dev/null +++ b/resources/icons/question.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/question_mark_01.png b/resources/icons/question_mark_01.png deleted file mode 100644 index 25814a61d..000000000 Binary files a/resources/icons/question_mark_01.png and /dev/null differ diff --git a/resources/icons/re_slice.svg b/resources/icons/re_slice.svg new file mode 100644 index 000000000..54490ea42 --- /dev/null +++ b/resources/icons/re_slice.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/resources/icons/remove_copies.svg b/resources/icons/remove_copies.svg new file mode 100644 index 000000000..d249cb5bc --- /dev/null +++ b/resources/icons/remove_copies.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/remove_menu.svg b/resources/icons/remove_menu.svg new file mode 100644 index 000000000..a25ae965b --- /dev/null +++ b/resources/icons/remove_menu.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/resources/icons/resin.svg b/resources/icons/resin.svg new file mode 100644 index 000000000..da44606a0 --- /dev/null +++ b/resources/icons/resin.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/reslice.png b/resources/icons/reslice.png deleted file mode 100644 index 167c0eccd..000000000 Binary files a/resources/icons/reslice.png and /dev/null differ diff --git a/resources/icons/save.svg b/resources/icons/save.svg new file mode 100644 index 000000000..9e3fb961e --- /dev/null +++ b/resources/icons/save.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/scale_hover.png b/resources/icons/scale_hover.png deleted file mode 100644 index 394cb4b20..000000000 Binary files a/resources/icons/scale_hover.png and /dev/null differ diff --git a/resources/icons/scale_off.png b/resources/icons/scale_off.png deleted file mode 100644 index fac035099..000000000 Binary files a/resources/icons/scale_off.png and /dev/null differ diff --git a/resources/icons/scale_on.png b/resources/icons/scale_on.png deleted file mode 100644 index 4d4c075f3..000000000 Binary files a/resources/icons/scale_on.png and /dev/null differ diff --git a/resources/icons/set_separate_obj.svg b/resources/icons/set_separate_obj.svg new file mode 100644 index 000000000..c95149e2d --- /dev/null +++ b/resources/icons/set_separate_obj.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/shape_flip_horizontal.png b/resources/icons/shape_flip_horizontal.png deleted file mode 100644 index 8667c81f8..000000000 Binary files a/resources/icons/shape_flip_horizontal.png and /dev/null differ diff --git a/resources/icons/shape_handles.png b/resources/icons/shape_handles.png deleted file mode 100644 index ce27fe3a0..000000000 Binary files a/resources/icons/shape_handles.png and /dev/null differ diff --git a/resources/icons/shape_ungroup_o.png b/resources/icons/shape_ungroup_o.png deleted file mode 100644 index 97746d32c..000000000 Binary files a/resources/icons/shape_ungroup_o.png and /dev/null differ diff --git a/resources/icons/shape_ungroup_p.png b/resources/icons/shape_ungroup_p.png deleted file mode 100644 index 81c0198ff..000000000 Binary files a/resources/icons/shape_ungroup_p.png and /dev/null differ diff --git a/resources/icons/skirt+brim.svg b/resources/icons/skirt+brim.svg new file mode 100644 index 000000000..9242761b6 --- /dev/null +++ b/resources/icons/skirt+brim.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/sla_support_points_reset.png b/resources/icons/sla_support_points_reset.png deleted file mode 100644 index 6e051fe95..000000000 Binary files a/resources/icons/sla_support_points_reset.png and /dev/null differ diff --git a/resources/icons/sla_support_points_tooltip.png b/resources/icons/sla_support_points_tooltip.png deleted file mode 100644 index 1bdfd3440..000000000 Binary files a/resources/icons/sla_support_points_tooltip.png and /dev/null differ diff --git a/resources/icons/split.png b/resources/icons/split.png deleted file mode 100644 index c5680ab91..000000000 Binary files a/resources/icons/split.png and /dev/null differ diff --git a/resources/icons/split_object_SMALL.svg b/resources/icons/split_object_SMALL.svg new file mode 100644 index 000000000..7e362c2ba --- /dev/null +++ b/resources/icons/split_object_SMALL.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/resources/icons/split_parts_SMALL.svg b/resources/icons/split_parts_SMALL.svg new file mode 100644 index 000000000..45f90bee0 --- /dev/null +++ b/resources/icons/split_parts_SMALL.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/resources/icons/spool.png b/resources/icons/spool.png deleted file mode 100644 index ab06d9912..000000000 Binary files a/resources/icons/spool.png and /dev/null differ diff --git a/resources/icons/spool.svg b/resources/icons/spool.svg new file mode 100644 index 000000000..840365938 --- /dev/null +++ b/resources/icons/spool.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/support.svg b/resources/icons/support.svg new file mode 100644 index 000000000..65c7592c8 --- /dev/null +++ b/resources/icons/support.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/support_blocker.png b/resources/icons/support_blocker.png deleted file mode 100644 index 8a66c73f4..000000000 Binary files a/resources/icons/support_blocker.png and /dev/null differ diff --git a/resources/icons/support_blocker.svg b/resources/icons/support_blocker.svg new file mode 100644 index 000000000..56086b279 --- /dev/null +++ b/resources/icons/support_blocker.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/support_blocker_.png b/resources/icons/support_blocker_.png deleted file mode 100644 index fc658e4f6..000000000 Binary files a/resources/icons/support_blocker_.png and /dev/null differ diff --git a/resources/icons/support_enforcer.png b/resources/icons/support_enforcer.png deleted file mode 100644 index c0bef8d5e..000000000 Binary files a/resources/icons/support_enforcer.png and /dev/null differ diff --git a/resources/icons/support_enforcer.svg b/resources/icons/support_enforcer.svg new file mode 100644 index 000000000..0f0eb4907 --- /dev/null +++ b/resources/icons/support_enforcer.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/resources/icons/support_enforcer_.png b/resources/icons/support_enforcer_.png deleted file mode 100644 index ac34b6cb0..000000000 Binary files a/resources/icons/support_enforcer_.png and /dev/null differ diff --git a/resources/icons/sys_lock.png b/resources/icons/sys_lock.png deleted file mode 100644 index a33eadbca..000000000 Binary files a/resources/icons/sys_lock.png and /dev/null differ diff --git a/resources/icons/sys_unlock.png b/resources/icons/sys_unlock.png deleted file mode 100644 index d53c288a1..000000000 Binary files a/resources/icons/sys_unlock.png and /dev/null differ diff --git a/resources/icons/sys_unlock_grey.png b/resources/icons/sys_unlock_grey.png deleted file mode 100644 index 0dedf4dee..000000000 Binary files a/resources/icons/sys_unlock_grey.png and /dev/null differ diff --git a/resources/icons/tag_blue.png b/resources/icons/tag_blue.png deleted file mode 100644 index 45aebfbb1..000000000 Binary files a/resources/icons/tag_blue.png and /dev/null differ diff --git a/resources/icons/test.svg b/resources/icons/test.svg new file mode 100644 index 000000000..abf35d0ae --- /dev/null +++ b/resources/icons/test.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/textfield.png b/resources/icons/textfield.png deleted file mode 100644 index d37e7304e..000000000 Binary files a/resources/icons/textfield.png and /dev/null differ diff --git a/resources/icons/time.png b/resources/icons/time.png deleted file mode 100644 index 3b8d2995f..000000000 Binary files a/resources/icons/time.png and /dev/null differ diff --git a/resources/icons/time.svg b/resources/icons/time.svg new file mode 100644 index 000000000..5d8f23cfc --- /dev/null +++ b/resources/icons/time.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/toolbar.png b/resources/icons/toolbar.png deleted file mode 100644 index 581db339e..000000000 Binary files a/resources/icons/toolbar.png and /dev/null differ diff --git a/resources/icons/toolbar141.png b/resources/icons/toolbar141.png deleted file mode 100644 index 888b7b1f9..000000000 Binary files a/resources/icons/toolbar141.png and /dev/null differ diff --git a/resources/icons/undo.svg b/resources/icons/undo.svg new file mode 100644 index 000000000..fbc580d88 --- /dev/null +++ b/resources/icons/undo.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/resources/icons/upload_queue.svg b/resources/icons/upload_queue.svg new file mode 100644 index 000000000..764717836 --- /dev/null +++ b/resources/icons/upload_queue.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/variable_layer_height.png b/resources/icons/variable_layer_height.png deleted file mode 100644 index 2fbdd6920..000000000 Binary files a/resources/icons/variable_layer_height.png and /dev/null differ diff --git a/resources/icons/view_toolbar.png b/resources/icons/view_toolbar.png deleted file mode 100644 index 8cfb8d091..000000000 Binary files a/resources/icons/view_toolbar.png and /dev/null differ diff --git a/resources/icons/wand.png b/resources/icons/wand.png deleted file mode 100644 index 44ccbf812..000000000 Binary files a/resources/icons/wand.png and /dev/null differ diff --git a/resources/icons/white/add_copies.svg b/resources/icons/white/add_copies.svg new file mode 100644 index 000000000..17eff0179 --- /dev/null +++ b/resources/icons/white/add_copies.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/add_modifier.svg b/resources/icons/white/add_modifier.svg new file mode 100644 index 000000000..09c3ce27d --- /dev/null +++ b/resources/icons/white/add_modifier.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/resources/icons/white/add_part.svg b/resources/icons/white/add_part.svg new file mode 100644 index 000000000..b7c800bbb --- /dev/null +++ b/resources/icons/white/add_part.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/advanced+wrench.svg b/resources/icons/white/advanced+wrench.svg new file mode 100644 index 000000000..5e878cb3c --- /dev/null +++ b/resources/icons/white/advanced+wrench.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/advanced_plus.svg b/resources/icons/white/advanced_plus.svg new file mode 100644 index 000000000..db532ec4b --- /dev/null +++ b/resources/icons/white/advanced_plus.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/resources/icons/white/cog.svg b/resources/icons/white/cog.svg new file mode 100644 index 000000000..773e4d65d --- /dev/null +++ b/resources/icons/white/cog.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/resources/icons/white/cooling.svg b/resources/icons/white/cooling.svg new file mode 100644 index 000000000..29bd04c36 --- /dev/null +++ b/resources/icons/white/cooling.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/copy_menu.svg b/resources/icons/white/copy_menu.svg new file mode 100644 index 000000000..d660aab6a --- /dev/null +++ b/resources/icons/white/copy_menu.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/delete.svg b/resources/icons/white/delete.svg new file mode 100644 index 000000000..91d5ce74c --- /dev/null +++ b/resources/icons/white/delete.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/delete_all_menu.svg b/resources/icons/white/delete_all_menu.svg new file mode 100644 index 000000000..5d825c424 --- /dev/null +++ b/resources/icons/white/delete_all_menu.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/editor_menu.svg b/resources/icons/white/editor_menu.svg new file mode 100644 index 000000000..649d2c40f --- /dev/null +++ b/resources/icons/white/editor_menu.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/export_config.svg b/resources/icons/white/export_config.svg new file mode 100644 index 000000000..22f8ebe1a --- /dev/null +++ b/resources/icons/white/export_config.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/resources/icons/white/export_config_bundle.svg b/resources/icons/white/export_config_bundle.svg new file mode 100644 index 000000000..99bd62b6c --- /dev/null +++ b/resources/icons/white/export_config_bundle.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/export_gcode.svg b/resources/icons/white/export_gcode.svg new file mode 100644 index 000000000..39f5225cb --- /dev/null +++ b/resources/icons/white/export_gcode.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/resources/icons/white/export_plate.svg b/resources/icons/white/export_plate.svg new file mode 100644 index 000000000..18159d2a8 --- /dev/null +++ b/resources/icons/white/export_plate.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/resources/icons/white/export_plater.svg b/resources/icons/white/export_plater.svg new file mode 100644 index 000000000..e71b38a0a --- /dev/null +++ b/resources/icons/white/export_plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/white/extruder+funnel.svg b/resources/icons/white/extruder+funnel.svg new file mode 100644 index 000000000..de6b227da --- /dev/null +++ b/resources/icons/white/extruder+funnel.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/flag_green.svg b/resources/icons/white/flag_green.svg new file mode 100644 index 000000000..8479d0e9a --- /dev/null +++ b/resources/icons/white/flag_green.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/white/flag_red.svg b/resources/icons/white/flag_red.svg new file mode 100644 index 000000000..a9b1cf8fe --- /dev/null +++ b/resources/icons/white/flag_red.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/white/import_config.svg b/resources/icons/white/import_config.svg new file mode 100644 index 000000000..001277f73 --- /dev/null +++ b/resources/icons/white/import_config.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_config_bundle.svg b/resources/icons/white/import_config_bundle.svg new file mode 100644 index 000000000..c16cd7b3c --- /dev/null +++ b/resources/icons/white/import_config_bundle.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_plate.svg b/resources/icons/white/import_plate.svg new file mode 100644 index 000000000..7f888e3d7 --- /dev/null +++ b/resources/icons/white/import_plate.svg @@ -0,0 +1,38 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_plater.svg b/resources/icons/white/import_plater.svg new file mode 100644 index 000000000..1dc5aae6e --- /dev/null +++ b/resources/icons/white/import_plater.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/infill.svg b/resources/icons/white/infill.svg new file mode 100644 index 000000000..086043099 --- /dev/null +++ b/resources/icons/white/infill.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/layers.svg b/resources/icons/white/layers.svg new file mode 100644 index 000000000..cd71fab3a --- /dev/null +++ b/resources/icons/white/layers.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/lock2_closed.svg b/resources/icons/white/lock2_closed.svg new file mode 100644 index 000000000..726c850a1 --- /dev/null +++ b/resources/icons/white/lock2_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/lock_closed.svg b/resources/icons/white/lock_closed.svg new file mode 100644 index 000000000..1665dc9a0 --- /dev/null +++ b/resources/icons/white/lock_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/machine+cog.svg b/resources/icons/white/machine+cog.svg new file mode 100644 index 000000000..ec49265b8 --- /dev/null +++ b/resources/icons/white/machine+cog.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/notes.svg b/resources/icons/white/notes.svg new file mode 100644 index 000000000..25de4191e --- /dev/null +++ b/resources/icons/white/notes.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/number_of_copies.svg b/resources/icons/white/number_of_copies.svg new file mode 100644 index 000000000..7c9d78a80 --- /dev/null +++ b/resources/icons/white/number_of_copies.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/open.svg b/resources/icons/white/open.svg new file mode 100644 index 000000000..0ea9ecdb2 --- /dev/null +++ b/resources/icons/white/open.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/resources/icons/white/output+page_white.svg b/resources/icons/white/output+page_white.svg new file mode 100644 index 000000000..083874003 --- /dev/null +++ b/resources/icons/white/output+page_white.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/white/pad.svg b/resources/icons/white/pad.svg new file mode 100644 index 000000000..cddb2da02 --- /dev/null +++ b/resources/icons/white/pad.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/paste_menu.svg b/resources/icons/white/paste_menu.svg new file mode 100644 index 000000000..465c2faf0 --- /dev/null +++ b/resources/icons/white/paste_menu.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/white/plater.svg b/resources/icons/white/plater.svg new file mode 100644 index 000000000..d637a5e7e --- /dev/null +++ b/resources/icons/white/plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/white/preview_menu.svg b/resources/icons/white/preview_menu.svg new file mode 100644 index 000000000..98095359c --- /dev/null +++ b/resources/icons/white/preview_menu.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/printer.svg b/resources/icons/white/printer.svg new file mode 100644 index 000000000..d94f6fd5c --- /dev/null +++ b/resources/icons/white/printer.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/resources/icons/white/re_slice.svg b/resources/icons/white/re_slice.svg new file mode 100644 index 000000000..b8d7dc727 --- /dev/null +++ b/resources/icons/white/re_slice.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/resources/icons/white/remove_copies.svg b/resources/icons/white/remove_copies.svg new file mode 100644 index 000000000..5b277e45e --- /dev/null +++ b/resources/icons/white/remove_copies.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/remove_menu.svg b/resources/icons/white/remove_menu.svg new file mode 100644 index 000000000..59360a33f --- /dev/null +++ b/resources/icons/white/remove_menu.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/resources/icons/white/resin.svg b/resources/icons/white/resin.svg new file mode 100644 index 000000000..81abfae0c --- /dev/null +++ b/resources/icons/white/resin.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/save.svg b/resources/icons/white/save.svg new file mode 100644 index 000000000..3349a42dd --- /dev/null +++ b/resources/icons/white/save.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/set_separate_obj.svg b/resources/icons/white/set_separate_obj.svg new file mode 100644 index 000000000..de083c1c9 --- /dev/null +++ b/resources/icons/white/set_separate_obj.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/skirt+brim.svg b/resources/icons/white/skirt+brim.svg new file mode 100644 index 000000000..684e177d2 --- /dev/null +++ b/resources/icons/white/skirt+brim.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/resources/icons/white/split_object_SMALL.svg b/resources/icons/white/split_object_SMALL.svg new file mode 100644 index 000000000..4795cab51 --- /dev/null +++ b/resources/icons/white/split_object_SMALL.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/resources/icons/white/split_parts_SMALL.svg b/resources/icons/white/split_parts_SMALL.svg new file mode 100644 index 000000000..eba846c17 --- /dev/null +++ b/resources/icons/white/split_parts_SMALL.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/resources/icons/white/spool.svg b/resources/icons/white/spool.svg new file mode 100644 index 000000000..7c9fbab97 --- /dev/null +++ b/resources/icons/white/spool.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support.svg b/resources/icons/white/support.svg new file mode 100644 index 000000000..52b7c6b40 --- /dev/null +++ b/resources/icons/white/support.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support_blocker.svg b/resources/icons/white/support_blocker.svg new file mode 100644 index 000000000..17401e2ab --- /dev/null +++ b/resources/icons/white/support_blocker.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support_enforcer.svg b/resources/icons/white/support_enforcer.svg new file mode 100644 index 000000000..0de2dc6a7 --- /dev/null +++ b/resources/icons/white/support_enforcer.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/test.svg b/resources/icons/white/test.svg new file mode 100644 index 000000000..639bbbde8 --- /dev/null +++ b/resources/icons/white/test.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/time.svg b/resources/icons/white/time.svg new file mode 100644 index 000000000..d014286b5 --- /dev/null +++ b/resources/icons/white/time.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/white/upload_queue.svg b/resources/icons/white/upload_queue.svg new file mode 100644 index 000000000..710e2be89 --- /dev/null +++ b/resources/icons/white/upload_queue.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/wrench.svg b/resources/icons/white/wrench.svg new file mode 100644 index 000000000..714c5a82a --- /dev/null +++ b/resources/icons/white/wrench.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/wrench.png b/resources/icons/wrench.png deleted file mode 100644 index 4dc553cdd..000000000 Binary files a/resources/icons/wrench.png and /dev/null differ diff --git a/resources/icons/wrench.svg b/resources/icons/wrench.svg new file mode 100644 index 000000000..5266ec1eb --- /dev/null +++ b/resources/icons/wrench.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/wrench_white.svg b/resources/icons/wrench_white.svg new file mode 100644 index 000000000..714c5a82a --- /dev/null +++ b/resources/icons/wrench_white.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/zoom.png b/resources/icons/zoom.png deleted file mode 100644 index 908612e39..000000000 Binary files a/resources/icons/zoom.png and /dev/null differ diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/PrusaSlicer.pot similarity index 50% rename from resources/localization/Slic3rPE.pot rename to resources/localization/PrusaSlicer.pot index c8ec2f4ac..e453150b8 100644 --- a/resources/localization/Slic3rPE.pot +++ b/resources/localization/PrusaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" +"POT-Creation-Date: 2019-05-13 15:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,485 +17,576 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" +#: src/slic3r/GUI/AboutDialog.cpp:35 +#, possible-c-format +msgid "About %s" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 +#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:59 msgid "Version" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:43 +#: src/slic3r/GUI/AboutDialog.cpp:92 +msgid "Copyright" +msgstr "" + +#. TRN "Slic3r _is licensed under the_ License" +#: src/slic3r/GUI/AboutDialog.cpp:94 +msgid "is licensed under the" +msgstr "" + +#: src/slic3r/GUI/AboutDialog.cpp:95 +msgid "GNU Affero General Public License, version 3" +msgstr "" + +#: src/slic3r/GUI/AboutDialog.cpp:96 +msgid "" +"Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, " +"Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and " +"numerous others." +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:84 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:400 +msgid "Copying of the temporary G-code to the output G-code failed" +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:85 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:398 +msgid "Running post-processing scripts" +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:87 +msgid "G-code file exported to %1%" +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:91 +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:109 +msgid "Slicing complete" +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:105 +msgid "Masked SLA file exported to %1%" +msgstr "" + +#: src/slic3r/GUI/BackgroundSlicingProcess.cpp:409 +msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" +msgstr "" + +#: src/slic3r/GUI/BedShapeDialog.cpp:60 msgid "Shape" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:50 +#: src/slic3r/GUI/BedShapeDialog.cpp:68 msgid "Rectangular" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 +#: src/slic3r/GUI/BedShapeDialog.cpp:72 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:232 src/slic3r/GUI/Plater.cpp:137 +#: src/slic3r/GUI/Tab.cpp:2263 msgid "Size" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/BedShapeDialog.cpp:73 msgid "Size in X and Y of the rectangular plate." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:61 +#: src/slic3r/GUI/BedShapeDialog.cpp:79 msgid "Origin" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:62 +#: src/slic3r/GUI/BedShapeDialog.cpp:80 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 +#: src/slic3r/GUI/BedShapeDialog.cpp:84 msgid "Circular" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 +#: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118 +#: src/slic3r/GUI/ConfigWizard.cpp:565 src/slic3r/GUI/ConfigWizard.cpp:579 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:229 +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 src/libslic3r/PrintConfig.cpp:60 +#: src/libslic3r/PrintConfig.cpp:67 src/libslic3r/PrintConfig.cpp:76 +#: src/libslic3r/PrintConfig.cpp:211 src/libslic3r/PrintConfig.cpp:286 +#: src/libslic3r/PrintConfig.cpp:294 src/libslic3r/PrintConfig.cpp:344 +#: src/libslic3r/PrintConfig.cpp:354 src/libslic3r/PrintConfig.cpp:474 +#: src/libslic3r/PrintConfig.cpp:485 src/libslic3r/PrintConfig.cpp:503 +#: src/libslic3r/PrintConfig.cpp:681 src/libslic3r/PrintConfig.cpp:1191 +#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1270 +#: src/libslic3r/PrintConfig.cpp:1288 src/libslic3r/PrintConfig.cpp:1340 +#: src/libslic3r/PrintConfig.cpp:1350 src/libslic3r/PrintConfig.cpp:1471 +#: src/libslic3r/PrintConfig.cpp:1479 src/libslic3r/PrintConfig.cpp:1520 +#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1538 +#: src/libslic3r/PrintConfig.cpp:1546 src/libslic3r/PrintConfig.cpp:1554 +#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1853 +#: src/libslic3r/PrintConfig.cpp:1923 src/libslic3r/PrintConfig.cpp:1957 +#: src/libslic3r/PrintConfig.cpp:2150 src/libslic3r/PrintConfig.cpp:2157 +#: src/libslic3r/PrintConfig.cpp:2164 src/libslic3r/PrintConfig.cpp:2194 +#: src/libslic3r/PrintConfig.cpp:2204 src/libslic3r/PrintConfig.cpp:2214 +#: src/libslic3r/PrintConfig.cpp:2322 src/libslic3r/PrintConfig.cpp:2397 +#: src/libslic3r/PrintConfig.cpp:2406 src/libslic3r/PrintConfig.cpp:2415 +#: src/libslic3r/PrintConfig.cpp:2425 src/libslic3r/PrintConfig.cpp:2469 +#: src/libslic3r/PrintConfig.cpp:2479 src/libslic3r/PrintConfig.cpp:2498 +#: src/libslic3r/PrintConfig.cpp:2508 src/libslic3r/PrintConfig.cpp:2517 +#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2550 +#: src/libslic3r/PrintConfig.cpp:2564 src/libslic3r/PrintConfig.cpp:2577 +#: src/libslic3r/PrintConfig.cpp:2587 msgid "mm" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 +#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:678 msgid "Diameter" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:71 +#: src/slic3r/GUI/BedShapeDialog.cpp:89 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 +#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/slic3r/GUI/GUI_Preview.cpp:239 #: src/libslic3r/GCode/PreviewData.cpp:175 msgid "Custom" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:79 +#: src/slic3r/GUI/BedShapeDialog.cpp:97 msgid "Load shape from STL..." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:125 +#: src/slic3r/GUI/BedShapeDialog.cpp:143 msgid "Settings" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:298 +#: src/slic3r/GUI/BedShapeDialog.cpp:316 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1438 +msgid "Error!" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:324 +#: src/slic3r/GUI/BedShapeDialog.cpp:342 msgid "The selected file contains no geometry." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:328 +#: src/slic3r/GUI/BedShapeDialog.cpp:346 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:530 msgid "Bed Shape" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:54 +#: src/slic3r/GUI/BonjourDialog.cpp:55 msgid "Network lookup" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:67 +#: src/slic3r/GUI/BonjourDialog.cpp:72 msgid "Address" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:68 +#: src/slic3r/GUI/BonjourDialog.cpp:73 msgid "Hostname" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:69 +#: src/slic3r/GUI/BonjourDialog.cpp:74 msgid "Service name" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:70 +#: src/slic3r/GUI/BonjourDialog.cpp:76 msgid "OctoPrint version" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:188 +#: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:195 +#: src/slic3r/GUI/BonjourDialog.cpp:225 msgid "Finished" msgstr "" -#: src/slic3r/GUI/ButtonsDescription.cpp:15 +#: src/slic3r/GUI/ButtonsDescription.cpp:16 msgid "Buttons And Text Colors Description" msgstr "" -#: src/slic3r/GUI/ButtonsDescription.cpp:40 +#: src/slic3r/GUI/ButtonsDescription.cpp:36 msgid "Value is the same as the system value" msgstr "" -#: src/slic3r/GUI/ButtonsDescription.cpp:57 +#: src/slic3r/GUI/ButtonsDescription.cpp:53 msgid "" "Value was changed and is not equal to the system value or the last saved " "preset" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 msgid "Upgrade" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 msgid "Downgrade" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 msgid "Before roll back" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 msgid "User" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 msgid "Unknown" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39 +msgid "Active" msgstr "" #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +msgid "slic3r version" +msgstr "" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1274 +msgid "print" +msgstr "" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 msgid "filaments" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1278 msgid "printer" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:932 msgid "vendor" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 msgid "version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 msgid "min slic3r version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 msgid "max slic3r version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 msgid "model" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 msgid "variants" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70 +#, possible-c-format +msgid "Incompatible with this %s" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73 msgid "Activate" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99 msgid "Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:92 +#: src/slic3r/GUI/ConfigWizard.cpp:118 msgid "nozzle" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" +#: src/slic3r/GUI/ConfigWizard.cpp:122 +msgid "Alternate nozzles:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" +#: src/slic3r/GUI/ConfigWizard.cpp:188 +msgid "All standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" +#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:3007 +msgid "All" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:433 +#: src/libslic3r/GCode/PreviewData.cpp:162 +msgid "None" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:296 #, possible-c-format -msgid "Welcome to the Slic3r %s" +msgid "Welcome to the %s Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:298 +#, possible-c-format +msgid "Welcome to the %s Configuration Wizard" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:300 msgid "Welcome" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 +#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/GUI_App.cpp:707 #, possible-c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:234 +#: src/slic3r/GUI/ConfigWizard.cpp:306 #, possible-c-format msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." +"Hello, welcome to %s! This %s helps you with the initial configuration; just " +"a few settings and you will be ready to print." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:238 +#: src/slic3r/GUI/ConfigWizard.cpp:311 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" +#: src/slic3r/GUI/ConfigWizard.cpp:342 +#, possible-c-format +msgid "%s Family" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" +#: src/slic3r/GUI/ConfigWizard.cpp:379 +msgid "Custom Printer Setup" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:379 +msgid "Custom Printer" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:381 +msgid "Define a custom printer profile" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:383 +msgid "Custom profile name:" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:407 msgid "Automatic updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:407 msgid "Updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 +#: src/slic3r/GUI/ConfigWizard.cpp:415 src/slic3r/GUI/Preferences.cpp:61 msgid "Check for application updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 +#: src/slic3r/GUI/ConfigWizard.cpp:419 +#, possible-c-format msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " +"If enabled, %s checks for new application versions online. When a new " +"version becomes available, a notification is displayed at the next " "application startup (never during program usage). This is only a " "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 +#: src/slic3r/GUI/ConfigWizard.cpp:425 src/slic3r/GUI/Preferences.cpp:69 msgid "Update built-in Presets automatically" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:429 +#, possible-c-format msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " +"If enabled, %s downloads updates of built-in system presets in the " +"background.These updates are downloaded into a separate temporary location." "When a new preset version becomes available it is offered at application " "startup." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:308 +#: src/slic3r/GUI/ConfigWizard.cpp:432 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:313 +#: src/slic3r/GUI/ConfigWizard.cpp:437 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:320 +#: src/slic3r/GUI/ConfigWizard.cpp:444 msgid "Other Vendors" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" +#: src/slic3r/GUI/ConfigWizard.cpp:446 +#, possible-c-format +msgid "Pick another vendor supported by %s:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:381 +#: src/slic3r/GUI/ConfigWizard.cpp:492 msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 +#: src/slic3r/GUI/ConfigWizard.cpp:492 src/slic3r/GUI/Tab.cpp:1926 msgid "Firmware" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:385 +#: src/slic3r/GUI/ConfigWizard.cpp:496 msgid "Choose the type of firmware used by your printer." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/ConfigWizard.cpp:530 msgid "Bed Shape and Size" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:422 +#: src/slic3r/GUI/ConfigWizard.cpp:533 msgid "Set the shape of your printer's bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:547 msgid "Filament and Nozzle Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:547 msgid "Print Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:452 +#: src/slic3r/GUI/ConfigWizard.cpp:561 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:455 +#: src/slic3r/GUI/ConfigWizard.cpp:564 msgid "Nozzle Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:465 +#: src/slic3r/GUI/ConfigWizard.cpp:574 msgid "Enter the diameter of your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:466 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:469 +#: src/slic3r/GUI/ConfigWizard.cpp:578 msgid "Filament Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:596 msgid "Extruder and Bed Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:596 msgid "Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:503 +#: src/slic3r/GUI/ConfigWizard.cpp:612 msgid "Enter the temperature needed for extruding your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:504 +#: src/slic3r/GUI/ConfigWizard.cpp:613 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:507 +#: src/slic3r/GUI/ConfigWizard.cpp:616 msgid "Extrusion Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 +#: src/slic3r/GUI/ConfigWizard.cpp:617 src/slic3r/GUI/ConfigWizard.cpp:631 msgid "°C" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:517 +#: src/slic3r/GUI/ConfigWizard.cpp:626 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:518 +#: src/slic3r/GUI/ConfigWizard.cpp:627 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:521 +#: src/slic3r/GUI/ConfigWizard.cpp:630 msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:833 +#: src/slic3r/GUI/ConfigWizard.cpp:1093 +msgid "Select all standard printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1096 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:834 +#: src/slic3r/GUI/ConfigWizard.cpp:1097 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:835 +#: src/slic3r/GUI/ConfigWizard.cpp:1098 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" +#: src/slic3r/GUI/ConfigWizard.cpp:1099 src/slic3r/GUI/FirmwareDialog.cpp:147 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 +#: src/slic3r/GUI/ProgressStatusBar.cpp:28 +msgid "Cancel" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" +#: src/slic3r/GUI/ConfigWizard.cpp:1113 +msgid "Prusa FFF Technology Printers" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:909 +#: src/slic3r/GUI/ConfigWizard.cpp:1116 +msgid "Prusa MSLA Technology Printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1185 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:910 +#: src/slic3r/GUI/ConfigWizard.cpp:1186 msgid "Configuration &Assistant" msgstr "" -#: src/slic3r/GUI/Field.cpp:109 +#: src/slic3r/GUI/ConfigWizard.cpp:1188 +msgid "Configuration Wizard" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1189 +msgid "Configuration &Wizard" +msgstr "" + +#: src/slic3r/GUI/Field.cpp:117 msgid "default value" msgstr "" -#: src/slic3r/GUI/Field.cpp:112 +#: src/slic3r/GUI/Field.cpp:120 msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:140 +#: src/slic3r/GUI/Field.cpp:148 #, possible-c-format msgid "%s doesn't support percentage" msgstr "" -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" +#: src/slic3r/GUI/Field.cpp:162 src/slic3r/GUI/Field.cpp:185 +msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:153 +#: src/slic3r/GUI/Field.cpp:167 msgid "Input value is out of range" msgstr "" -#: src/slic3r/GUI/Field.cpp:176 +#: src/slic3r/GUI/Field.cpp:193 #, possible-c-format msgid "" "Do you mean %d%% instead of %d %s?\n" @@ -503,40 +594,35 @@ msgid "" "or NO if you are sure that %d %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:179 +#: src/slic3r/GUI/Field.cpp:196 msgid "Parameter validation" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:133 +#: src/slic3r/GUI/FirmwareDialog.cpp:146 msgid "Flash!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 +#: src/slic3r/GUI/FirmwareDialog.cpp:148 msgid "Flashing in progress. Please do not disconnect the printer!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:245 +#: src/slic3r/GUI/FirmwareDialog.cpp:192 +msgid "Flashing failed" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:273 msgid "Flashing succeeded!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:246 +#: src/slic3r/GUI/FirmwareDialog.cpp:274 msgid "Flashing failed. Please see the avrdude log below." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:247 +#: src/slic3r/GUI/FirmwareDialog.cpp:275 msgid "Flashing cancelled." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, possible-c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 +#: src/slic3r/GUI/FirmwareDialog.cpp:313 #, possible-c-format msgid "" "This firmware hex file does not match the printer model.\n" @@ -547,2013 +633,2615 @@ msgid "" "Please only continue if you are sure this is the right thing to do." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 +#: src/slic3r/GUI/FirmwareDialog.cpp:400 src/slic3r/GUI/FirmwareDialog.cpp:436 +#, possible-c-format msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." +"Multiple %s devices found. Please only connect one at a time for flashing." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" +#: src/slic3r/GUI/FirmwareDialog.cpp:417 +#, possible-c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB " +"connector ..." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:581 +#: src/slic3r/GUI/FirmwareDialog.cpp:530 +#, possible-c-format +msgid "The %s device could not have been found" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:608 #, possible-c-format msgid "Error accessing port at %s: %s" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:690 +#: src/slic3r/GUI/FirmwareDialog.cpp:610 +#, possible-c-format +msgid "Error: %s" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:740 msgid "Firmware flasher" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:712 +#: src/slic3r/GUI/FirmwareDialog.cpp:765 msgid "Firmware image:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:716 +#: src/slic3r/GUI/FirmwareDialog.cpp:768 src/slic3r/GUI/Tab.cpp:1687 +#: src/slic3r/GUI/Tab.cpp:1743 +msgid "Browse" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:770 msgid "Serial port:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:718 +#: src/slic3r/GUI/FirmwareDialog.cpp:772 msgid "Autodetected" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:719 +#: src/slic3r/GUI/FirmwareDialog.cpp:773 msgid "Rescan" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:726 +#: src/slic3r/GUI/FirmwareDialog.cpp:780 msgid "Progress:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:729 +#: src/slic3r/GUI/FirmwareDialog.cpp:783 msgid "Status:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:730 +#: src/slic3r/GUI/FirmwareDialog.cpp:784 msgid "Ready" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" +#: src/slic3r/GUI/FirmwareDialog.cpp:804 +msgid "Advanced: Output log" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:809 +#: src/slic3r/GUI/FirmwareDialog.cpp:815 +#: src/slic3r/GUI/PrintHostDialogs.cpp:160 +msgid "Close" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:863 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:810 +#: src/slic3r/GUI/FirmwareDialog.cpp:864 msgid "Confirmation" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:813 +#: src/slic3r/GUI/FirmwareDialog.cpp:867 msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" +#: src/slic3r/GUI/GLCanvas3D.cpp:720 +msgid "An object outside the print area was detected" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" +#: src/slic3r/GUI/GLCanvas3D.cpp:721 +msgid "A toolpath outside the print area was detected" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" +#: src/slic3r/GUI/GLCanvas3D.cpp:722 +msgid "SLA supports outside the print area were detected" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" +#: src/slic3r/GUI/GLCanvas3D.cpp:723 +msgid "Some objects are not visible when editing supports" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" +#: src/slic3r/GUI/GLCanvas3D.cpp:725 +msgid "" +"An object outside the print area was detected\n" +"Resolve the current problem to continue slicing" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" +#: src/slic3r/GUI/GLCanvas3D.cpp:1694 +msgid "Last frame" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" +#: src/slic3r/GUI/GLCanvas3D.cpp:1698 +msgid "ms" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" +#: src/slic3r/GUI/GLCanvas3D.cpp:3434 +msgid "Add..." msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" +#: src/slic3r/GUI/GLCanvas3D.cpp:3444 src/slic3r/GUI/GUI_ObjectList.cpp:1267 +#: src/slic3r/GUI/Plater.cpp:2933 src/slic3r/GUI/Plater.cpp:2951 +#: src/slic3r/GUI/Tab.cpp:2957 +msgid "Delete" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" +#: src/slic3r/GUI/GLCanvas3D.cpp:3455 src/slic3r/GUI/Plater.cpp:3341 +msgid "Delete all" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" +#: src/slic3r/GUI/GLCanvas3D.cpp:3466 src/slic3r/GUI/KBShortcutsDialog.cpp:135 +msgid "Arrange" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" +#: src/slic3r/GUI/GLCanvas3D.cpp:3480 +msgid "Copy" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" +#: src/slic3r/GUI/GLCanvas3D.cpp:3491 +msgid "Paste" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" +#: src/slic3r/GUI/GLCanvas3D.cpp:3505 +msgid "Add instance" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" +#: src/slic3r/GUI/GLCanvas3D.cpp:3517 +msgid "Remove instance" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 +#: src/slic3r/GUI/GLCanvas3D.cpp:3532 +msgid "Split to objects" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3544 src/slic3r/GUI/GUI_ObjectList.cpp:1122 +msgid "Split to parts" +msgstr "" + +#: src/slic3r/GUI/GLCanvas3D.cpp:3559 +msgid "Layers editing" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 msgid "Rotate lower part upwards" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 msgid "Perform cut" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2276 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 msgid "Cut object:" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3039 msgid "Cut" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2466 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 msgid "Keep upper part" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2467 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 msgid "Keep lower part" msgstr "" -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 +msgid "Place on face" msgstr "" -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 +msgid "Move" msgstr "" -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Position (mm)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Displacement (mm)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:305 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:324 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:342 +#: src/libslic3r/PrintConfig.cpp:3088 +msgid "Rotate" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 +msgid "Rotation (deg)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:231 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:325 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:343 +#: src/libslic3r/PrintConfig.cpp:3103 +msgid "Scale" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 +msgid "Scale (%)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:840 +msgid "Head diameter" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:853 +msgid "Lock supports under new islands" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:857 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1239 +msgid "Remove selected points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:861 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:914 +msgid "Remove all points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:866 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1242 +msgid "Apply changes" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:871 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1243 +msgid "Discard changes" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:879 +msgid "Minimal points distance" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:890 +#: src/libslic3r/PrintConfig.cpp:2524 +msgid "Support points density" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:904 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1245 +msgid "Auto-generate points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:910 +msgid "Manual editing" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:928 +msgid "Clipping of view" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:930 +msgid "Reset direction" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:997 +msgid "SLA Support Points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1024 +msgid "Do you want to save your manually edited support points?" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1025 +msgid "Save changes?" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1168 +msgid "" +"Autogeneration will erase all manually edited points.\n" +"\n" +"Are you sure you want to do it?\n" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1170 src/slic3r/GUI/GUI.cpp:283 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1202 +msgid "SLA gizmo keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1213 +msgid "Note: some shortcuts work in (non)editing mode only." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 +msgid "Left click" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 +msgid "Add point" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 +msgid "Right click" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 +msgid "Remove point" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +msgid "Drag" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 +msgid "Move point" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 +msgid "Add point to selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 +msgid "Remove point from selection" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 +msgid "Select by rectangle" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +msgid "Deselect by rectangle" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1238 +msgid "Select all points" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 +msgid "Mouse wheel" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 +msgid "Move clipping plane" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1241 +msgid "Reset clipping plane" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1244 +msgid "Switch to editing mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" +#: src/slic3r/GUI/GUI.cpp:142 src/slic3r/GUI/Tab.cpp:2816 +msgid "It's impossible to print multi-part object(s) with SLA technology." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" +#: src/slic3r/GUI/GUI.cpp:143 +msgid "Please check and fix your object list." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 +#: src/slic3r/GUI/GUI.cpp:144 src/slic3r/GUI/Tab.cpp:2818 msgid "Attention!" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:691 +#: src/slic3r/GUI/GUI.cpp:277 +msgid "Notice" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:393 +msgid "Changing of an application language" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:401 src/slic3r/GUI/GUI_App.cpp:410 +msgid "Recreating" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:414 +msgid "Loading of current presets" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:422 +msgid "Loading of a mode view" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:504 +msgid "Choose one file (3MF):" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:516 +msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:558 +msgid "Select the language" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:559 +msgid "Language" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:710 +msgid "&Configuration Snapshots" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:710 +msgid "Inspect / activate configuration snapshots" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:711 +msgid "Take Configuration &Snapshot" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:711 +msgid "Capture a configuration snapshot" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:714 +msgid "&Preferences" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:720 +msgid "Application preferences" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:723 src/slic3r/GUI/wxExtensions.cpp:2509 +msgid "Simple" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:723 +msgid "Simple View Mode" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:724 src/slic3r/GUI/GUI_ObjectList.cpp:85 +#: src/slic3r/GUI/GUI_ObjectList.cpp:539 src/slic3r/GUI/Tab.cpp:1030 +#: src/slic3r/GUI/Tab.cpp:1045 src/slic3r/GUI/Tab.cpp:1143 +#: src/slic3r/GUI/Tab.cpp:1146 src/slic3r/GUI/Tab.cpp:1520 +#: src/slic3r/GUI/Tab.cpp:1946 src/slic3r/GUI/Tab.cpp:3461 +#: src/slic3r/GUI/wxExtensions.cpp:2510 src/libslic3r/PrintConfig.cpp:73 +#: src/libslic3r/PrintConfig.cpp:188 src/libslic3r/PrintConfig.cpp:351 +#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:2200 +msgid "Advanced" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:724 +msgid "Advanced View Mode" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:725 src/slic3r/GUI/wxExtensions.cpp:2511 +msgid "Expert" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:725 +msgid "Expert View Mode" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:730 +msgid "Mode" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:730 +#, possible-c-format +msgid "%s View Mode" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:732 +msgid "Change Application &Language" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:734 +msgid "Flash printer &firmware" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:734 +msgid "Upload a firmware image into an Arduino based printer" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:746 +msgid "Taking configuration snapshot" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:746 +msgid "Snapshot name" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:789 +msgid "" +"Switching the language will trigger application restart.\n" +"You will lose content of the plater." +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:791 +msgid "Do you want to proceed?" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:792 +msgid "Language selection" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:811 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " +#: src/slic3r/GUI/GUI_App.cpp:831 +msgid "The presets on the following tabs were modified" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" +#: src/slic3r/GUI/GUI_App.cpp:831 src/slic3r/GUI/Tab.cpp:2804 +msgid "Discard changes and continue anyway?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:712 +#: src/slic3r/GUI/GUI_App.cpp:832 msgid "Unsaved Presets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:77 +#: src/slic3r/GUI/GUI_ObjectList.cpp:531 src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:151 src/libslic3r/PrintConfig.cpp:382 +#: src/libslic3r/PrintConfig.cpp:439 src/libslic3r/PrintConfig.cpp:447 +#: src/libslic3r/PrintConfig.cpp:843 src/libslic3r/PrintConfig.cpp:1027 +#: src/libslic3r/PrintConfig.cpp:1330 src/libslic3r/PrintConfig.cpp:1396 +#: src/libslic3r/PrintConfig.cpp:1577 src/libslic3r/PrintConfig.cpp:2012 +#: src/libslic3r/PrintConfig.cpp:2069 msgid "Layers and Perimeters" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:78 +#: src/slic3r/GUI/GUI_ObjectList.cpp:532 src/slic3r/GUI/Plater.cpp:447 +#: src/slic3r/GUI/Tab.cpp:1034 src/slic3r/GUI/Tab.cpp:1035 +#: src/slic3r/GUI/Tab.cpp:1364 src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:390 src/libslic3r/PrintConfig.cpp:730 +#: src/libslic3r/PrintConfig.cpp:744 src/libslic3r/PrintConfig.cpp:781 +#: src/libslic3r/PrintConfig.cpp:934 src/libslic3r/PrintConfig.cpp:944 +#: src/libslic3r/PrintConfig.cpp:962 src/libslic3r/PrintConfig.cpp:980 +#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:1684 +#: src/libslic3r/PrintConfig.cpp:1701 msgid "Infill" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:79 +#: src/slic3r/GUI/GUI_ObjectList.cpp:533 src/slic3r/GUI/GUI_Preview.cpp:236 +#: src/slic3r/GUI/Tab.cpp:1063 src/slic3r/GUI/Tab.cpp:1064 +#: src/libslic3r/PrintConfig.cpp:335 src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1811 +#: src/libslic3r/PrintConfig.cpp:1819 src/libslic3r/PrintConfig.cpp:1831 +#: src/libslic3r/PrintConfig.cpp:1841 src/libslic3r/PrintConfig.cpp:1849 +#: src/libslic3r/PrintConfig.cpp:1864 src/libslic3r/PrintConfig.cpp:1885 +#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:1912 +#: src/libslic3r/PrintConfig.cpp:1921 src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1941 src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1963 src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:1981 +#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:81 +#: src/slic3r/GUI/GUI_ObjectList.cpp:535 src/slic3r/GUI/Tab.cpp:1123 +#: src/slic3r/GUI/Tab.cpp:1850 src/libslic3r/PrintConfig.cpp:457 +#: src/libslic3r/PrintConfig.cpp:955 src/libslic3r/PrintConfig.cpp:1365 +#: src/libslic3r/PrintConfig.cpp:1693 src/libslic3r/PrintConfig.cpp:1877 +#: src/libslic3r/PrintConfig.cpp:1903 src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2184 msgid "Extruders" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 +msgid "Pad and Support" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:45 +msgid "Add part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:46 +msgid "Add modifier" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:47 +msgid "Add support enforcer" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:48 +msgid "Add support blocker" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:80 src/slic3r/GUI/GUI_ObjectList.cpp:534 +#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1088 +#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:427 +#: src/libslic3r/PrintConfig.cpp:872 src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:1386 src/libslic3r/PrintConfig.cpp:1623 +#: src/libslic3r/PrintConfig.cpp:1672 src/libslic3r/PrintConfig.cpp:1723 +#: src/libslic3r/PrintConfig.cpp:2054 +msgid "Speed" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:82 src/slic3r/GUI/GUI_ObjectList.cpp:536 +#: src/libslic3r/PrintConfig.cpp:417 src/libslic3r/PrintConfig.cpp:524 +#: src/libslic3r/PrintConfig.cpp:831 src/libslic3r/PrintConfig.cpp:963 +#: src/libslic3r/PrintConfig.cpp:1374 src/libslic3r/PrintConfig.cpp:1713 +#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:2043 msgid "Extrusion Width" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:87 src/slic3r/GUI/GUI_ObjectList.cpp:541 +#: src/slic3r/GUI/Plater.cpp:429 src/slic3r/GUI/Tab.cpp:3423 +#: src/slic3r/GUI/Tab.cpp:3424 src/libslic3r/PrintConfig.cpp:2388 +#: src/libslic3r/PrintConfig.cpp:2395 src/libslic3r/PrintConfig.cpp:2404 +#: src/libslic3r/PrintConfig.cpp:2413 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2449 src/libslic3r/PrintConfig.cpp:2456 +#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2477 +#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2505 src/libslic3r/PrintConfig.cpp:2515 +#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2533 msgid "Supports" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 +#: src/slic3r/GUI/GUI_ObjectList.cpp:88 src/slic3r/GUI/GUI_ObjectList.cpp:542 +#: src/slic3r/GUI/Tab.cpp:3451 src/slic3r/GUI/Tab.cpp:3452 +#: src/libslic3r/PrintConfig.cpp:2541 src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2562 src/libslic3r/PrintConfig.cpp:2572 +#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 +#: src/slic3r/GUI/GUI_ObjectList.cpp:203 msgid "Name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:257 #, possible-c-format msgid "Auto-repaired (%d errors):\n" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:264 msgid "degenerate facets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 +#: src/slic3r/GUI/GUI_ObjectList.cpp:265 msgid "edges fixed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 +#: src/slic3r/GUI/GUI_ObjectList.cpp:266 msgid "facets removed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 +#: src/slic3r/GUI/GUI_ObjectList.cpp:267 msgid "facets added" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:268 msgid "facets reversed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:269 msgid "backwards edges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 +#: src/slic3r/GUI/GUI_ObjectList.cpp:277 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 +#: src/slic3r/GUI/GUI_ObjectList.cpp:306 +msgid "Right button click the icon to change the object settings" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:357 src/slic3r/GUI/GUI_ObjectList.cpp:378 +#: src/slic3r/GUI/GUI_ObjectList.cpp:390 src/slic3r/GUI/GUI_ObjectList.cpp:2846 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2856 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2888 src/slic3r/GUI/wxExtensions.cpp:499 +#: src/slic3r/GUI/wxExtensions.cpp:524 +msgid "default" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:362 src/slic3r/GUI/Tab.cpp:1484 +#: src/libslic3r/PrintConfig.cpp:456 msgid "Extruder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 +#: src/slic3r/GUI/GUI_ObjectList.cpp:876 src/slic3r/GUI/GUI_ObjectList.cpp:1151 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1157 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1384 +#, possible-c-format +msgid "Quick Add Settings (%s)" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:939 msgid "Select showing settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1072 msgid "Load" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1102 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1105 msgid "Box" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Cylinder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Sphere" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1077 msgid "Slab" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1130 msgid "Add settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1197 msgid "Change type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1204 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1338 +msgid "Set as a Separated Object" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1210 +msgid "Rename" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1220 +msgid "Fix through the Netfabb" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1229 src/slic3r/GUI/Plater.cpp:2969 +msgid "Export as STL" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1236 +msgid "Change extruder" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1255 src/libslic3r/PrintConfig.cpp:300 +msgid "Default" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1261 +msgid "Select new extruder for the object/part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1338 +msgid "Set as a Separated Objects" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1551 +msgid "Generic" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1694 msgid "You can't delete the last solid part from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 msgid "You can't delete the last intance from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1737 src/slic3r/GUI/Plater.cpp:2306 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1846 msgid "Group manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 msgid "Object manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 msgid "Object Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1872 msgid "Part Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1881 msgid "Part manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1887 msgid "Instance manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +msgid "Object or Instance" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2543 +msgid "Part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2414 +msgid "Unsupported selection" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2415 +#, possible-c-format +msgid "You started your selection with %s Item." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2416 +#, possible-c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2419 +msgid "of a current Object" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2424 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:118 +msgid "Info" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 msgid "You can't change a type of the last solid part of the object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2543 +msgid "Modifier" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2543 +msgid "Support Enforcer" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2543 +msgid "Support Blocker" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2545 +msgid "Type:" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2545 msgid "Select type of part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +msgid "Enter new name" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +msgid "Renaming" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2819 src/slic3r/GUI/Tab.cpp:3304 +#: src/slic3r/GUI/Tab.cpp:3308 msgid "The supplied name is not valid;" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2726 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2820 src/slic3r/GUI/Tab.cpp:3305 msgid "the following characters are not allowed:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2836 +msgid "Set extruder for selected items" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2837 +msgid "Select extruder number for selected objects and/or parts" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2850 +msgid "Select extruder number:" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2851 +msgid "This extruder will be set for selected items" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:40 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:83 +msgid "World coordinates" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:41 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:84 +msgid "Local coordinates" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:60 +msgid "Select coordinate space, in which the transformation will be performed." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:102 msgid "Object Manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 msgid "Object name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:229 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:282 msgid "Position" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:230 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:283 msgid "Rotation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:284 msgid "Scale factors" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:341 msgid "Translate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:640 +msgid "" +"The currently manipulated object is tilted (rotation angles are not " +"multiples of 90°).\n" +"Non-uniform scaling of tilted objects is only possible in the World " +"coordinate system,\n" +"once the rotation is embedded into the object coordinates." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:643 +msgid "" +"This operation is irreversible.\n" +"Do you want to proceed?" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 +msgid "Additional Settings" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:83 +msgid "Remove parameter" +msgstr "" + +#: src/slic3r/GUI/GUI_Preview.cpp:209 msgid "View" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:537 #: src/libslic3r/GCode/PreviewData.cpp:394 msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:469 msgid "Height" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2162 msgid "Width" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:242 +#: src/slic3r/GUI/GUI_Preview.cpp:216 msgid "Volumetric flow rate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:481 src/slic3r/GUI/GUI_Preview.cpp:537 +#: src/slic3r/GUI/GUI_Preview.cpp:713 src/libslic3r/GCode/PreviewData.cpp:404 msgid "Tool" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:535 #: src/libslic3r/GCode/PreviewData.cpp:406 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:247 +#: src/slic3r/GUI/GUI_Preview.cpp:221 msgid "Show" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 msgid "Feature types" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 msgid "Perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 msgid "External perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 msgid "Overhang perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 msgid "Internal infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1712 +#: src/libslic3r/PrintConfig.cpp:1722 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2042 +#: src/libslic3r/PrintConfig.cpp:2053 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 msgid "Bridge infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:871 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1054 #: src/libslic3r/GCode/PreviewData.cpp:171 msgid "Skirt" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1929 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1134 #: src/libslic3r/GCode/PreviewData.cpp:174 msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2076 msgid "Travel" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:270 +#: src/slic3r/GUI/GUI_Preview.cpp:244 msgid "Retractions" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:271 +#: src/slic3r/GUI/GUI_Preview.cpp:245 msgid "Unretractions" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:272 +#: src/slic3r/GUI/GUI_Preview.cpp:246 msgid "Shells" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:571 +msgid "Keyboard Shortcuts" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" +msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" +msgid "Import STL/OBJ/AMF/3MF without config, keep bed" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" +msgid "Load Config from .ini/amf/3mf/gcode" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:740 +#: src/slic3r/GUI/Plater.cpp:3864 src/libslic3r/PrintConfig.cpp:2990 +msgid "Export G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 +msgid "Save project (3MF)" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" +msgid "Load Config from .ini/amf/3mf/gcode and merge" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" +msgid "(Re)slice" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" +msgid "Select Plater Tab" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" +msgid "Select Print Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +msgid "Select Filament Settings Tab" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" +msgid "Select Printer Settings Tab" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " +msgid "Switch to 3D" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " +msgid "Switch to Preview" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 src/slic3r/GUI/Preferences.cpp:10 +msgid "Preferences" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" +#: src/slic3r/GUI/PrintHostDialogs.cpp:135 +msgid "Print host upload queue" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" +msgid "Camera view" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" +msgid "Add Instance of the selected object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 +msgid "Remove Instance of the selected object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +msgid "Show keyboard shortcuts list" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Press to select multiple object or move multiple object with mouse" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 +msgid "Main Shortcuts" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" +msgid "Select All objects" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" +msgid "Delete selected" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" +msgid "Delete All" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" +msgid "Copy to clipboard" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" +msgid "Paste from clipboard" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" +msgid "Gizmo move" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" +msgid "Gizmo scale" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" +msgid "Gizmo rotate" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" +msgid "Gizmo cut" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" +msgid "Gizmo Place face on bed" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" +msgid "Gizmo SLA support points" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" +#, possible-c-format +msgid "" +"Press to snap by 5% in Gizmo scale\n" +"or by 1mm in Gizmo move" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 +msgid "" +"Press to scale or rotate selected objects\n" +"around their own center" msgstr "" #: src/slic3r/GUI/KBShortcutsDialog.cpp:149 +msgid "Zoom to Bed" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 +msgid "Zoom to all objects in scene, if none selected" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +msgid "Zoom to selected object" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 +msgid "Zoom in" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 +msgid "Zoom out" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +msgid "Unselect gizmo, keep object selection" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 msgid "Plater Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 msgid "Arrow Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 msgid "Upper Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 msgid "Arrow Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 msgid "Lower Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "Preview Shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Move current slider thumb Up" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:130 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Move current slider thumb Down" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Arrow Left" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Set upper thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Arrow Right" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Set lower thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:186 +msgid "Add color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:187 +msgid "Delete color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:189 +msgid "Layers Slider Shortcuts" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:36 +msgid "based on Slic3r" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:61 +msgid "" +" - Remember to check for updates at http://github.com/prusa3d/PrusaSlicer/" +"releases" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:163 msgid "Plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" +#: src/slic3r/GUI/MainFrame.cpp:344 +msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:236 +#: src/slic3r/GUI/MainFrame.cpp:344 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" +#: src/slic3r/GUI/MainFrame.cpp:346 +msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:238 +#: src/slic3r/GUI/MainFrame.cpp:346 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" +#: src/slic3r/GUI/MainFrame.cpp:348 +msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:240 +#: src/slic3r/GUI/MainFrame.cpp:348 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:354 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:354 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:357 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:357 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:359 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:359 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:362 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:362 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:256 +#: src/slic3r/GUI/MainFrame.cpp:364 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:367 src/slic3r/GUI/MainFrame.cpp:607 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:367 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:371 msgid "Export plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:371 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:373 +msgid "Export plate as STL including supports" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:373 +msgid "Export current plate as STL including supports" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:375 msgid "Export plate as &AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:375 msgid "Export current plate as AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:378 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:378 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:380 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:380 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:271 +#: src/slic3r/GUI/MainFrame.cpp:382 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:388 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:388 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:394 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:394 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/MainFrame.cpp:400 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:400 +msgid "Repeat last quick slice" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:408 msgid "(Re)Slice &Now" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:408 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:411 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:411 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:414 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" +#: src/slic3r/GUI/MainFrame.cpp:414 +#, possible-c-format +msgid "Quit %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:449 msgid "&Select all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:449 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:452 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:452 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:454 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:459 +msgid "&Copy" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:459 +msgid "Copy selection to clipboard" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:461 +msgid "&Paste" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:461 +msgid "Paste clipboard" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:476 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:476 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:483 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:483 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:485 src/slic3r/GUI/MainFrame.cpp:609 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:485 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:488 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:488 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:494 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:494 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:515 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:515 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" +#: src/slic3r/GUI/MainFrame.cpp:524 +msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:388 +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Iso View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" +#. TRN To be shown in the main menu View->Top +#: src/slic3r/GUI/MainFrame.cpp:527 +msgid "Top" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:390 +#. TRN To be shown in Print Settings "Top solid layers" +#: src/libslic3r/PrintConfig.cpp:2068 +msgctxt "Layers" +msgid "Top" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:527 msgid "Top View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" +#. TRN To be shown in the main menu View->Bottom +#: src/slic3r/GUI/MainFrame.cpp:529 +msgid "Bottom" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:391 +#. TRN To be shown in Print Settings "Bottom solid layers" +#: src/libslic3r/PrintConfig.cpp:150 +msgctxt "Layers" +msgid "Bottom" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:529 msgid "Bottom View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" +#: src/slic3r/GUI/MainFrame.cpp:530 +msgid "Front" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:392 +#: src/slic3r/GUI/MainFrame.cpp:530 msgid "Front View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" +#: src/slic3r/GUI/MainFrame.cpp:531 src/libslic3r/PrintConfig.cpp:1587 +msgid "Rear" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:393 +#: src/slic3r/GUI/MainFrame.cpp:531 msgid "Rear View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" +#: src/slic3r/GUI/MainFrame.cpp:532 +msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:394 +#: src/slic3r/GUI/MainFrame.cpp:532 msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" +#: src/slic3r/GUI/MainFrame.cpp:533 +msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:395 +#: src/slic3r/GUI/MainFrame.cpp:533 msgid "Right View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "Prusa 3D &Drivers" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:547 msgid "Open the Prusa3D drivers download page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" +#: src/slic3r/GUI/MainFrame.cpp:549 +msgid "Software &Releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" +#: src/slic3r/GUI/MainFrame.cpp:549 +msgid "Open the software releases page in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" +#: src/slic3r/GUI/MainFrame.cpp:555 +#, possible-c-format +msgid "%s &Website" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" +#: src/slic3r/GUI/MainFrame.cpp:556 +#, possible-c-format +msgid "Open the %s website in your browser" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:422 +#: src/slic3r/GUI/MainFrame.cpp:562 msgid "System &Info" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:422 +#: src/slic3r/GUI/MainFrame.cpp:562 msgid "Show system information" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:564 msgid "Show &Configuration Folder" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:564 msgid "Show user configuration folder (datadir)" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:426 +#: src/slic3r/GUI/MainFrame.cpp:566 msgid "Report an I&ssue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" +#: src/slic3r/GUI/MainFrame.cpp:566 +#, possible-c-format +msgid "Report an issue on %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" +#: src/slic3r/GUI/MainFrame.cpp:568 +#, possible-c-format +msgid "&About %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:428 +#: src/slic3r/GUI/MainFrame.cpp:568 msgid "Show about dialog" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 +#: src/slic3r/GUI/MainFrame.cpp:571 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:579 msgid "&File" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:440 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:581 msgid "&Window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:442 +#: src/slic3r/GUI/MainFrame.cpp:582 msgid "&View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:585 msgid "&Help" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:472 +#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:3864 +msgid "Export" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:609 +msgid "Mate&rial Settings Tab" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:630 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:644 msgid "No previously sliced file." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 +#: src/slic3r/GUI/MainFrame.cpp:645 src/slic3r/GUI/PrintHostDialogs.cpp:230 msgid "Error" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:650 msgid "Previously sliced file (" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:650 msgid ") not found." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:493 +#: src/slic3r/GUI/MainFrame.cpp:651 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " +#: src/slic3r/GUI/MainFrame.cpp:686 +#, possible-c-format +msgid "Save %s file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:686 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:686 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:548 +#: src/slic3r/GUI/MainFrame.cpp:701 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:713 src/slic3r/GUI/Plater.cpp:2439 +#: src/slic3r/GUI/Plater.cpp:3658 src/slic3r/GUI/Tab.cpp:1163 +#: src/slic3r/GUI/Tab.cpp:3462 msgid "Slicing" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " +#. TRN "Processing input_file_basename" +#: src/slic3r/GUI/MainFrame.cpp:715 +#, possible-c-format +msgid "Processing %s" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:738 msgid " was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:585 +#: src/slic3r/GUI/MainFrame.cpp:740 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:600 +#: src/slic3r/GUI/MainFrame.cpp:755 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:768 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:783 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:783 src/libslic3r/PrintConfig.cpp:3084 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:643 +#: src/slic3r/GUI/MainFrame.cpp:797 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:817 src/slic3r/GUI/MainFrame.cpp:881 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:700 +#: src/slic3r/GUI/MainFrame.cpp:854 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:751 +#: src/slic3r/GUI/MainFrame.cpp:905 #, possible-c-format msgid "%d presets successfully imported." msgstr "" -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" +#: src/slic3r/GUI/MsgDialog.cpp:73 +#, possible-c-format +msgid "%s error" msgstr "" -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" +#: src/slic3r/GUI/MsgDialog.cpp:74 +#, possible-c-format +msgid "%s has encountered an error" msgstr "" -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:126 +#: src/slic3r/GUI/Plater.cpp:138 msgid "Volume" msgstr "" -#: src/slic3r/GUI/Plater.cpp:127 +#: src/slic3r/GUI/Plater.cpp:139 msgid "Facets" msgstr "" -#: src/slic3r/GUI/Plater.cpp:128 +#: src/slic3r/GUI/Plater.cpp:140 msgid "Materials" msgstr "" -#: src/slic3r/GUI/Plater.cpp:131 +#: src/slic3r/GUI/Plater.cpp:143 msgid "Manifold" msgstr "" -#: src/slic3r/GUI/Plater.cpp:174 +#: src/slic3r/GUI/Plater.cpp:193 msgid "Sliced Info" msgstr "" -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1048 msgid "Used Filament (m)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:194 +#: src/slic3r/GUI/Plater.cpp:213 msgid "Used Filament (mm³)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:195 +#: src/slic3r/GUI/Plater.cpp:214 msgid "Used Filament (g)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 +#: src/slic3r/GUI/Plater.cpp:215 +msgid "Used Material (unit)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1063 #: src/libslic3r/PrintConfig.cpp:718 msgid "Cost" msgstr "" -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 +#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1035 +#: src/slic3r/GUI/Plater.cpp:1077 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/Plater.cpp:198 +#: src/slic3r/GUI/Plater.cpp:218 msgid "Number of tool changes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" +#: src/slic3r/GUI/Plater.cpp:292 +msgid "Click to edit preset" msgstr "" -#: src/slic3r/GUI/Plater.cpp:364 +#: src/slic3r/GUI/Plater.cpp:432 msgid "Select what kind of support do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 +#: src/slic3r/GUI/Plater.cpp:434 src/libslic3r/PrintConfig.cpp:1840 +#: src/libslic3r/PrintConfig.cpp:2448 msgid "Support on build plate only" msgstr "" -#: src/slic3r/GUI/Plater.cpp:367 +#: src/slic3r/GUI/Plater.cpp:435 src/slic3r/GUI/Plater.cpp:528 +msgid "For support enforcers only" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:436 msgid "Everywhere" msgstr "" -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 +#: src/slic3r/GUI/Plater.cpp:454 src/slic3r/GUI/Tab.cpp:1060 msgid "Brim" msgstr "" -#: src/slic3r/GUI/Plater.cpp:381 +#: src/slic3r/GUI/Plater.cpp:456 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:390 +#: src/slic3r/GUI/Plater.cpp:464 msgid "Purging volumes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:556 +#: src/slic3r/GUI/Plater.cpp:688 msgid "Print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 +#: src/slic3r/GUI/Plater.cpp:689 src/slic3r/GUI/Tab.cpp:1475 +#: src/slic3r/GUI/Tab.cpp:1476 msgid "Filament" msgstr "" -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" +#: src/slic3r/GUI/Plater.cpp:690 +msgid "SLA print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 +#: src/slic3r/GUI/Plater.cpp:691 src/slic3r/GUI/Preset.cpp:1277 msgid "SLA material" msgstr "" -#: src/slic3r/GUI/Plater.cpp:560 +#: src/slic3r/GUI/Plater.cpp:692 msgid "Printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:588 +#: src/slic3r/GUI/Plater.cpp:738 src/slic3r/GUI/Plater.cpp:3865 msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:607 +#: src/slic3r/GUI/Plater.cpp:741 src/slic3r/GUI/Plater.cpp:2439 +#: src/slic3r/GUI/Plater.cpp:3661 msgid "Slice now" msgstr "" -#: src/slic3r/GUI/Plater.cpp:787 +#: src/slic3r/GUI/Plater.cpp:880 +msgid "Hold Shift to Slice & Export G-code" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:981 #, possible-c-format msgid "%d (%d shells)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:792 +#: src/slic3r/GUI/Plater.cpp:986 #, possible-c-format msgid "Auto-repaired (%d errors)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:795 +#: src/slic3r/GUI/Plater.cpp:989 #, possible-c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" msgstr "" -#: src/slic3r/GUI/Plater.cpp:805 +#: src/slic3r/GUI/Plater.cpp:999 msgid "Yes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:1022 +msgid "Used Material (ml)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1025 +msgid "object(s)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1025 +msgid "supports and pad" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1050 src/slic3r/GUI/Plater.cpp:1065 msgid "objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:1050 src/slic3r/GUI/Plater.cpp:1065 msgid "wipe tower" msgstr "" -#: src/slic3r/GUI/Plater.cpp:855 +#: src/slic3r/GUI/Plater.cpp:1080 msgid "normal mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" +#: src/slic3r/GUI/Plater.cpp:1084 +msgid "stealth mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1304 +#: src/slic3r/GUI/Plater.cpp:1604 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1314 +#: src/slic3r/GUI/Plater.cpp:1614 #, possible-c-format msgid "Processing input file %s\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1366 +#: src/slic3r/GUI/Plater.cpp:1672 msgid "" "This file contains several objects positioned at multiple heights. Instead " "of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 +#: src/slic3r/GUI/Plater.cpp:1675 src/slic3r/GUI/Plater.cpp:1783 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1388 +#: src/slic3r/GUI/Plater.cpp:1726 +msgid "" +"This file cannot be loaded in a simple mode. Do you want to switch to an " +"advanced mode?\n" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1727 +msgid "Detected advanced data" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1760 #, possible-c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1408 +#: src/slic3r/GUI/Plater.cpp:1780 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1424 +#: src/slic3r/GUI/Plater.cpp:1796 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1492 +#: src/slic3r/GUI/Plater.cpp:1894 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1493 +#: src/slic3r/GUI/Plater.cpp:1895 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" +#: src/slic3r/GUI/Plater.cpp:1945 +msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1538 +#: src/slic3r/GUI/Plater.cpp:1952 +msgid "Export AMF file:" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1958 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1702 +#: src/slic3r/GUI/Plater.cpp:2123 msgid "Arranging canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1705 +#: src/slic3r/GUI/Plater.cpp:2126 msgid "Arranging" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1736 +#: src/slic3r/GUI/Plater.cpp:2163 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1740 +#: src/slic3r/GUI/Plater.cpp:2170 msgid "Arranging done." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1782 +#: src/slic3r/GUI/Plater.cpp:2211 msgid "Orientation search canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1787 +#: src/slic3r/GUI/Plater.cpp:2216 msgid "Searching for optimal orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1797 +#: src/slic3r/GUI/Plater.cpp:2278 msgid "Orientation found." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1818 +#: src/slic3r/GUI/Plater.cpp:2298 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 +#: src/slic3r/GUI/Plater.cpp:2424 +msgid "Invalid data" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2433 +msgid "Ready to slice" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2471 src/slic3r/GUI/PrintHostDialogs.cpp:231 msgid "Cancelling" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1962 +#: src/slic3r/GUI/Plater.cpp:2488 msgid "Another export job is currently running." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2215 +#: src/slic3r/GUI/Plater.cpp:2749 msgid "Export failed" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 +#: src/slic3r/GUI/Plater.cpp:2754 src/slic3r/GUI/PrintHostDialogs.cpp:232 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2840 src/slic3r/GUI/Plater.cpp:2852 +#: src/slic3r/GUI/Plater.cpp:2939 msgid "Increase copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2933 src/slic3r/GUI/Plater.cpp:2951 +msgid "Remove the selected object" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2939 msgid "Place one more copy of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2941 msgid "Decrease copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2941 msgid "Remove one copy of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2943 msgid "Set number of copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2943 msgid "Change the number of copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2966 msgid "Reload from Disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2966 msgid "Reload the selected file from Disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" +#: src/slic3r/GUI/Plater.cpp:2969 +msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2981 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2981 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2983 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2983 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2985 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2985 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2988 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2988 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2400 +#: src/slic3r/GUI/Plater.cpp:3008 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 +#: src/slic3r/GUI/Plater.cpp:3008 src/slic3r/GUI/Plater.cpp:3030 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 +#: src/slic3r/GUI/Plater.cpp:3010 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:3010 src/slic3r/GUI/Plater.cpp:3050 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:3013 src/slic3r/GUI/Plater.cpp:3030 +#: src/slic3r/GUI/Plater.cpp:3050 src/libslic3r/PrintConfig.cpp:3108 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2405 +#: src/slic3r/GUI/Plater.cpp:3013 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:3036 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:3036 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2795 +#: src/slic3r/GUI/Plater.cpp:3099 +msgid "3D editor view" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3110 src/slic3r/GUI/Tab.cpp:2294 +msgid "Preview" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3341 +msgid "All objects will be removed, continue ?" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3476 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" +#: src/slic3r/GUI/Plater.cpp:3476 +msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2845 +#: src/slic3r/GUI/Plater.cpp:3588 #, possible-c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/Plater.cpp:3604 #, possible-c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2864 +#: src/slic3r/GUI/Plater.cpp:3607 #, possible-c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Plater.cpp:3633 #, possible-c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2894 +#: src/slic3r/GUI/Plater.cpp:3636 #, possible-c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 +#: src/slic3r/GUI/Plater.cpp:3865 +msgid "Send G-code" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1818 +#: src/slic3r/GUI/Tab.cpp:2019 msgid "General" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:34 +#: src/slic3r/GUI/Preferences.cpp:36 msgid "Remember output directory" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:36 +#: src/slic3r/GUI/Preferences.cpp:38 msgid "" "If this is enabled, Slic3r will prompt the last output directory instead of " "the one containing the input files." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:42 +#: src/slic3r/GUI/Preferences.cpp:44 msgid "Auto-center parts" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:44 +#: src/slic3r/GUI/Preferences.cpp:46 msgid "" "If this is enabled, Slic3r will auto-center objects around the print bed " "center." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:50 +#: src/slic3r/GUI/Preferences.cpp:52 msgid "Background processing" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:52 +#: src/slic3r/GUI/Preferences.cpp:54 msgid "" "If this is enabled, Slic3r will pre-process objects as soon as they're " "loaded in order to save time when exporting G-code." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" +#: src/slic3r/GUI/Preferences.cpp:63 +msgid "" +"If enabled, PrusaSlicer will check for the new versions of itself online. " +"When a new version becomes available a notification is displayed at the next " +"application startup (never during program usage). This is only a " +"notification mechanisms, no automatic installation is done." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:71 +msgid "" +"If enabled, Slic3r downloads updates of built-in system presets in the " +"background. These updates are downloaded into a separate temporary location. " +"When a new preset version becomes available it is offered at application " +"startup." msgstr "" #: src/slic3r/GUI/Preferences.cpp:76 +msgid "Suppress \" - default - \" presets" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:78 msgid "" "Suppress \" - default - \" presets in the Print / Filament / Printer " "selections once there are any other valid presets available." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:82 +#: src/slic3r/GUI/Preferences.cpp:84 msgid "Show incompatible print and filament presets" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:84 +#: src/slic3r/GUI/Preferences.cpp:86 msgid "" "When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:90 +#: src/slic3r/GUI/Preferences.cpp:93 msgid "Use legacy OpenGL 1.1 rendering" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:92 +#: src/slic3r/GUI/Preferences.cpp:95 msgid "" "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " "try to check this checkbox. This will disable the layer height editing and " "anti aliasing, so it is likely better to upgrade your graphics driver." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "Use Retina resolution for the 3D scene" msgstr "" -#: src/slic3r/GUI/Preset.cpp:170 +#: src/slic3r/GUI/Preferences.cpp:105 +msgid "" +"If enabled, the 3D scene will be rendered in Retina resolution. If you are " +"experiencing 3D performance problems, disabling this option may help." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:130 +#, possible-c-format +msgid "You need to restart %s to make the changes effective." +msgstr "" + +#: src/slic3r/GUI/Preset.cpp:207 msgid "modified" msgstr "" -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 +#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:970 +#: src/slic3r/GUI/Preset.cpp:1035 src/slic3r/GUI/Preset.cpp:1067 +#: src/slic3r/GUI/PresetBundle.cpp:1488 src/slic3r/GUI/PresetBundle.cpp:1553 msgid "System presets" msgstr "" -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 +#: src/slic3r/GUI/Preset.cpp:974 src/slic3r/GUI/Preset.cpp:1071 +#: src/slic3r/GUI/PresetBundle.cpp:1558 msgid "User presets" msgstr "" -#: src/slic3r/GUI/Preset.cpp:1157 +#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:240 +msgid "Add a new printer" +msgstr "" + +#: src/slic3r/GUI/Preset.cpp:1275 msgid "filament" msgstr "" +#: src/slic3r/GUI/Preset.cpp:1276 +msgid "SLA print" +msgstr "" + #: src/slic3r/GUI/PresetHints.cpp:28 -#, possible-c-format msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." +"If estimated layer time is below ~%1%s, fan will run at %2%%% and print " +"speed will be reduced so that no less than %3%s are spent on that layer " +"(however, speed will never be reduced below %4%mm/s)." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:32 -#, possible-c-format +#: src/slic3r/GUI/PresetHints.cpp:35 msgid "" "\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." +"If estimated layer time is greater, but still below ~%1%s, fan will run at a " +"proportionally decreasing speed between %2%%% and %3%%%." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:36 +#: src/slic3r/GUI/PresetHints.cpp:39 msgid "" "\n" -"During the other layers, fan " +"During the other layers, fan" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " +#: src/slic3r/GUI/PresetHints.cpp:41 +msgid "Fan" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:43 -#, possible-c-format -msgid "will always run at %d%% " -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, possible-c-format -msgid "except for the first %d layers" +#: src/slic3r/GUI/PresetHints.cpp:47 +msgid "will always run at %1%%%" msgstr "" #: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" +msgid "except for the first %1% layers." msgstr "" #: src/slic3r/GUI/PresetHints.cpp:52 +msgid "except for the first layer." +msgstr "" + +#: src/slic3r/GUI/PresetHints.cpp:54 msgid "will be turned off." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:153 +#: src/slic3r/GUI/PresetHints.cpp:155 msgid "external perimeters" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:162 +#: src/slic3r/GUI/PresetHints.cpp:164 msgid "perimeters" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:171 +#: src/slic3r/GUI/PresetHints.cpp:173 msgid "infill" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:181 +#: src/slic3r/GUI/PresetHints.cpp:183 msgid "solid infill" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:189 +#: src/slic3r/GUI/PresetHints.cpp:191 msgid "top solid infill" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:200 +#: src/slic3r/GUI/PresetHints.cpp:202 msgid "support" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:210 +#: src/slic3r/GUI/PresetHints.cpp:212 msgid "support interface" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:216 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "First layer volumetric" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:216 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Bridging volumetric" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:216 +#: src/slic3r/GUI/PresetHints.cpp:218 msgid "Volumetric" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " +#: src/slic3r/GUI/PresetHints.cpp:219 +msgid "flow rate is maximized" msgstr "" #: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " +msgid "by the print profile maximum" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:226 -#, possible-c-format -msgid "%3.2f mm³/s" +#: src/slic3r/GUI/PresetHints.cpp:223 +msgid "when printing" +msgstr "" + +#: src/slic3r/GUI/PresetHints.cpp:224 +msgid "with a volumetric rate" msgstr "" #: src/slic3r/GUI/PresetHints.cpp:228 #, possible-c-format -msgid " at filament speed %3.2f mm/s." +msgid "%3.2f mm³/s at filament speed %3.2f mm/s." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:247 +#: src/slic3r/GUI/PresetHints.cpp:246 msgid "" "Recommended object thin wall thickness: Not available due to invalid layer " "height." msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:264 +#: src/slic3r/GUI/PresetHints.cpp:262 #, possible-c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " +msgid "Recommended object thin wall thickness for layer height %.2f and" msgstr "" -#: src/slic3r/GUI/PresetHints.cpp:271 +#: src/slic3r/GUI/PresetHints.cpp:268 #, possible-c-format -msgid "%d lines: %.2lf mm" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" +msgid "%d lines: %.2f mm" msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Send G-Code to printer host" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Upload to Printer Host with the following filename:" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:35 +msgid "Start printing after upload" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:42 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" +#: src/slic3r/GUI/PrintHostDialogs.cpp:148 +msgid "ID" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" +#: src/slic3r/GUI/PrintHostDialogs.cpp:149 +msgid "Progress" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" +#: src/slic3r/GUI/PrintHostDialogs.cpp:150 +msgid "Status" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:151 +msgid "Host" msgstr "" #: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 +msgid "Filename" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:153 +msgid "Error Message" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:156 +msgid "Cancel selected" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:158 +msgid "Show error message" +msgstr "" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:197 +#: src/slic3r/GUI/PrintHostDialogs.cpp:228 msgid "Enqueued" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 +#: src/slic3r/GUI/PrintHostDialogs.cpp:229 msgid "Uploading" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 +#: src/slic3r/GUI/PrintHostDialogs.cpp:233 msgid "Completed" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 +#: src/slic3r/GUI/PrintHostDialogs.cpp:271 msgid "Error uploading to print host:" msgstr "" @@ -2565,11 +3253,11 @@ msgstr "" msgid "Time" msgstr "" -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 +#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/WipeTowerDialog.cpp:82 +#: src/libslic3r/PrintConfig.cpp:613 src/libslic3r/PrintConfig.cpp:657 +#: src/libslic3r/PrintConfig.cpp:672 src/libslic3r/PrintConfig.cpp:2268 +#: src/libslic3r/PrintConfig.cpp:2277 src/libslic3r/PrintConfig.cpp:2337 +#: src/libslic3r/PrintConfig.cpp:2344 msgid "s" msgstr "" @@ -2577,215 +3265,227 @@ msgstr "" msgid "Volumetric speed" msgstr "" -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" +#: src/slic3r/GUI/RammingChart.cpp:81 src/libslic3r/PrintConfig.cpp:570 +#: src/libslic3r/PrintConfig.cpp:1210 +msgid "mm³/s" msgstr "" -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 +#: src/slic3r/GUI/SysInfoDialog.cpp:44 +msgid "System Information" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:52 src/libslic3r/PrintConfig.cpp:230 msgid "Compatible printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:50 +#: src/slic3r/GUI/Tab.cpp:53 msgid "Select the printers this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 +#: src/slic3r/GUI/Tab.cpp:58 src/libslic3r/PrintConfig.cpp:245 msgid "Compatible print profiles" msgstr "" -#: src/slic3r/GUI/Tab.cpp:56 +#: src/slic3r/GUI/Tab.cpp:59 msgid "Select the print profiles this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " +#. TRN "Save current Settings" +#: src/slic3r/GUI/Tab.cpp:133 +#, possible-c-format +msgid "Save current %s" msgstr "" -#: src/slic3r/GUI/Tab.cpp:119 +#: src/slic3r/GUI/Tab.cpp:134 msgid "Delete this preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:131 +#: src/slic3r/GUI/Tab.cpp:139 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -#: src/slic3r/GUI/Tab.cpp:824 +#: src/slic3r/GUI/Tab.cpp:918 msgid "It's a default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:825 +#: src/slic3r/GUI/Tab.cpp:919 msgid "It's a system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " +#: src/slic3r/GUI/Tab.cpp:920 +#, possible-c-format +msgid "Current preset is inherited from %s" msgstr "" -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " +#: src/slic3r/GUI/Tab.cpp:921 +msgid "default preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:832 +#: src/slic3r/GUI/Tab.cpp:925 +msgid "It can't be deleted or modified." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:926 msgid "" -"Any modifications should be saved as a new preset inherited from this one. " +"Any modifications should be saved as a new preset inherited from this one." msgstr "" -#: src/slic3r/GUI/Tab.cpp:833 +#: src/slic3r/GUI/Tab.cpp:927 msgid "To do that please specify a new name for the preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:837 +#: src/slic3r/GUI/Tab.cpp:931 msgid "Additional information:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:843 +#: src/slic3r/GUI/Tab.cpp:937 msgid "printer model" msgstr "" -#: src/slic3r/GUI/Tab.cpp:851 +#: src/slic3r/GUI/Tab.cpp:945 msgid "default print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:854 +#: src/slic3r/GUI/Tab.cpp:948 msgid "default filament profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:868 +#: src/slic3r/GUI/Tab.cpp:962 msgid "default SLA material profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:872 +#: src/slic3r/GUI/Tab.cpp:966 msgid "default SLA print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/Tab.cpp:1001 src/slic3r/GUI/Tab.cpp:3417 msgid "Layers and perimeters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 +#: src/slic3r/GUI/Tab.cpp:1002 src/libslic3r/PrintConfig.cpp:56 msgid "Layer height" msgstr "" -#: src/slic3r/GUI/Tab.cpp:924 +#: src/slic3r/GUI/Tab.cpp:1006 msgid "Vertical shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:935 +#: src/slic3r/GUI/Tab.cpp:1017 msgid "Horizontal shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:1018 src/libslic3r/PrintConfig.cpp:1735 msgid "Solid layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:941 +#: src/slic3r/GUI/Tab.cpp:1023 msgid "Quality (slower slicing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:958 +#: src/slic3r/GUI/Tab.cpp:1041 msgid "Reducing printing time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1053 msgid "Skirt and brim" msgstr "" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1070 msgid "Raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:991 +#: src/slic3r/GUI/Tab.cpp:1074 msgid "Options for support material and raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1006 +#: src/slic3r/GUI/Tab.cpp:1089 msgid "Speed for print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1018 +#: src/slic3r/GUI/Tab.cpp:1101 msgid "Speed for non-print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1021 +#: src/slic3r/GUI/Tab.cpp:1104 msgid "Modifiers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1024 +#: src/slic3r/GUI/Tab.cpp:1107 msgid "Acceleration control (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1114 msgid "Autospeed (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1037 +#: src/slic3r/GUI/Tab.cpp:1122 msgid "Multiple Extruders" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1045 +#: src/slic3r/GUI/Tab.cpp:1130 msgid "Ooze prevention" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1062 +#: src/slic3r/GUI/Tab.cpp:1147 msgid "Extrusion width" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1072 +#: src/slic3r/GUI/Tab.cpp:1157 msgid "Overlap" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1075 +#: src/slic3r/GUI/Tab.cpp:1160 msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1078 +#: src/slic3r/GUI/Tab.cpp:1169 msgid "Other" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 +#: src/slic3r/GUI/Tab.cpp:1172 src/slic3r/GUI/Tab.cpp:3465 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1086 +#: src/slic3r/GUI/Tab.cpp:1173 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1088 +#: src/slic3r/GUI/Tab.cpp:1175 msgid "Extruder clearance (mm)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 +#: src/slic3r/GUI/Tab.cpp:1184 src/slic3r/GUI/Tab.cpp:3466 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1191 src/libslic3r/PrintConfig.cpp:1408 msgid "Post-processing scripts" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 +#: src/slic3r/GUI/Tab.cpp:1197 src/slic3r/GUI/Tab.cpp:1198 +#: src/slic3r/GUI/Tab.cpp:1581 src/slic3r/GUI/Tab.cpp:1582 +#: src/slic3r/GUI/Tab.cpp:1991 src/slic3r/GUI/Tab.cpp:1992 +#: src/slic3r/GUI/Tab.cpp:2085 src/slic3r/GUI/Tab.cpp:2086 +#: src/slic3r/GUI/Tab.cpp:3354 src/slic3r/GUI/Tab.cpp:3355 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 +#: src/slic3r/GUI/Tab.cpp:1204 src/slic3r/GUI/Tab.cpp:1589 +#: src/slic3r/GUI/Tab.cpp:1998 src/slic3r/GUI/Tab.cpp:2092 +#: src/slic3r/GUI/Tab.cpp:3362 src/slic3r/GUI/Tab.cpp:3471 msgid "Dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 +#: src/slic3r/GUI/Tab.cpp:1205 src/slic3r/GUI/Tab.cpp:1590 +#: src/slic3r/GUI/Tab.cpp:1999 src/slic3r/GUI/Tab.cpp:2093 +#: src/slic3r/GUI/Tab.cpp:3363 src/slic3r/GUI/Tab.cpp:3472 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format +#: src/slic3r/GUI/Tab.cpp:1251 +#, possible-c-format msgid "" "The Spiral Vase mode requires:\n" "- one perimeter\n" @@ -2797,11 +3497,11 @@ msgid "" "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1168 +#: src/slic3r/GUI/Tab.cpp:1258 msgid "Spiral Vase" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1191 +#: src/slic3r/GUI/Tab.cpp:1281 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -2812,11 +3512,11 @@ msgid "" "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 +#: src/slic3r/GUI/Tab.cpp:1285 src/slic3r/GUI/Tab.cpp:1302 msgid "Wipe Tower" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:1299 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers.\n" @@ -2824,7 +3524,7 @@ msgid "" "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1317 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters\n" @@ -2832,409 +3532,415 @@ msgid "" "Shall I adjust those settings for supports?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1230 +#: src/slic3r/GUI/Tab.cpp:1320 msgid "Support Generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format +#: src/slic3r/GUI/Tab.cpp:1362 msgid "" -" infill pattern is not supposed to work at 100% density.\n" +"The %1% infill pattern is not supposed to work at 100%% density.\n" "\n" "Shall I switch to rectilinear fill pattern?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " +#: src/slic3r/GUI/Tab.cpp:1483 src/libslic3r/PrintConfig.cpp:2005 +msgid "Temperature" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1394 +#: src/slic3r/GUI/Tab.cpp:1489 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1399 +#: src/slic3r/GUI/Tab.cpp:1494 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 +#: src/slic3r/GUI/Tab.cpp:1495 src/libslic3r/PrintConfig.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:2124 msgid "Enable" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1411 +#: src/slic3r/GUI/Tab.cpp:1506 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1412 +#: src/slic3r/GUI/Tab.cpp:1507 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1420 +#: src/slic3r/GUI/Tab.cpp:1515 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Tab.cpp:1521 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1525 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1440 +#: src/slic3r/GUI/Tab.cpp:1535 msgid "Toolchange parameters with single extruder MM printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1455 +#: src/slic3r/GUI/Tab.cpp:1550 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:1568 src/slic3r/GUI/Tab.cpp:1954 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 +#: src/slic3r/GUI/Tab.cpp:1569 src/slic3r/GUI/Tab.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1761 src/libslic3r/PrintConfig.cpp:1776 msgid "Start G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 +#: src/slic3r/GUI/Tab.cpp:1575 src/slic3r/GUI/Tab.cpp:1961 +#: src/libslic3r/PrintConfig.cpp:360 src/libslic3r/PrintConfig.cpp:370 msgid "End G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:1706 src/slic3r/GUI/Tab.cpp:1894 msgid "Test" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1615 +#: src/slic3r/GUI/Tab.cpp:1716 msgid "Could not get a valid Printer Host reference" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1722 src/slic3r/GUI/Tab.cpp:1907 msgid "Success!" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1636 +#: src/slic3r/GUI/Tab.cpp:1737 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1648 +#: src/slic3r/GUI/Tab.cpp:1750 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1649 +#: src/slic3r/GUI/Tab.cpp:1751 msgid "Open CA certificate file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1676 +#: src/slic3r/GUI/Tab.cpp:1779 +#, possible-c-format msgid "" "HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " +" \tOn this system, %s uses HTTPS certificates from the system Certificate " "Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " +" \tTo use a custom CA file, please import your CA file into Certificate " "Store / Keychain." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:1819 src/slic3r/GUI/Tab.cpp:2020 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " +#: src/slic3r/GUI/Tab.cpp:1824 src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:3009 +msgid "Set" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1740 +#: src/slic3r/GUI/Tab.cpp:1846 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1745 +#: src/slic3r/GUI/Tab.cpp:1851 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1773 +#: src/slic3r/GUI/Tab.cpp:1879 msgid "USB/Serial connection" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 +#: src/slic3r/GUI/Tab.cpp:1880 src/libslic3r/PrintConfig.cpp:1616 msgid "Serial port" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1779 +#: src/slic3r/GUI/Tab.cpp:1885 msgid "Rescan serial ports" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1907 msgid "Connection to printer works correctly." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1804 +#: src/slic3r/GUI/Tab.cpp:1910 msgid "Connection failed." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 +#: src/slic3r/GUI/Tab.cpp:1923 src/slic3r/GUI/Tab.cpp:2080 msgid "Print Host upload" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 +#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:129 msgid "Before layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 +#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:1032 msgid "After layer change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 +#: src/slic3r/GUI/Tab.cpp:1979 src/libslic3r/PrintConfig.cpp:2031 msgid "Tool change G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1877 +#: src/slic3r/GUI/Tab.cpp:1985 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1938 +#: src/slic3r/GUI/Tab.cpp:2047 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 +#: src/slic3r/GUI/Tab.cpp:2058 +msgid "Tilt" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2059 +msgid "Tilt time" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2065 src/slic3r/GUI/Tab.cpp:3336 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 +#: src/slic3r/GUI/Tab.cpp:2142 src/slic3r/GUI/Tab.cpp:2215 +#: src/libslic3r/PrintConfig.cpp:1082 src/libslic3r/PrintConfig.cpp:1100 +#: src/libslic3r/PrintConfig.cpp:1118 src/libslic3r/PrintConfig.cpp:1135 +#: src/libslic3r/PrintConfig.cpp:1146 src/libslic3r/PrintConfig.cpp:1157 +#: src/libslic3r/PrintConfig.cpp:1168 msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" +#: src/slic3r/GUI/Tab.cpp:2156 +msgid "Values in this column are for Normal mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" +#: src/slic3r/GUI/Tab.cpp:2157 +msgid "Normal" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" +#: src/slic3r/GUI/Tab.cpp:2162 +msgid "Values in this column are for Stealth mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" +#: src/slic3r/GUI/Tab.cpp:2163 +msgid "Stealth" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Tab.cpp:2171 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2045 +#: src/slic3r/GUI/Tab.cpp:2176 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2052 +#: src/slic3r/GUI/Tab.cpp:2183 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2057 +#: src/slic3r/GUI/Tab.cpp:2188 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 +#: src/slic3r/GUI/Tab.cpp:2237 src/slic3r/GUI/Tab.cpp:2245 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2104 +#: src/slic3r/GUI/Tab.cpp:2246 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 +#: src/slic3r/GUI/Tab.cpp:2259 src/libslic3r/GCode/PreviewData.cpp:475 #, possible-c-format msgid "Extruder %d" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2125 +#: src/slic3r/GUI/Tab.cpp:2266 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2130 +#: src/slic3r/GUI/Tab.cpp:2271 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2133 +#: src/slic3r/GUI/Tab.cpp:2274 msgid "Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2136 +#: src/slic3r/GUI/Tab.cpp:2277 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2149 +#: src/slic3r/GUI/Tab.cpp:2290 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2284 +#: src/slic3r/GUI/Tab.cpp:2449 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2286 +#: src/slic3r/GUI/Tab.cpp:2451 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2565 +#: src/slic3r/GUI/Tab.cpp:2777 #, possible-c-format msgid "Default preset (%s)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2566 +#: src/slic3r/GUI/Tab.cpp:2778 #, possible-c-format msgid "Preset (%s)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2583 +#: src/slic3r/GUI/Tab.cpp:2795 msgid "has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2586 +#: src/slic3r/GUI/Tab.cpp:2798 msgid "is not compatible with printer" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2587 +#: src/slic3r/GUI/Tab.cpp:2799 msgid "is not compatible with print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2589 +#: src/slic3r/GUI/Tab.cpp:2801 msgid "and it has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2593 +#: src/slic3r/GUI/Tab.cpp:2805 msgid "Unsaved Changes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 +#: src/slic3r/GUI/Tab.cpp:2817 msgid "Please check your object list before preset changing." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2699 +#: src/slic3r/GUI/Tab.cpp:2896 +msgid "%1% - Copy" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2919 msgid "The supplied name is empty. It can't be saved." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2704 +#: src/slic3r/GUI/Tab.cpp:2924 msgid "Cannot overwrite a system profile." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2928 msgid "Cannot overwrite an external profile." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2954 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2954 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " +#. TRN remove/delete +#: src/slic3r/GUI/Tab.cpp:2956 +msgid "Are you sure you want to %1% the selected preset?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2736 +#: src/slic3r/GUI/Tab.cpp:2957 msgid "Remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" +#. TRN Remove/Delete +#: src/slic3r/GUI/Tab.cpp:2959 +msgid "%1% Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" +#: src/slic3r/GUI/Tab.cpp:3085 +msgid "LOCKED LOCK" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2869 +#. TRN Description for "LOCKED LOCK" +#: src/slic3r/GUI/Tab.cpp:3087 msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" +"indicates that the settings are the same as the system values for the " +"current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2872 +#: src/slic3r/GUI/Tab.cpp:3089 +msgid "UNLOCKED LOCK" +msgstr "" + +#. TRN Description for "UNLOCKED LOCK" +#: src/slic3r/GUI/Tab.cpp:3091 msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" +"indicates that some settings were changed and are not equal to the system " +"values for the current option group.\n" "Click the UNLOCKED LOCK icon to reset all settings for current option group " "to the system values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2878 +#: src/slic3r/GUI/Tab.cpp:3096 +msgid "WHITE BULLET" +msgstr "" + +#. TRN Description for "WHITE BULLET" +#: src/slic3r/GUI/Tab.cpp:3098 msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" +"for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2882 +#: src/slic3r/GUI/Tab.cpp:3101 +msgid "BACK ARROW" +msgstr "" + +#. TRN Description for "BACK ARROW" +#: src/slic3r/GUI/Tab.cpp:3103 msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" +"indicates that the settings were changed and are not equal to the last saved " +"preset for the current option group.\n" "Click the BACK ARROW icon to reset all settings for the current option group " "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2908 +#: src/slic3r/GUI/Tab.cpp:3128 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2910 +#: src/slic3r/GUI/Tab.cpp:3130 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system values for the current option group.\n" "Click to reset all settings for current option group to the system values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2913 +#: src/slic3r/GUI/Tab.cpp:3133 msgid "WHITE BULLET icon indicates a non system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2916 +#: src/slic3r/GUI/Tab.cpp:3136 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2918 +#: src/slic3r/GUI/Tab.cpp:3138 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -3242,124 +3948,143 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2924 +#: src/slic3r/GUI/Tab.cpp:3144 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2925 +#: src/slic3r/GUI/Tab.cpp:3145 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system value.\n" "Click to reset current value to the system value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2931 +#: src/slic3r/GUI/Tab.cpp:3151 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2932 +#: src/slic3r/GUI/Tab.cpp:3152 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" +#. TRN Preset +#: src/slic3r/GUI/Tab.cpp:3265 +#, possible-c-format +msgid "Save %s as:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3075 +#: src/slic3r/GUI/Tab.cpp:3309 msgid "the following postfix are not allowed:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3079 +#: src/slic3r/GUI/Tab.cpp:3313 msgid "The supplied name is not available." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3092 +#: src/slic3r/GUI/Tab.cpp:3326 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3328 src/slic3r/GUI/Tab.cpp:3419 msgid "Layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3098 +#: src/slic3r/GUI/Tab.cpp:3332 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3183 +#: src/slic3r/GUI/Tab.cpp:3427 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3188 +#: src/slic3r/GUI/Tab.cpp:3432 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3196 +#: src/slic3r/GUI/Tab.cpp:3442 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3200 +#: src/slic3r/GUI/Tab.cpp:3447 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 +#: src/slic3r/GUI/Tab.cpp:3509 +msgid "Head penetration should not be greater than the head width." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3510 +msgid "Invalid Head penetration" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3522 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3523 +msgid "Invalid pinhead diameter" +msgstr "" + +#: src/slic3r/GUI/Tab.hpp:318 src/slic3r/GUI/Tab.hpp:411 msgid "Print Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:311 +#: src/slic3r/GUI/Tab.hpp:337 msgid "Filament Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:344 +#: src/slic3r/GUI/Tab.hpp:372 msgid "Printer Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:367 +#: src/slic3r/GUI/Tab.hpp:396 msgid "Material Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:393 +#: src/slic3r/GUI/Tab.hpp:423 msgid "Save preset" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:30 msgid "Update available" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" +#: src/slic3r/GUI/UpdateDialogs.cpp:30 +#, possible-c-format +msgid "New version of %s is available" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:35 +#: src/slic3r/GUI/UpdateDialogs.cpp:37 msgid "To download, follow the link below." msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:42 +#: src/slic3r/GUI/UpdateDialogs.cpp:45 msgid "Current version:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:44 +#: src/slic3r/GUI/UpdateDialogs.cpp:47 msgid "New version:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:52 +#: src/slic3r/GUI/UpdateDialogs.cpp:55 msgid "Don't notify about new releases any more" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 +#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:168 msgid "Configuration update" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 +#: src/slic3r/GUI/UpdateDialogs.cpp:73 msgid "Configuration update is available" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:73 +#: src/slic3r/GUI/UpdateDialogs.cpp:76 msgid "" "Would you like to install it?\n" "\n" @@ -3369,47 +4094,51 @@ msgid "" "Updated configuration bundles:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "" - #: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 #, possible-c-format -msgid "This Slic3r PE version: %s" +msgid "%s incompatibility" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:126 +#: src/slic3r/GUI/UpdateDialogs.cpp:113 +#, possible-c-format +msgid "%s configuration is incompatible" +msgstr "" + +#: src/slic3r/GUI/UpdateDialogs.cpp:118 +#, possible-c-format +msgid "" +"This version of %s is not compatible with currently installed configuration " +"bundles.\n" +"This probably happened as a result of running an older %s after using a " +"newer one.\n" +"\n" +"You may either exit %s and try again with a newer version, or you may re-run " +"the initial configuration. Doing so will create a backup snapshot of the " +"existing configuration before installing files compatible with this %s.\n" +msgstr "" + +#: src/slic3r/GUI/UpdateDialogs.cpp:127 +#, possible-c-format +msgid "This %s version: %s" +msgstr "" + +#: src/slic3r/GUI/UpdateDialogs.cpp:132 msgid "Incompatible bundles:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" +#: src/slic3r/GUI/UpdateDialogs.cpp:148 +#, possible-c-format +msgid "Exit %s" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:145 +#: src/slic3r/GUI/UpdateDialogs.cpp:151 msgid "Re-configure" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:166 +#: src/slic3r/GUI/UpdateDialogs.cpp:172 #, possible-c-format msgid "" -"Slic3r PE now uses an updated configuration structure.\n" +"%s now uses an updated configuration structure.\n" "\n" "So called 'System presets' have been introduced, which hold the built-in " "default settings for various printers. These System presets cannot be " @@ -3422,15 +4151,15 @@ msgid "" "choose whether to enable automatic preset updates." msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:182 +#: src/slic3r/GUI/UpdateDialogs.cpp:188 msgid "For more information please visit our wiki page:" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 msgid "Ramming customization" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" "extruder MM printer. Its purpose is to properly shape the end of the " @@ -3443,63 +4172,63 @@ msgid "" "jams, extruder wheel grinding into filament etc." msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 msgid "Total ramming time" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 msgid "Total rammed volume" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 msgid "Ramming line width" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 msgid "Ramming line spacing" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 msgid "Wipe tower - Purging volume adjustment" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 msgid "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 msgid "Extruder changed to" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 msgid "unloaded" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 msgid "loaded" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 msgid "Tool #" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 msgid "Volume to purge (mm³) when the filament is being" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 msgid "From" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 msgid "" "Switching to simple settings will discard changes done in the advanced " "mode!\n" @@ -3507,57 +4236,96 @@ msgid "" "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show simplified settings" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show advanced settings" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:65 +#: src/slic3r/GUI/wxExtensions.cpp:400 +msgid "Instances" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:407 src/slic3r/GUI/wxExtensions.cpp:474 +#, possible-c-format +msgid "Instance %d" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:2462 +#, possible-c-format +msgid "Switch to the %s mode" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:2463 +#, possible-c-format +msgid "Current mode is %s" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "" + +#: src/slic3r/Utils/OctoPrint.cpp:69 #, possible-c-format msgid "Mismatched type of print host: %s" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:80 +#: src/slic3r/Utils/OctoPrint.cpp:84 msgid "Connection to OctoPrint works correctly." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Could not connect to OctoPrint" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." +#: src/slic3r/Utils/OctoPrint.cpp:195 +msgid "Connection to Prusa SL1 works correctly." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:186 +#: src/slic3r/Utils/OctoPrint.cpp:200 msgid "Could not connect to Prusa SLA" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:571 +#: src/slic3r/Utils/PresetUpdater.cpp:583 #, possible-c-format msgid "requires min. %s and max. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:576 +#: src/slic3r/Utils/PresetUpdater.cpp:588 #, possible-c-format msgid "requires min. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:578 +#: src/slic3r/Utils/PresetUpdater.cpp:590 #, possible-c-format msgid "requires max. %s" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:235 @@ -3565,7 +4333,7 @@ msgid "Failed loading the input model." msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" +msgid "Repairing model by the Netfabb service" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:248 @@ -3573,8 +4341,8 @@ msgid "Mesh repair failed." msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:263 @@ -3583,124 +4351,268 @@ msgstr "" msgid "Saving mesh into the 3MF container failed." msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:334 +#: src/slic3r/Utils/FixModelByWin10.cpp:340 msgid "Model fixing" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:335 +#: src/slic3r/Utils/FixModelByWin10.cpp:341 msgid "Exporting model..." msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:357 +#: src/slic3r/Utils/FixModelByWin10.cpp:368 msgid "Export of a temporary 3mf file failed" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:372 +#: src/slic3r/Utils/FixModelByWin10.cpp:383 msgid "Import of the repaired 3mf file failed" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:375 +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 msgid "Model repair finished" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:379 +#: src/slic3r/Utils/FixModelByWin10.cpp:406 msgid "Model repair canceled" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 msgid "Model repaired successfully" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model Repair by the Netfabb service" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model repair failed: \n" msgstr "" -#: src/libslic3r/Print.cpp:1175 +#: src/libslic3r/Zipper.cpp:35 +msgid "undefined error" +msgstr "" + +#: src/libslic3r/Zipper.cpp:37 +msgid "too many files" +msgstr "" + +#: src/libslic3r/Zipper.cpp:39 +msgid "file too large" +msgstr "" + +#: src/libslic3r/Zipper.cpp:41 +msgid "unsupported method" +msgstr "" + +#: src/libslic3r/Zipper.cpp:43 +msgid "unsupported encryption" +msgstr "" + +#: src/libslic3r/Zipper.cpp:45 +msgid "unsupported feature" +msgstr "" + +#: src/libslic3r/Zipper.cpp:47 +msgid "failed finding central directory" +msgstr "" + +#: src/libslic3r/Zipper.cpp:49 +msgid "not a ZIP archive" +msgstr "" + +#: src/libslic3r/Zipper.cpp:51 +msgid "invalid header or archive is corrupted" +msgstr "" + +#: src/libslic3r/Zipper.cpp:53 +msgid "unsupported multidisk archive" +msgstr "" + +#: src/libslic3r/Zipper.cpp:55 +msgid "decompression failed or archive is corrupted" +msgstr "" + +#: src/libslic3r/Zipper.cpp:57 +msgid "compression failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:59 +msgid "unexpected decompressed size" +msgstr "" + +#: src/libslic3r/Zipper.cpp:61 +msgid "CRC-32 check failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:63 +msgid "unsupported central directory size" +msgstr "" + +#: src/libslic3r/Zipper.cpp:65 +msgid "allocation failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:67 +msgid "file open failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:69 +msgid "file create failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:71 +msgid "file write failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:73 +msgid "file read failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:75 +msgid "file close failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:77 +msgid "file seek failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:79 +msgid "file stat failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:81 +msgid "invalid parameter" +msgstr "" + +#: src/libslic3r/Zipper.cpp:83 +msgid "invalid filename" +msgstr "" + +#: src/libslic3r/Zipper.cpp:85 +msgid "buffer too small" +msgstr "" + +#: src/libslic3r/Zipper.cpp:87 +msgid "internal error" +msgstr "" + +#: src/libslic3r/Zipper.cpp:89 +msgid "file not found" +msgstr "" + +#: src/libslic3r/Zipper.cpp:91 +msgid "archive is too large" +msgstr "" + +#: src/libslic3r/Zipper.cpp:93 +msgid "validation failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:95 +msgid "write calledback failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:105 +msgid "Error with zip archive" +msgstr "" + +#: src/libslic3r/Print.cpp:1135 msgid "All objects are outside of the print volume." msgstr "" -#: src/libslic3r/Print.cpp:1201 +#: src/libslic3r/Print.cpp:1162 msgid "Some objects are too close; your extruder will collide with them." msgstr "" -#: src/libslic3r/Print.cpp:1216 +#: src/libslic3r/Print.cpp:1177 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" -#: src/libslic3r/Print.cpp:1226 +#: src/libslic3r/Print.cpp:1187 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "" -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1189 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." msgstr "" -#: src/libslic3r/Print.cpp:1234 +#: src/libslic3r/Print.cpp:1195 msgid "" "All extruders must have the same diameter for single extruder multimaterial " "printer." msgstr "" -#: src/libslic3r/Print.cpp:1239 +#: src/libslic3r/Print.cpp:1200 msgid "" "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " "and Repetier G-code flavors." msgstr "" -#: src/libslic3r/Print.cpp:1241 +#: src/libslic3r/Print.cpp:1202 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -#: src/libslic3r/Print.cpp:1253 +#: src/libslic3r/Print.cpp:1223 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" +"layer heights" msgstr "" -#: src/libslic3r/Print.cpp:1255 +#: src/libslic3r/Print.cpp:1225 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" msgstr "" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1227 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" msgstr "" -#: src/libslic3r/Print.cpp:1259 +#: src/libslic3r/Print.cpp:1229 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." msgstr "" -#: src/libslic3r/Print.cpp:1281 +#: src/libslic3r/Print.cpp:1258 msgid "" "The Wipe tower is only supported if all objects have the same layer height " "profile" msgstr "" -#: src/libslic3r/Print.cpp:1290 +#: src/libslic3r/Print.cpp:1268 msgid "The supplied settings will cause an empty print." msgstr "" -#: src/libslic3r/Print.cpp:1307 +#: src/libslic3r/Print.cpp:1285 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" -#: src/libslic3r/Print.cpp:1316 +#: src/libslic3r/Print.cpp:1294 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " @@ -3708,13 +4620,13 @@ msgid "" "same diameter." msgstr "" -#: src/libslic3r/Print.cpp:1324 +#: src/libslic3r/Print.cpp:1302 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers " "need to be synchronized with the object layers." msgstr "" -#: src/libslic3r/Print.cpp:1328 +#: src/libslic3r/Print.cpp:1306 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " @@ -3722,79 +4634,197 @@ msgid "" "set to 0)." msgstr "" -#: src/libslic3r/Print.cpp:1335 +#: src/libslic3r/Print.cpp:1313 msgid "first_layer_height" msgstr "" -#: src/libslic3r/Print.cpp:1350 +#: src/libslic3r/Print.cpp:1328 msgid "First layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/Print.cpp:1354 +#: src/libslic3r/Print.cpp:1332 msgid "Layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 +#: src/libslic3r/Print.cpp:1476 +msgid "Infilling layers" +msgstr "" + +#: src/libslic3r/Print.cpp:1484 +msgid "Generating skirt" +msgstr "" + +#: src/libslic3r/Print.cpp:1492 +msgid "Generating brim" +msgstr "" + +#: src/libslic3r/Print.cpp:1520 +msgid "Exporting G-code" +msgstr "" + +#: src/libslic3r/Print.cpp:1524 +msgid "Generating G-code" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:57 +msgid "Slicing model" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:58 src/libslic3r/SLAPrint.cpp:819 +msgid "Generating support points" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:59 +msgid "Generating support tree" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:60 +msgid "Generating pad" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:61 +msgid "Slicing supports" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:78 +msgid "Merging slices and calculating statistics" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:79 +msgid "Rasterizing layers" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:622 +msgid "" +"Cannot proceed without support points! Add support points or disable support " +"generation." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:634 +msgid "Elevation is too low for object." +msgstr "" + +#. TRN To be shown at the status bar on SLA slicing error. +#: src/libslic3r/SLAPrint.cpp:719 +msgid "Slicing had to be stopped due to an internal error." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:867 src/libslic3r/SLAPrint.cpp:877 +#: src/libslic3r/SLAPrint.cpp:925 +msgid "Visualizing supports" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:1463 +msgid "Slicing done" +msgstr "" + +#: src/libslic3r/PrintBase.cpp:65 +msgid "Failed processing of the output_filename_format template." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:43 src/libslic3r/PrintConfig.cpp:44 msgid "Printer technology" msgstr "" -#: src/libslic3r/PrintConfig.cpp:41 +#: src/libslic3r/PrintConfig.cpp:51 msgid "Bed shape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:48 +#: src/libslic3r/PrintConfig.cpp:58 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:65 msgid "Max print height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:66 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." msgstr "" -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" +#: src/libslic3r/PrintConfig.cpp:72 +msgid "Slice gap closing radius" msgstr "" #: src/libslic3r/PrintConfig.cpp:74 msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "Hostname, IP or URL" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:83 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:89 +msgid "API Key / Password" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:90 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:96 +msgid "HTTPS CA File" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:97 +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:112 +msgid "Avoid crossing perimeters" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:113 +msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " "feature slows down both the print and the G-code generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 +#: src/libslic3r/PrintConfig.cpp:120 src/libslic3r/PrintConfig.cpp:2002 msgid "Other layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:83 +#: src/libslic3r/PrintConfig.cpp:121 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:86 +#: src/libslic3r/PrintConfig.cpp:123 msgid "Bed temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:130 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " "as [layer_num] and [layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:140 msgid "Between objects G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:141 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -3804,73 +4834,70 @@ msgid "" "S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:116 +#: src/libslic3r/PrintConfig.cpp:152 msgid "Number of solid layers to generate on bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:153 msgid "Bottom solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:123 +#: src/libslic3r/PrintConfig.cpp:158 msgid "Bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:124 +#: src/libslic3r/PrintConfig.cpp:159 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 +#: src/libslic3r/PrintConfig.cpp:161 src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:937 +#: src/libslic3r/PrintConfig.cpp:1106 src/libslic3r/PrintConfig.cpp:1159 +#: src/libslic3r/PrintConfig.cpp:1170 src/libslic3r/PrintConfig.cpp:1359 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:133 +#: src/libslic3r/PrintConfig.cpp:167 msgid "Bridging angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:135 +#: src/libslic3r/PrintConfig.cpp:169 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:172 src/libslic3r/PrintConfig.cpp:734 +#: src/libslic3r/PrintConfig.cpp:1595 src/libslic3r/PrintConfig.cpp:1605 +#: src/libslic3r/PrintConfig.cpp:1833 src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:2171 src/libslic3r/PrintConfig.cpp:2488 +#: src/libslic3r/PrintConfig.cpp:2597 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:178 msgid "Bridges fan speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:146 +#: src/libslic3r/PrintConfig.cpp:179 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "" -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 +#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:746 +#: src/libslic3r/PrintConfig.cpp:1179 src/libslic3r/PrintConfig.cpp:1242 +#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:2285 +#: src/libslic3r/PrintConfig.cpp:2527 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:155 +#: src/libslic3r/PrintConfig.cpp:187 msgid "Bridge flow ratio" msgstr "" -#: src/libslic3r/PrintConfig.cpp:157 +#: src/libslic3r/PrintConfig.cpp:189 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -3878,83 +4905,83 @@ msgid "" "before tweaking this." msgstr "" -#: src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:199 msgid "Bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:170 +#: src/libslic3r/PrintConfig.cpp:201 msgid "Speed for printing bridges." msgstr "" -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:202 src/libslic3r/PrintConfig.cpp:578 +#: src/libslic3r/PrintConfig.cpp:586 src/libslic3r/PrintConfig.cpp:595 +#: src/libslic3r/PrintConfig.cpp:603 src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:649 src/libslic3r/PrintConfig.cpp:875 +#: src/libslic3r/PrintConfig.cpp:1002 src/libslic3r/PrintConfig.cpp:1088 +#: src/libslic3r/PrintConfig.cpp:1124 src/libslic3r/PrintConfig.cpp:1137 +#: src/libslic3r/PrintConfig.cpp:1148 src/libslic3r/PrintConfig.cpp:1201 +#: src/libslic3r/PrintConfig.cpp:1260 src/libslic3r/PrintConfig.cpp:1388 +#: src/libslic3r/PrintConfig.cpp:1562 src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1966 src/libslic3r/PrintConfig.cpp:2078 msgid "mm/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:209 msgid "Brim width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:179 +#: src/libslic3r/PrintConfig.cpp:210 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:217 msgid "Clip multi-part objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:218 msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " +"When printing multi-material objects, this settings will make Slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:196 +#: src/libslic3r/PrintConfig.cpp:225 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " +#: src/libslic3r/PrintConfig.cpp:226 +msgid "Heights at which a filament change is to occur." msgstr "" -#: src/libslic3r/PrintConfig.cpp:207 +#: src/libslic3r/PrintConfig.cpp:236 msgid "Compatible printers condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:237 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:220 +#: src/libslic3r/PrintConfig.cpp:251 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:221 +#: src/libslic3r/PrintConfig.cpp:252 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:269 msgid "Complete individual objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:270 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -3962,114 +4989,114 @@ msgid "" "warn and prevent you from extruder collisions, but beware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:278 msgid "Enable auto cooling" msgstr "" -#: src/libslic3r/PrintConfig.cpp:246 +#: src/libslic3r/PrintConfig.cpp:279 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." msgstr "" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/libslic3r/PrintConfig.cpp:284 msgid "Cooling tube position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " +#: src/libslic3r/PrintConfig.cpp:285 +msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:292 msgid "Cooling tube length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " +#: src/libslic3r/PrintConfig.cpp:293 +msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:301 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:281 +#: src/libslic3r/PrintConfig.cpp:310 msgid "Default filament profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:282 +#: src/libslic3r/PrintConfig.cpp:311 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:317 msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:318 src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2377 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:324 msgid "Disable fan for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:294 +#: src/libslic3r/PrintConfig.cpp:325 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." msgstr "" -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 +#: src/libslic3r/PrintConfig.cpp:327 src/libslic3r/PrintConfig.cpp:947 +#: src/libslic3r/PrintConfig.cpp:1460 src/libslic3r/PrintConfig.cpp:1645 +#: src/libslic3r/PrintConfig.cpp:1706 src/libslic3r/PrintConfig.cpp:1869 +#: src/libslic3r/PrintConfig.cpp:1914 msgid "layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:334 msgid "Don't support bridges" msgstr "" -#: src/libslic3r/PrintConfig.cpp:306 +#: src/libslic3r/PrintConfig.cpp:336 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:342 msgid "Distance between copies" msgstr "" -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:343 msgid "Distance used for the auto-arrange feature of the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:322 +#: src/libslic3r/PrintConfig.cpp:350 msgid "Elephant foot compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:324 +#: src/libslic3r/PrintConfig.cpp:352 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -#: src/libslic3r/PrintConfig.cpp:334 +#: src/libslic3r/PrintConfig.cpp:361 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." msgstr "" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:371 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode. Note that you can use placeholder variables for all " @@ -4077,52 +5104,62 @@ msgid "" "extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:356 +#: src/libslic3r/PrintConfig.cpp:381 msgid "Ensure vertical shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:358 +#: src/libslic3r/PrintConfig.cpp:383 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" +#: src/libslic3r/PrintConfig.cpp:389 +msgid "Top fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:367 +#: src/libslic3r/PrintConfig.cpp:391 msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." +"Fill pattern for top infill. This only affects the top visible layer, and " +"not its adjacent solid shells." msgstr "" -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:797 +#: src/libslic3r/PrintConfig.cpp:1947 msgid "Rectilinear" msgstr "" -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:803 msgid "Concentric" msgstr "" -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Hilbert Curve" msgstr "" -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 +#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:808 msgid "Archimedean Chords" msgstr "" -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:403 src/libslic3r/PrintConfig.cpp:809 msgid "Octagram Spiral" msgstr "" -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 +#: src/libslic3r/PrintConfig.cpp:410 +msgid "Bottom fill pattern" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:411 +msgid "" +"Fill pattern for bottom infill. This only affects the bottom external " +"visible layer, and not its adjacent solid shells." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:416 src/libslic3r/PrintConfig.cpp:426 msgid "External perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:418 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -4130,56 +5167,56 @@ msgid "" "(for example 200%), it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 +#: src/libslic3r/PrintConfig.cpp:421 src/libslic3r/PrintConfig.cpp:836 +#: src/libslic3r/PrintConfig.cpp:968 src/libslic3r/PrintConfig.cpp:1379 +#: src/libslic3r/PrintConfig.cpp:1717 src/libslic3r/PrintConfig.cpp:1890 +#: src/libslic3r/PrintConfig.cpp:2048 msgid "mm or % (leave 0 for default)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:399 +#: src/libslic3r/PrintConfig.cpp:428 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 +#: src/libslic3r/PrintConfig.cpp:431 src/libslic3r/PrintConfig.cpp:857 +#: src/libslic3r/PrintConfig.cpp:1676 src/libslic3r/PrintConfig.cpp:1727 +#: src/libslic3r/PrintConfig.cpp:1933 src/libslic3r/PrintConfig.cpp:2060 msgid "mm/s or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:438 msgid "External perimeters first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:411 +#: src/libslic3r/PrintConfig.cpp:440 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:418 +#: src/libslic3r/PrintConfig.cpp:446 msgid "Extra perimeters if needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:420 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:448 +#, possible-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " "keeps adding perimeters, until more than 70% of the loop immediately above " "is supported." msgstr "" -#: src/libslic3r/PrintConfig.cpp:431 +#: src/libslic3r/PrintConfig.cpp:458 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " "extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:444 +#: src/libslic3r/PrintConfig.cpp:470 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -4187,30 +5224,30 @@ msgid "" "extruder can peek before colliding with other printed objects." msgstr "" -#: src/libslic3r/PrintConfig.cpp:455 +#: src/libslic3r/PrintConfig.cpp:480 msgid "Radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:481 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " "check for collisions and to display the graphical preview in the plater." msgstr "" -#: src/libslic3r/PrintConfig.cpp:467 +#: src/libslic3r/PrintConfig.cpp:491 msgid "Extruder Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 +#: src/libslic3r/PrintConfig.cpp:492 src/libslic3r/PrintConfig.cpp:552 msgid "This is only used in the Slic3r interface as a visual help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:475 +#: src/libslic3r/PrintConfig.cpp:498 msgid "Extruder offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:476 +#: src/libslic3r/PrintConfig.cpp:499 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -4218,21 +5255,21 @@ msgid "" "coordinates (they will be subtracted from the XY coordinate)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:486 +#: src/libslic3r/PrintConfig.cpp:508 msgid "Extrusion axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:487 +#: src/libslic3r/PrintConfig.cpp:509 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:493 +#: src/libslic3r/PrintConfig.cpp:514 msgid "Extrusion multiplier" msgstr "" -#: src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:515 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -4240,11 +5277,11 @@ msgid "" "more, check filament diameter and your firmware E steps." msgstr "" -#: src/libslic3r/PrintConfig.cpp:503 +#: src/libslic3r/PrintConfig.cpp:523 msgid "Default extrusion width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:505 +#: src/libslic3r/PrintConfig.cpp:525 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -4253,131 +5290,127 @@ msgid "" "height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:509 +#: src/libslic3r/PrintConfig.cpp:529 msgid "mm or % (leave 0 for auto)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:515 +#: src/libslic3r/PrintConfig.cpp:534 msgid "Keep fan always on" msgstr "" -#: src/libslic3r/PrintConfig.cpp:516 +#: src/libslic3r/PrintConfig.cpp:535 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." msgstr "" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:540 msgid "Enable fan if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:541 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " "maximum speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 +#: src/libslic3r/PrintConfig.cpp:543 src/libslic3r/PrintConfig.cpp:1663 msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:534 +#: src/libslic3r/PrintConfig.cpp:551 msgid "Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:541 +#: src/libslic3r/PrintConfig.cpp:557 msgid "Filament notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:542 +#: src/libslic3r/PrintConfig.cpp:558 msgid "You can put your notes regarding the filament here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 +#: src/libslic3r/PrintConfig.cpp:566 src/libslic3r/PrintConfig.cpp:1207 msgid "Max volumetric speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:567 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " "speed. Set to zero for no limit." msgstr "" -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:562 +#: src/libslic3r/PrintConfig.cpp:576 msgid "Loading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " +#: src/libslic3r/PrintConfig.cpp:577 +msgid "Speed used for loading the filament on the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:571 +#: src/libslic3r/PrintConfig.cpp:584 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " +#: src/libslic3r/PrintConfig.cpp:585 +msgid "Speed used at the very beginning of loading phase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:580 +#: src/libslic3r/PrintConfig.cpp:592 msgid "Unloading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:581 +#: src/libslic3r/PrintConfig.cpp:593 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " +"initial part of unloading just after ramming)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:601 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:602 msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " +"Speed used for unloading the tip of the filament immediately after ramming." msgstr "" -#: src/libslic3r/PrintConfig.cpp:599 +#: src/libslic3r/PrintConfig.cpp:609 msgid "Delay after unloading" msgstr "" -#: src/libslic3r/PrintConfig.cpp:600 +#: src/libslic3r/PrintConfig.cpp:610 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " +"original dimensions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:610 +#: src/libslic3r/PrintConfig.cpp:619 msgid "Number of cooling moves" msgstr "" -#: src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:620 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " +"Specify desired number of these moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:620 +#: src/libslic3r/PrintConfig.cpp:628 msgid "Speed of the first cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " +#: src/libslic3r/PrintConfig.cpp:629 +msgid "Cooling moves are gradually accelerating beginning at this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:636 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:637 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " @@ -4386,62 +5419,62 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:641 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:647 msgid "Speed of the last cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " +#: src/libslic3r/PrintConfig.cpp:648 +msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:655 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:656 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:663 msgid "Ramming parameters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:664 msgid "" "This string is edited by RammingDialog and contains ramming specific " -"parameters " +"parameters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:670 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:671 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -#: src/libslic3r/PrintConfig.cpp:677 +#: src/libslic3r/PrintConfig.cpp:679 msgid "" "Enter your filament diameter here. Good precision is required, so use a " "caliper and do multiple measurements along the filament, then compute the " "average." msgstr "" -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:686 msgid "Density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:687 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -4449,7 +5482,7 @@ msgid "" "displacement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:689 +#: src/libslic3r/PrintConfig.cpp:690 msgid "g/cm³" msgstr "" @@ -4490,72 +5523,72 @@ msgid "" "so this setting does not affect them." msgstr "" -#: src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:743 msgid "Fill density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:746 +#: src/libslic3r/PrintConfig.cpp:745 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "" -#: src/libslic3r/PrintConfig.cpp:782 +#: src/libslic3r/PrintConfig.cpp:780 msgid "Fill pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:784 +#: src/libslic3r/PrintConfig.cpp:782 msgid "Fill pattern for general low-density infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:802 +#: src/libslic3r/PrintConfig.cpp:799 msgid "Triangles" msgstr "" -#: src/libslic3r/PrintConfig.cpp:803 +#: src/libslic3r/PrintConfig.cpp:800 msgid "Stars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:801 msgid "Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:802 msgid "Line" msgstr "" -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 +#: src/libslic3r/PrintConfig.cpp:804 src/libslic3r/PrintConfig.cpp:1949 msgid "Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:808 +#: src/libslic3r/PrintConfig.cpp:805 msgid "3D Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:809 +#: src/libslic3r/PrintConfig.cpp:806 msgid "Gyroid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 +#: src/libslic3r/PrintConfig.cpp:813 src/libslic3r/PrintConfig.cpp:822 +#: src/libslic3r/PrintConfig.cpp:830 src/libslic3r/PrintConfig.cpp:863 msgid "First layer" msgstr "" -#: src/libslic3r/PrintConfig.cpp:817 +#: src/libslic3r/PrintConfig.cpp:814 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:823 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:837 +#: src/libslic3r/PrintConfig.cpp:832 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -4563,11 +5596,11 @@ msgid "" "layer height. If set to zero, it will use the default extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:842 msgid "First layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:850 +#: src/libslic3r/PrintConfig.cpp:844 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -4575,52 +5608,52 @@ msgid "" "example: 150%) over the default layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 +#: src/libslic3r/PrintConfig.cpp:848 src/libslic3r/PrintConfig.cpp:993 +#: src/libslic3r/PrintConfig.cpp:1822 msgid "mm or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:853 msgid "First layer speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:861 +#: src/libslic3r/PrintConfig.cpp:854 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:872 +#: src/libslic3r/PrintConfig.cpp:864 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " "commands in the output file." msgstr "" -#: src/libslic3r/PrintConfig.cpp:882 +#: src/libslic3r/PrintConfig.cpp:873 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." msgstr "" -#: src/libslic3r/PrintConfig.cpp:890 +#: src/libslic3r/PrintConfig.cpp:881 msgid "Verbose G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:882 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " "file could make your firmware slow down." msgstr "" -#: src/libslic3r/PrintConfig.cpp:899 +#: src/libslic3r/PrintConfig.cpp:889 msgid "G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:890 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -4628,50 +5661,62 @@ msgid "" "extrusion value at all." msgstr "" -#: src/libslic3r/PrintConfig.cpp:924 +#: src/libslic3r/PrintConfig.cpp:913 msgid "No extrusion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:918 +msgid "Label objects" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:919 +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:926 msgid "High extruder current on filament swap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:930 +#: src/libslic3r/PrintConfig.cpp:927 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:939 +#: src/libslic3r/PrintConfig.cpp:935 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:948 +#: src/libslic3r/PrintConfig.cpp:943 msgid "Combine infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:950 +#: src/libslic3r/PrintConfig.cpp:945 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." msgstr "" -#: src/libslic3r/PrintConfig.cpp:954 +#: src/libslic3r/PrintConfig.cpp:948 msgid "Combine infill every n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:954 msgid "Infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:956 msgid "The extruder to use when printing infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:971 +#: src/libslic3r/PrintConfig.cpp:964 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -4680,32 +5725,32 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:981 +#: src/libslic3r/PrintConfig.cpp:973 msgid "Infill before perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:974 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "" -#: src/libslic3r/PrintConfig.cpp:988 +#: src/libslic3r/PrintConfig.cpp:979 msgid "Only infill where needed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:981 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." msgstr "" -#: src/libslic3r/PrintConfig.cpp:998 +#: src/libslic3r/PrintConfig.cpp:988 msgid "Infill/perimeters overlap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:990 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -4713,30 +5758,30 @@ msgid "" "perimeter extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1012 +#: src/libslic3r/PrintConfig.cpp:1001 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1020 +#: src/libslic3r/PrintConfig.cpp:1009 msgid "Inherits profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1010 msgid "Name of the profile, from which this profile inherits." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1032 +#: src/libslic3r/PrintConfig.cpp:1023 msgid "Interface shells" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1033 +#: src/libslic3r/PrintConfig.cpp:1024 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual " "soluble support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1033 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -4744,11 +5789,11 @@ msgid "" "[layer_z]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1044 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1055 +#: src/libslic3r/PrintConfig.cpp:1045 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -4756,64 +5801,152 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" +#: src/libslic3r/PrintConfig.cpp:1053 +msgid "Supports stealth mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" +#: src/libslic3r/PrintConfig.cpp:1054 +msgid "The firmware supports stealth mode" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1078 +msgid "Maximum feedrate X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1079 +msgid "Maximum feedrate Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1080 +msgid "Maximum feedrate Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1081 +msgid "Maximum feedrate E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1084 +msgid "Maximum feedrate of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1085 +msgid "Maximum feedrate of the Y axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1086 +msgid "Maximum feedrate of the Z axis" msgstr "" #: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" +msgid "Maximum feedrate of the E axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" +#: src/libslic3r/PrintConfig.cpp:1096 +msgid "Maximum acceleration X" msgstr "" #: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" +msgid "Maximum acceleration Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1098 +msgid "Maximum acceleration Z" msgstr "" #: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" +msgid "Maximum acceleration E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" +#: src/libslic3r/PrintConfig.cpp:1102 +msgid "Maximum acceleration of the X axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" +#: src/libslic3r/PrintConfig.cpp:1103 +msgid "Maximum acceleration of the Y axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +#: src/libslic3r/PrintConfig.cpp:1104 +msgid "Maximum acceleration of the Z axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1105 +msgid "Maximum acceleration of the E axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1114 +msgid "Maximum jerk X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1115 +msgid "Maximum jerk Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1116 +msgid "Maximum jerk Z" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1117 +msgid "Maximum jerk E" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1120 +msgid "Maximum jerk of the X axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1121 +msgid "Maximum jerk of the Y axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1122 +msgid "Maximum jerk of the Z axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1123 +msgid "Maximum jerk of the E axis" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1134 msgid "Minimum feedrate when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1136 +msgid "Minimum feedrate when extruding (M205 S)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1145 msgid "Minimum travel feedrate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1147 +msgid "Minimum travel feedrate (M205 T)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1156 msgid "Maximum acceleration when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 +#: src/libslic3r/PrintConfig.cpp:1158 +msgid "Maximum acceleration when extruding (M204 S)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1167 msgid "Maximum acceleration when retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 +#: src/libslic3r/PrintConfig.cpp:1169 +msgid "Maximum acceleration when retracting (M204 T)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:1177 src/libslic3r/PrintConfig.cpp:1186 msgid "Max" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1164 +#: src/libslic3r/PrintConfig.cpp:1178 msgid "This setting represents the maximum speed of your fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format +#: src/libslic3r/PrintConfig.cpp:1187 +#, possible-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " "the variable layer height and support layer height. Maximum recommended " @@ -4821,28 +5954,28 @@ msgid "" "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1185 +#: src/libslic3r/PrintConfig.cpp:1197 msgid "Max print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1186 +#: src/libslic3r/PrintConfig.cpp:1198 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " "is used to set the highest print speed you want to allow." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1197 +#: src/libslic3r/PrintConfig.cpp:1208 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1206 +#: src/libslic3r/PrintConfig.cpp:1217 msgid "Max volumetric slope positive" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 +#: src/libslic3r/PrintConfig.cpp:1218 src/libslic3r/PrintConfig.cpp:1229 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -4850,119 +5983,99 @@ msgid "" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 +#: src/libslic3r/PrintConfig.cpp:1222 src/libslic3r/PrintConfig.cpp:1233 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1228 msgid "Max volumetric slope negative" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 +#: src/libslic3r/PrintConfig.cpp:1240 src/libslic3r/PrintConfig.cpp:1249 msgid "Min" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1231 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/libslic3r/PrintConfig.cpp:1258 msgid "Min print speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1251 +#: src/libslic3r/PrintConfig.cpp:1259 msgid "Slic3r will not scale speed down below this speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1259 +#: src/libslic3r/PrintConfig.cpp:1266 msgid "Minimal filament extrusion length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1260 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " "machines, this minimum applies to each extruder." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1270 +#: src/libslic3r/PrintConfig.cpp:1276 msgid "Configuration notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1277 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "Nozzle diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1287 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1288 +#: src/libslic3r/PrintConfig.cpp:1292 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1293 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1304 msgid "Only retract when crossing perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/libslic3r/PrintConfig.cpp:1305 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1334 +#: src/libslic3r/PrintConfig.cpp:1312 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1342 +#: src/libslic3r/PrintConfig.cpp:1319 msgid "Output filename format" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1343 +#: src/libslic3r/PrintConfig.cpp:1320 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -4970,60 +6083,60 @@ msgid "" "[input_filename], [input_filename_base]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1329 msgid "Detect bridging perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:1331 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1337 msgid "Filament parking position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1338 msgid "" "Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " +"when unloaded. This should match the value in printer firmware." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:1346 msgid "Extra loading distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1347 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " "positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " +"than unloading." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 +#: src/libslic3r/PrintConfig.cpp:1355 src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1385 src/libslic3r/PrintConfig.cpp:1395 msgid "Perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1383 +#: src/libslic3r/PrintConfig.cpp:1356 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " "zero to disable acceleration control for perimeters." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1392 +#: src/libslic3r/PrintConfig.cpp:1364 msgid "Perimeter extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1394 +#: src/libslic3r/PrintConfig.cpp:1366 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1404 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -5032,12 +6145,12 @@ msgid "" "it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1387 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1427 +#: src/libslic3r/PrintConfig.cpp:1397 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -5045,11 +6158,11 @@ msgid "" "Perimeters option is enabled." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1431 +#: src/libslic3r/PrintConfig.cpp:1401 msgid "(minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1439 +#: src/libslic3r/PrintConfig.cpp:1409 msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " @@ -5058,55 +6171,55 @@ msgid "" "environment variables." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1421 msgid "Printer type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1422 msgid "Type of the printer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1427 msgid "Printer notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1458 +#: src/libslic3r/PrintConfig.cpp:1428 msgid "You can put your notes regarding the printer here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1436 msgid "Printer vendor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1468 +#: src/libslic3r/PrintConfig.cpp:1437 msgid "Name of the printer vendor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1442 msgid "Printer variant" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1443 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1483 +#: src/libslic3r/PrintConfig.cpp:1456 msgid "Raft layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1485 +#: src/libslic3r/PrintConfig.cpp:1458 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1494 +#: src/libslic3r/PrintConfig.cpp:1466 msgid "Resolution" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1495 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -5114,282 +6227,278 @@ msgid "" "simplification and use full resolution from input." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1506 +#: src/libslic3r/PrintConfig.cpp:1477 msgid "Minimum travel after retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1507 +#: src/libslic3r/PrintConfig.cpp:1478 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1514 +#: src/libslic3r/PrintConfig.cpp:1484 msgid "Retract amount before wipe" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1515 +#: src/libslic3r/PrintConfig.cpp:1485 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1492 msgid "Retract on layer change" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1524 +#: src/libslic3r/PrintConfig.cpp:1493 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1498 src/libslic3r/PrintConfig.cpp:1506 msgid "Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1531 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "Retraction Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1532 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " "extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1502 src/libslic3r/PrintConfig.cpp:1511 msgid "mm (zero to disable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1507 msgid "Retraction Length (Toolchange)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1541 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " "enters the extruder)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1516 msgid "Lift Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1517 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1524 msgid "Above Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1560 +#: src/libslic3r/PrintConfig.cpp:1525 msgid "Only lift Z above" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1526 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1533 msgid "Below Z" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1534 msgid "Only lift Z below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1535 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " "first layers." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1543 src/libslic3r/PrintConfig.cpp:1551 msgid "Extra length on restart" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1544 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1590 +#: src/libslic3r/PrintConfig.cpp:1552 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 +#: src/libslic3r/PrintConfig.cpp:1559 src/libslic3r/PrintConfig.cpp:1560 msgid "Retraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1600 +#: src/libslic3r/PrintConfig.cpp:1561 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 +#: src/libslic3r/PrintConfig.cpp:1567 src/libslic3r/PrintConfig.cpp:1568 msgid "Deretraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1569 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1617 +#: src/libslic3r/PrintConfig.cpp:1576 msgid "Seam position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1578 msgid "Position of perimeters starting points." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1584 msgid "Random" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1627 +#: src/libslic3r/PrintConfig.cpp:1585 msgid "Nearest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1628 +#: src/libslic3r/PrintConfig.cpp:1586 msgid "Aligned" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 +#: src/libslic3r/PrintConfig.cpp:1594 msgid "Direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1638 +#: src/libslic3r/PrintConfig.cpp:1596 msgid "Preferred direction of the seam" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1597 msgid "Seam preferred direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1647 +#: src/libslic3r/PrintConfig.cpp:1604 msgid "Jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1606 msgid "Seam preferred direction jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1607 msgid "Preferred direction of the seam - jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "USB/serial port for printer connection." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1624 msgid "Serial port speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1625 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1634 msgid "Distance from object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1635 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1642 msgid "Skirt height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1689 +#: src/libslic3r/PrintConfig.cpp:1643 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1650 msgid "Loops (minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:1651 msgid "Skirt Loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1699 +#: src/libslic3r/PrintConfig.cpp:1652 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " "this to zero to disable skirt completely." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "Slow down if layer print time is below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1709 +#: src/libslic3r/PrintConfig.cpp:1661 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1720 +#: src/libslic3r/PrintConfig.cpp:1671 msgid "Small perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1722 +#: src/libslic3r/PrintConfig.cpp:1673 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1732 +#: src/libslic3r/PrintConfig.cpp:1683 msgid "Solid infill threshold area" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1734 +#: src/libslic3r/PrintConfig.cpp:1685 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1735 +#: src/libslic3r/PrintConfig.cpp:1686 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1742 +#: src/libslic3r/PrintConfig.cpp:1692 msgid "Solid infill extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1694 msgid "The extruder to use when printing solid infill." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1751 +#: src/libslic3r/PrintConfig.cpp:1700 msgid "Solid infill every" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1753 +#: src/libslic3r/PrintConfig.cpp:1702 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -5397,7 +6506,7 @@ msgid "" "according to nozzle diameter and layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1766 +#: src/libslic3r/PrintConfig.cpp:1714 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -5405,22 +6514,22 @@ msgid "" "(for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1777 +#: src/libslic3r/PrintConfig.cpp:1724 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1789 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1742 msgid "Spiral vase" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1797 +#: src/libslic3r/PrintConfig.cpp:1743 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -5429,18 +6538,18 @@ msgid "" "when printing more than an object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "Temperature variation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1807 +#: src/libslic3r/PrintConfig.cpp:1752 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1818 +#: src/libslic3r/PrintConfig.cpp:1762 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -5451,7 +6560,7 @@ msgid "" "\"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1834 +#: src/libslic3r/PrintConfig.cpp:1777 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode. This is used to override settings for a specific filament. If Slic3r " @@ -5463,93 +6572,93 @@ msgid "" "extruders, the gcode is processed in extruder order." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1850 +#: src/libslic3r/PrintConfig.cpp:1792 msgid "Single Extruder Multi Material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1793 msgid "The printer multiplexes filaments into a single hot end." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1798 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:1799 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:1804 msgid "Generate support material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1866 +#: src/libslic3r/PrintConfig.cpp:1806 msgid "Enable support material generation." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1810 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:1812 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1880 +#: src/libslic3r/PrintConfig.cpp:1818 msgid "XY separation between an object and its support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1882 +#: src/libslic3r/PrintConfig.cpp:1820 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:1830 msgid "Pattern angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1906 +#: src/libslic3r/PrintConfig.cpp:1842 src/libslic3r/PrintConfig.cpp:2450 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1913 +#: src/libslic3r/PrintConfig.cpp:1848 msgid "Contact Z distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1850 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" +#: src/libslic3r/PrintConfig.cpp:1857 +msgid "0 (soluble)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" +#: src/libslic3r/PrintConfig.cpp:1858 +msgid "0.2 (detachable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1929 +#: src/libslic3r/PrintConfig.cpp:1863 msgid "Enforce support for the first" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:1865 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -5557,21 +6666,21 @@ msgid "" "of objects having a very thin or poor footprint on the build plate." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1870 msgid "Enforce support for the first n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1943 +#: src/libslic3r/PrintConfig.cpp:1876 msgid "Support material/raft/skirt extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1945 +#: src/libslic3r/PrintConfig.cpp:1878 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1887 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -5579,89 +6688,89 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1895 msgid "Interface loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:1897 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1972 +#: src/libslic3r/PrintConfig.cpp:1902 msgid "Support material/raft interface extruder" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1974 +#: src/libslic3r/PrintConfig.cpp:1904 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:1911 msgid "Interface layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:1913 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1992 +#: src/libslic3r/PrintConfig.cpp:1920 msgid "Interface pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:1922 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:1931 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " "speed." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2013 +#: src/libslic3r/PrintConfig.cpp:1940 msgid "Pattern" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2015 +#: src/libslic3r/PrintConfig.cpp:1942 msgid "Pattern used to generate support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2022 +#: src/libslic3r/PrintConfig.cpp:1948 msgid "Rectilinear grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2028 +#: src/libslic3r/PrintConfig.cpp:1954 msgid "Pattern spacing" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2030 +#: src/libslic3r/PrintConfig.cpp:1956 msgid "Spacing between support material lines." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2040 +#: src/libslic3r/PrintConfig.cpp:1965 msgid "Speed for printing support material." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2047 +#: src/libslic3r/PrintConfig.cpp:1972 msgid "Synchronize with object layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2049 +#: src/libslic3r/PrintConfig.cpp:1974 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:1980 msgid "Overhang threshold" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:1982 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -5670,54 +6779,50 @@ msgid "" "detection (recommended)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2071 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "With sheath around the support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:1996 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:2003 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2090 +#: src/libslic3r/PrintConfig.cpp:2011 msgid "Detect thin walls" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2092 +#: src/libslic3r/PrintConfig.cpp:2013 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2099 +#: src/libslic3r/PrintConfig.cpp:2019 msgid "Threads" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2100 +#: src/libslic3r/PrintConfig.cpp:2020 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:2032 msgid "" "This custom code is inserted right before every extruder change. Note that " "you can use placeholder variables for all Slic3r settings as well as " "[previous_extruder] and [next_extruder]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -5726,7 +6831,7 @@ msgid "" "percentage (for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2055 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -5735,48 +6840,43 @@ msgid "" "for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2070 msgid "Number of solid layers to generate on top surfaces." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2071 msgid "Top solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2077 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2085 msgid "Use firmware retraction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2086 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2092 msgid "Use relative E distances" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2093 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2184 +#: src/libslic3r/PrintConfig.cpp:2099 msgid "Use volumetric E" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2100 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -5786,131 +6886,127 @@ msgid "" "only supported in recent Marlin." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2196 +#: src/libslic3r/PrintConfig.cpp:2110 msgid "Enable variable layer height feature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2197 +#: src/libslic3r/PrintConfig.cpp:2111 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2204 +#: src/libslic3r/PrintConfig.cpp:2117 msgid "Wipe while retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2205 +#: src/libslic3r/PrintConfig.cpp:2118 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2213 +#: src/libslic3r/PrintConfig.cpp:2125 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2220 +#: src/libslic3r/PrintConfig.cpp:2131 msgid "Purging volumes - load/unload volumes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2221 +#: src/libslic3r/PrintConfig.cpp:2132 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " +"volumes below." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2228 +#: src/libslic3r/PrintConfig.cpp:2138 msgid "Purging volumes - matrix" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2229 +#: src/libslic3r/PrintConfig.cpp:2139 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " +"new filament on the wipe tower for any given pair of tools." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2148 msgid "Position X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2240 +#: src/libslic3r/PrintConfig.cpp:2149 msgid "X coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2247 +#: src/libslic3r/PrintConfig.cpp:2155 msgid "Position Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2156 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2256 +#: src/libslic3r/PrintConfig.cpp:2163 msgid "Width of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2263 +#: src/libslic3r/PrintConfig.cpp:2169 msgid "Wipe tower rotation angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " +#: src/libslic3r/PrintConfig.cpp:2170 +msgid "Wipe tower rotation angle with respect to x-axis." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2272 +#: src/libslic3r/PrintConfig.cpp:2177 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2273 +#: src/libslic3r/PrintConfig.cpp:2178 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2281 +#: src/libslic3r/PrintConfig.cpp:2185 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2282 +#: src/libslic3r/PrintConfig.cpp:2186 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2289 +#: src/libslic3r/PrintConfig.cpp:2192 msgid "Maximal bridging distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " +#: src/libslic3r/PrintConfig.cpp:2193 +msgid "Maximal distance between supports on sparse infill sections." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2199 msgid "XY Size Compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2299 +#: src/libslic3r/PrintConfig.cpp:2201 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2308 +#: src/libslic3r/PrintConfig.cpp:2209 msgid "Z offset" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2309 +#: src/libslic3r/PrintConfig.cpp:2210 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " @@ -5918,389 +7014,498 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2227 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2228 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2233 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2234 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2239 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2241 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2247 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2402 +#: src/libslic3r/PrintConfig.cpp:2252 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2403 +#: src/libslic3r/PrintConfig.cpp:2253 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2410 +#: src/libslic3r/PrintConfig.cpp:2259 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2411 +#: src/libslic3r/PrintConfig.cpp:2260 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2265 +msgid "Fast" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2266 +msgid "Fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2267 +msgid "Time of the fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2274 +msgid "Slow" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2275 +msgid "Slow tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2276 +msgid "Time of the slow tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2283 +msgid "Area fill" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2284 +msgid "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 +#: src/libslic3r/PrintConfig.cpp:2293 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2299 src/libslic3r/PrintConfig.cpp:2300 +msgid "Printer absolute correction" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2301 +msgid "" +"Will inflate or deflate the sliced 2D polygons according to the sign of the " +"correction." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2307 src/libslic3r/PrintConfig.cpp:2308 +msgid "Printer gamma correction" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2309 +msgid "" +"This will apply a gamma correction to the rasterized 2D polygons. A gamma " +"value of zero means thresholding with the threshold in the middle. This " +"behaviour eliminates antialiasing without losing holes in polygons." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 +#: src/libslic3r/PrintConfig.cpp:2327 +msgid "Faded layers" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2328 +msgid "" +"Number of the layers needed for the exposure time fade from initial exposure " +"time to the exposure time" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2336 +msgid "Exposure time" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2342 src/libslic3r/PrintConfig.cpp:2343 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" +#: src/libslic3r/PrintConfig.cpp:2349 src/libslic3r/PrintConfig.cpp:2350 +msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2356 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2357 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 +#: src/libslic3r/PrintConfig.cpp:2365 src/libslic3r/PrintConfig.cpp:2376 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2487 +#: src/libslic3r/PrintConfig.cpp:2387 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2389 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2494 +#: src/libslic3r/PrintConfig.cpp:2394 msgid "Support head front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2396 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2503 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Support head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2405 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Support head width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2514 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2521 +#: src/libslic3r/PrintConfig.cpp:2422 msgid "Support pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2424 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2432 msgid "Support pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2531 +#: src/libslic3r/PrintConfig.cpp:2433 msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " +"Controls the bridge type between two neighboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2540 +#: src/libslic3r/PrintConfig.cpp:2441 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2541 +#: src/libslic3r/PrintConfig.cpp:2442 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2443 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2455 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2457 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2466 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2559 +#: src/libslic3r/PrintConfig.cpp:2468 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2476 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2478 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2485 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2577 +#: src/libslic3r/PrintConfig.cpp:2487 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2495 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2586 +#: src/libslic3r/PrintConfig.cpp:2497 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2504 +msgid "Max pillar linking distance" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2506 +msgid "" +"The max distance of two pillars to get linked with each other. A zero value " +"will prohibit pillar cascading." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2514 msgid "Object elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2595 +#: src/libslic3r/PrintConfig.cpp:2516 msgid "How much the supports should lift up the supported object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" +#: src/libslic3r/PrintConfig.cpp:2526 +msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." +#: src/libslic3r/PrintConfig.cpp:2532 +msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" +#: src/libslic3r/PrintConfig.cpp:2534 +msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 +#: src/libslic3r/PrintConfig.cpp:2540 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2542 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2636 +#: src/libslic3r/PrintConfig.cpp:2547 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2645 +#: src/libslic3r/PrintConfig.cpp:2549 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2557 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2654 +#: src/libslic3r/PrintConfig.cpp:2558 +msgid "" +"Defines the pad cavity depth. Set to zero to disable the cavity. Be careful " +"when enabling this feature, as some resins may produce an extreme suction " +"effect inside the cavity, which makes peeling the print off the vat foil " +"difficult." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2571 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2663 +#: src/libslic3r/PrintConfig.cpp:2573 +msgid "" +"Some objects can get along with a few smaller pads instead of a single big " +"one. This parameter defines how far the center of two smaller pads should " +"be. If theyare closer, they will get merged into one pad." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2584 msgid "Pad edge radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." +#: src/libslic3r/PrintConfig.cpp:2593 +msgid "Pad wall slope" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 +#: src/libslic3r/PrintConfig.cpp:2595 msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." +"The slope of the pad wall relative to the bed plane. 90 degrees means " +"straight walls." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" +#: src/libslic3r/PrintConfig.cpp:2957 +msgid "Export OBJ" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +#: src/libslic3r/PrintConfig.cpp:2958 +msgid "Export the model(s) as OBJ." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3038 +#: src/libslic3r/PrintConfig.cpp:2969 +msgid "Export SLA" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2970 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2975 msgid "Export 3MF" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." +#: src/libslic3r/PrintConfig.cpp:2976 +msgid "Export the model(s) as 3MF." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3044 +#: src/libslic3r/PrintConfig.cpp:2980 +msgid "Export AMF" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2981 +msgid "Export the model(s) as AMF." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2985 +msgid "Export STL" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2986 +msgid "Export the model(s) as STL." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2991 +msgid "Slice the model and export toolpaths as G-code." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2996 msgid "Slice" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." +#: src/libslic3r/PrintConfig.cpp:2997 +msgid "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3050 +#: src/libslic3r/PrintConfig.cpp:3002 msgid "Help" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3051 +#: src/libslic3r/PrintConfig.cpp:3003 msgid "Show this help." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" +#: src/libslic3r/PrintConfig.cpp:3008 +msgid "Help (FFF options)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" +#: src/libslic3r/PrintConfig.cpp:3009 +msgid "Show the full list of print/G-code configuration options." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3063 +#: src/libslic3r/PrintConfig.cpp:3013 +msgid "Help (SLA options)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3014 +msgid "Show the full list of SLA print configuration options." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3018 msgid "Output Model Info" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3064 +#: src/libslic3r/PrintConfig.cpp:3019 msgid "Write information about the model to the console." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" +#: src/libslic3r/PrintConfig.cpp:3023 +msgid "Save config file" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3024 +msgid "Save configuration to the specified file." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3034 +msgid "Align XY" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3035 +msgid "Align the model to the given point." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3040 +msgid "Cut model at the given Z." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3061 +msgid "Center" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3062 +msgid "Center the print around the given center." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3066 +msgid "Don't arrange" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3067 +msgid "" +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." msgstr "" #: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." +msgid "Duplicate" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3071 +msgid "Multiply copies by this factor." msgstr "" #: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" +msgid "Duplicate by grid" msgstr "" #: src/libslic3r/PrintConfig.cpp:3076 +msgid "Multiply copies by creating a grid." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3079 +msgid "Merge" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3080 msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 +#: src/libslic3r/PrintConfig.cpp:3085 msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." +"Try to repair any non-manifold meshes (this option is implicitly added " +"whenever we need to slice the model to perform the requested action)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." +#: src/libslic3r/PrintConfig.cpp:3089 +msgid "Rotation angle around the Z axis in degrees." msgstr "" #: src/libslic3r/PrintConfig.cpp:3093 @@ -6308,35 +7513,108 @@ msgid "Rotate around X" msgstr "" #: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." +msgid "Rotation angle around the X axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3099 +#: src/libslic3r/PrintConfig.cpp:3098 msgid "Rotate around Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." +#: src/libslic3r/PrintConfig.cpp:3099 +msgid "Rotation angle around the Y axis in degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" +#: src/libslic3r/PrintConfig.cpp:3104 +msgid "Scaling factor or percentage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." +#: src/libslic3r/PrintConfig.cpp:3109 +msgid "" +"Detect unconnected parts in the given model(s) and split them into separate " +"objects." msgstr "" #: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." +msgid "Scale to Fit" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" +#: src/libslic3r/PrintConfig.cpp:3113 +msgid "Scale to fit the given volume." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3122 +msgid "Ignore non-existent config files" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3123 +msgid "Do not fail if a file supplied to --load does not exist." msgstr "" #: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." +msgid "Load config file" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3127 +msgid "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3130 +msgid "Output File" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3131 +msgid "" +"The file where the output will be written (if not specified, it will be " +"based on the input file)." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3141 +msgid "Data directory" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3142 +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3145 +msgid "Logging level" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3146 +msgid "" +"Messages with severity lower or eqal to the loglevel will be printed out. 0:" +"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3151 +msgid "Render with a software renderer" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3152 +msgid "" +"Render with a software renderer. The bundled MESA software renderer is " +"loaded instead of the default OpenGL driver." +msgstr "" + +#: src/libslic3r/PrintObject.cpp:110 +msgid "Processing triangulated mesh" +msgstr "" + +#: src/libslic3r/PrintObject.cpp:141 +msgid "Generating perimeters" +msgstr "" + +#: src/libslic3r/PrintObject.cpp:251 +msgid "Preparing infill" +msgstr "" + +#: src/libslic3r/PrintObject.cpp:391 +msgid "Generating support material" msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:176 diff --git a/resources/localization/cs_CZ/Slic3rPE.mo b/resources/localization/cs_CZ/Slic3rPE.mo deleted file mode 100644 index b6ce71411..000000000 Binary files a/resources/localization/cs_CZ/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/cs_CZ/Slic3rPE_cs.po b/resources/localization/cs_CZ/Slic3rPE_cs.po index f28786157..7c5da27bb 100644 --- a/resources/localization/cs_CZ/Slic3rPE_cs.po +++ b/resources/localization/cs_CZ/Slic3rPE_cs.po @@ -1,7052 +1,7419 @@ msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" "Language: cs_CZ\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 2.0.8\n" +"X-Generator: PhraseApp (phraseapp.com)\n" -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" -msgstr "O Slic3ru" +#: xs/src/slic3r/GUI/Tab.cpp:2149 +msgid "\n\nand it has the following unsaved changes:" +msgstr "\n\na má neuložené následující zmÄ›ny:" -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 -msgid "Version" -msgstr "Verze" +#: xs/src/slic3r/GUI/Tab.cpp:2152 +msgid "\n\nDiscard changes and continue anyway?" +msgstr "\n\nZahodit zmÄ›ny a pÅ™esto pokraÄovat?" -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "Tvar" +#: xs/src/slic3r/GUI/Tab.cpp:2150 +msgid "\n\nhas the following unsaved changes:" +msgstr "\n\nmá neuložené následující zmÄ›ny:" -#: src/slic3r/GUI/BedShapeDialog.cpp:50 -msgid "Rectangular" -msgstr "Obdélníkový" - -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 -msgid "Size" -msgstr "RozmÄ›r" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -msgid "Size in X and Y of the rectangular plate." -msgstr "RozmÄ›r obdélníkové tiskové podložky v ose X a Y." - -#: src/slic3r/GUI/BedShapeDialog.cpp:61 -msgid "Origin" -msgstr "PoÄátek" - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "Vzdálenost souÅ™adnice 0,0 G-code od pÅ™edního levého rohu obdélníku." - -#: src/slic3r/GUI/BedShapeDialog.cpp:66 -msgid "Circular" -msgstr "Kruhový" - -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 -msgid "mm" -msgstr "mm" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "PrůmÄ›r" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"PrůmÄ›r tiskové podložky. PÅ™epokládaný poÄátek (0,0) je umístÄ›n uprostÅ™ed." - -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "Vlastní" - -#: src/slic3r/GUI/BedShapeDialog.cpp:79 -msgid "Load shape from STL..." -msgstr "" - -#: src/slic3r/GUI/BedShapeDialog.cpp:125 -msgid "Settings" -msgstr "Nastavení" - -#: src/slic3r/GUI/BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" -"Vyberte soubor pro import tvaru tiskové podložky z (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " -msgstr "Chyba! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "Vybraný soubor neobsahuje geometrii." - -#: src/slic3r/GUI/BedShapeDialog.cpp:328 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Vybraný soubor obsahuje nÄ›kolik nespojených ploch. Tato možnost není " -"podporována." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape" -msgstr "Tvar tiskové podložky" - -#: src/slic3r/GUI/BonjourDialog.cpp:54 -msgid "Network lookup" -msgstr "Hledání v síti" - -#: src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Address" -msgstr "Adresa" - -#: src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Hostname" -msgstr "Název hosta" - -#: src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "Service name" -msgstr "Název služby" - -#: src/slic3r/GUI/BonjourDialog.cpp:70 -msgid "OctoPrint version" -msgstr "Verze OctoPrintu" - -#: src/slic3r/GUI/BonjourDialog.cpp:188 -msgid "Searching for devices" -msgstr "Hledám zařízení" - -#: src/slic3r/GUI/BonjourDialog.cpp:195 -msgid "Finished" -msgstr "DokonÄeno" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "Barvy pro textové popisky a tlaÄítka" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "Hodnota je shodná se systémovou hodnotou" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" -msgstr "" -"Hodnota byla zmÄ›nÄ›na a není shodná se systémovou hodnotou nebo naposled " -"uloženým pÅ™ednastavením" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 -msgid "Upgrade" -msgstr "Aktualizovat" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 -msgid "Downgrade" -msgstr "Downgrade" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 -msgid "Before roll back" -msgstr "Before roll back" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 -msgid "User" -msgstr "Uživatel" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 -msgid "Unknown" -msgstr "Neznámý" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "Aktivní: " - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "verze slic3ru" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" -msgstr "tisk" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "filaments" -msgstr "filamenty" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 -msgid "printer" -msgstr "tiskárna" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 -msgid "vendor" -msgstr "prodejce" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "version" -msgstr "verze" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "min slic3r version" -msgstr "min verze slic3ru" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "max slic3r version" -msgstr "max verze slic3ru" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "model" -msgstr "model" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "variants" -msgstr "varianty" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" -msgstr "Nekompatibilní s tímto Slic3rem" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 -msgid "Activate" -msgstr "Aktivovat" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 -msgid "Configuration Snapshots" -msgstr "Záloha konfigurace" - -#: src/slic3r/GUI/ConfigWizard.cpp:92 -msgid "nozzle" -msgstr "tryska" - -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Vybrat vÅ¡e" - -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "OdznaÄit vÅ¡e" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Vítejte v Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -msgid "Welcome" -msgstr "Vítejte" - -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 -#, c-format -msgid "Run %s" -msgstr "Spustit %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:234 -#, c-format -msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -msgstr "" -"Zdravím, vítejte ve Slic3r Prusa Edition! Tento %s vám pomůže se základní " -"konfigurací; jen nÄ›kolik nastavení a budete pÅ™ipraveni k tisku." - -#: src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" -msgstr "" -"Odstranit uživatelské profily - Äistá instalace (nejprve bude provedena " -"záloha)" - -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "Ostatní prodejci" - -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "Vlastní nastavení" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Automatic updates" -msgstr "Automatické aktualizace" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Updates" -msgstr "Aktualizace" - -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Zkontrolovat aktualizace aplikace" - -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 -msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -msgstr "" -"Pokud je povoleno, kontroluje Slic3r novÄ› dostupné verze Slic3r PE. V " -"případÄ›, že je nová verze k dispozici, zobrazí se notifikace pÅ™i dalším " -"startu programu (nikdy bÄ›hem užívání aplikace). Tento systém slouží pouze " -"pro upozornÄ›ní uživatele, nedochází k automatické instalaci." - -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Aktualizovat vestavÄ›né pÅ™ednastavení automaticky" - -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 -msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." -msgstr "" -"Pokud je povoleno, stáhne Slic3r na pozadí aktualizace vestavÄ›ných " -"systémových pÅ™ednastavení. Tyto aktualizace jsou staženy do doÄasného " -"umístÄ›ní. Pokud je k dispozici nové pÅ™ednastavení, zobrazí se upozornÄ›ní pÅ™i " -"startu programu." - -#: src/slic3r/GUI/ConfigWizard.cpp:308 -msgid "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." -msgstr "" -"Aktualizace nejsou nikdy nainstalovány bez vÄ›domí uživatele a nikdy " -"nepÅ™epíšou upravená uživatelská nastavení." - -#: src/slic3r/GUI/ConfigWizard.cpp:313 -msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." -msgstr "" -"Dále je pÅ™ed nainstalováním aktualizace vytvoÅ™ena záloha veÅ¡kerého nastavení." - -#: src/slic3r/GUI/ConfigWizard.cpp:320 -msgid "Other Vendors" -msgstr "Ostatní výrobci" - -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Vyberte si jiného prodejce podporovaného v Slic3r PE:" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 -msgid "Firmware Type" -msgstr "Typ firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 -msgid "Firmware" -msgstr "Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:385 -msgid "Choose the type of firmware used by your printer." -msgstr "Vyberte typ firmware používaný vaší tiskárnou." - -#: src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape and Size" -msgstr "Tvar a rozmÄ›r podložky" - -#: src/slic3r/GUI/ConfigWizard.cpp:422 -msgid "Set the shape of your printer's bed." -msgstr "Nastavte tvar vaší tiskové podložky." - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Filament and Nozzle Diameters" -msgstr "PrůmÄ›ry filamentu a trysky" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Print Diameters" -msgstr "PrůmÄ›ry tisku" - -#: src/slic3r/GUI/ConfigWizard.cpp:452 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Zadejte průmÄ›r trysky hotendu vaší tiskárny." - -#: src/slic3r/GUI/ConfigWizard.cpp:455 -msgid "Nozzle Diameter:" -msgstr "PrůmÄ›r trysky:" - -#: src/slic3r/GUI/ConfigWizard.cpp:465 -msgid "Enter the diameter of your filament." -msgstr "Zadejte průmÄ›r vaÅ¡eho filamentu." - -#: src/slic3r/GUI/ConfigWizard.cpp:466 -msgid "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." -msgstr "" -"Je zapotÅ™ebí velká pÅ™esnost, proto použijte posuvné měřítko (Å¡upleru) a " -"proveÄte nÄ›kolik měření po délce filamentu, poté vypoÄítejte průmÄ›r." - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Filament Diameter:" -msgstr "PrůmÄ›r filamentu:" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Extruder and Bed Temperatures" -msgstr "Teploty extruderu a podložky" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Temperatures" -msgstr "Teploty" - -#: src/slic3r/GUI/ConfigWizard.cpp:503 -msgid "Enter the temperature needed for extruding your filament." -msgstr "Zadejte požadovanou teplotu pro extruzi vaÅ¡eho filamentu." - -#: src/slic3r/GUI/ConfigWizard.cpp:504 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Extrusion Temperature:" -msgstr "Teplota extruze:" - -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 -msgid "°C" -msgstr "°C" - -#: src/slic3r/GUI/ConfigWizard.cpp:517 -msgid "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." -msgstr "" -"Zadejte požadovanou teplotu filamentu, aby se spojil s vyhřívanou podložkou." - -#: src/slic3r/GUI/ConfigWizard.cpp:518 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS. Zadejte " -"nula, pokud nemáte vyhřívanou podložku." - -#: src/slic3r/GUI/ConfigWizard.cpp:521 -msgid "Bed Temperature:" -msgstr "Teplota tiskové podložky:" - -#: src/slic3r/GUI/ConfigWizard.cpp:833 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:834 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:835 -msgid "&Finish" -msgstr "&DokonÄit" - -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" -msgstr "Průvodce nastavením" - -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" -msgstr "Průvodce &nastavením" - -#: src/slic3r/GUI/ConfigWizard.cpp:909 -msgid "Configuration Assistant" -msgstr "Průvodce nastavení tiskárny" - -#: src/slic3r/GUI/ConfigWizard.cpp:910 -msgid "Configuration &Assistant" -msgstr "Průvodce &nastavení tiskárny" - -#: src/slic3r/GUI/Field.cpp:109 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:140 -#, c-format -msgid "%s doesn't support percentage" -msgstr "%s nepodporuje procenta" - -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:153 -msgid "Input value is out of range" -msgstr "Zadaná hodnota je mimo rozsah" - -#: src/slic3r/GUI/Field.cpp:176 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:179 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:133 -msgid "Flash!" -msgstr "Nahrát!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "ZruÅ¡it" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Probíhá nahrávání firmware. Prosím neodpojujte tiskárnu!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:245 -msgid "Flashing succeeded!" -msgstr "Nahrávání bylo úspěšné!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:246 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "Nahrání selhalo. ProjdÄ›te si prosím avrdude log níže." - -#: src/slic3r/GUI/FirmwareDialog.cpp:247 -msgid "Flashing cancelled." -msgstr "Nahrávání zruÅ¡eno." - -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 -msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:581 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:690 -msgid "Firmware flasher" -msgstr "Nahrání firmware" - -#: src/slic3r/GUI/FirmwareDialog.cpp:712 -msgid "Firmware image:" -msgstr "Soubor s firmware:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:716 -msgid "Serial port:" -msgstr "Sériový port:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:718 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:719 -msgid "Rescan" -msgstr "Prohledat" - -#: src/slic3r/GUI/FirmwareDialog.cpp:726 -msgid "Progress:" -msgstr "PrůbÄ›h:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:729 -msgid "Status:" -msgstr "Stav:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:730 -msgid "Ready" -msgstr "PÅ™ipraveno" - -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "PokroÄilé: výstupní log avrdude" - -#: src/slic3r/GUI/FirmwareDialog.cpp:809 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"Opravdu chcete ukonÄit nahrávání firmware?\n" -"Tiskárna může zůstat v nefunkÄním stavu!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:810 -msgid "Confirmation" -msgstr "Potvrzení" - -#: src/slic3r/GUI/FirmwareDialog.cpp:813 -msgid "Cancelling..." -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "OtoÄit" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "Měřítko" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 -msgid "Rotate lower part upwards" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 -msgid "Perform cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2276 -msgid "Cut object:" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 -msgid "Cut" -msgstr "Řezat" - -#: src/slic3r/GUI/GLGizmo.cpp:2466 -msgid "Keep upper part" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2467 -msgid "Keep lower part" -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "Oznámení" - -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "Attempt to free unreferenced scalar" - -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 -msgid "Warning" -msgstr "Varování" - -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Vyberte jeden nebo více souborů (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." -msgstr "Pole jazykových jmen a identifikátorů by mÄ›la mít stejnou velikost." - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" -msgstr "VýbÄ›r jazyka" - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" -msgstr "Jazyk" - -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" -msgstr "Výchozí" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" -msgstr "Záloha &Konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" -msgstr "Zkontrolovat / aktivovat zálohy konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" -msgstr "Provést &Zálohu Konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" -msgstr "VytvoÅ™it aktuální zálohu konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" -msgstr "&Nastavení" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Nastavení aplikace" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" -msgstr "PokroÄilé" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "ZmÄ›nit &jazyk aplikace" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "Nahrát &firmware tiskárny" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Nahrát firmware do tiskárny s Arduinem" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "Ukládání zálohy nastavení" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "Název zálohy" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "Aplikace bude restartována" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "Pozor!" - -#: src/slic3r/GUI/GUI_App.cpp:691 -msgid "&Configuration" -msgstr "&Konfigurace" - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " -msgstr "Máte neuložené zmÄ›ny " - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" -msgstr ". Zahodit zmÄ›ny a pÅ™esto pokraÄovat?" - -#: src/slic3r/GUI/GUI_App.cpp:712 -msgid "Unsaved Presets" -msgstr "Neuložená PÅ™ednastavení" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Layers and Perimeters" -msgstr "Vrstvy a perimetry" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 -msgid "Infill" -msgstr "Výplň" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "Podpory" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "Rychlost" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 -msgid "Extruders" -msgstr "Extruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 -msgid "Extrusion Width" -msgstr "Šíře extruze" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 -msgid "Name" -msgstr "Název" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 -msgid "Extruder" -msgstr "Extruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "Vybraný objekt nemůže být rozdÄ›len, protože obsahuje pouze jednu Äást." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 -msgid "The supplied name is not valid;" -msgstr "Zadaný název je naplatný;" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 -msgid "the following characters are not allowed:" -msgstr "následující znaky nejsou povoleny:" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 -msgid "View" -msgstr "Zobrazení" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Typ" - -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 -msgid "Height" -msgstr "Výška" - -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 -msgid "Width" -msgstr "Šířka" - -#: src/slic3r/GUI/GUI_Preview.cpp:242 -msgid "Volumetric flow rate" -msgstr "Objemový průtok" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "Nástroj" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:247 -msgid "Show" -msgstr "Zobrazit" - -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 -msgid "Feature types" -msgstr "Typy extruzí" - -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Perimetr" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "VnÄ›jší perimetr" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "Perimetr pÅ™evisu" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "VnitÅ™ní výplň" - -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Plná výplň" - -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Výplň plných horních" - -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "Výplň mostů" - -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "Výplň tenkých stÄ›n" - -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "Obrys" - -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Kontaktní vrstvy podpor" - -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "ÄŒistící věž" - -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 -msgid "Travel" -msgstr "Rychloposun" - -#: src/slic3r/GUI/GUI_Preview.cpp:270 -msgid "Retractions" -msgstr "Retrakce" - -#: src/slic3r/GUI/GUI_Preview.cpp:271 -msgid "Unretractions" -msgstr "Deretrakce" - -#: src/slic3r/GUI/GUI_Preview.cpp:272 -msgid "Shells" -msgstr "Skořápky" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" -msgstr "Exportovat G-kód" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" -msgstr "znovu slicovat" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" -msgstr "Opakovat poslední rychlé slicování" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" -msgstr "Zobrazit panel Podložka" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "Zobrazit panel Nastavení tisku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" -msgstr "Zobrazit panel Nastavení filamentu" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "Zobrazit panel Nastavení tiskárny" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Nastavení" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" -msgstr "Uspořádat" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" -msgstr "Smazat VÅ¡e" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr "" -" - Nezapomeňte zkontrolovat aktualizace na http://github.com/prusa3d/slic3r/" -"releases" - -#: src/slic3r/GUI/MainFrame.cpp:130 -msgid "Plater" -msgstr "Podložka" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "&Otevřít" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "&Uložit" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "Uložit &jako" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Load exported configuration file" -msgstr "NaÄíst exportovaný konfiguraÄní soubor" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Load presets from a bundle" -msgstr "NaÄíst pÅ™ednastavení z balíku" - -#: src/slic3r/GUI/MainFrame.cpp:256 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export &G-code" -msgstr "Exportovat &G-kód" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export current plate as G-code" -msgstr "Exportovat stávající plochu do G-code" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export plate as &STL" -msgstr "Exportovat plochu jako &STL" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export current plate as STL" -msgstr "Exportovat stávající plochu jako STL" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export plate as &AMF" -msgstr "Exportovat plochu jako &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export current plate as AMF" -msgstr "Exportovat stávající plochu jako AMF" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export &Config" -msgstr "Exportovat &Konfiguraci" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export current configuration to file" -msgstr "Exportovat souÄasnou konfiguraci do souboru" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export Config &Bundle" -msgstr "Exportovat KonfiguraÄní &Balík" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export all presets to file" -msgstr "Exportovat vÅ¡echna pÅ™ednastavení do souboru" - -#: src/slic3r/GUI/MainFrame.cpp:271 -msgid "&Export" -msgstr "&Exportovat" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Quick Slice" -msgstr "Rychlé Slicování" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Slice a file into a G-code" -msgstr "Slicovat soubor do G-code" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Quick Slice and Save As" -msgstr "Rychlé Slicování a Uložit jako" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Slice a file into a G-code, save as" -msgstr "Slicovat soubor do G-code, uložit jako" - -#: src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat Last Quick Slice" -msgstr "Opakovat Poslední Slicování" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "(Re)Slice &Now" -msgstr "(Z&novu)Slicovat" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "Start new slicing process" -msgstr "Zahájit nový slicovací proces" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "&Repair STL file" -msgstr "Op&ravit soubor STL" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "Automatically repair an STL file" -msgstr "Automaticky opravit STL soubor" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "&Quit" -msgstr "U&konÄit" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" -msgstr "UkonÄit Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "&Select all" -msgstr "&Vybrat vÅ¡e" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Delete &all" -msgstr "&Smazat VÅ¡e" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "&Plater Tab" -msgstr "Panel &Podložka" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "Show the plater" -msgstr "Zobrazit podložku" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "P&rint Settings Tab" -msgstr "Panel Nastavení t&isku" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "Show the print settings" -msgstr "Zobrazit nastavení tisku" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "&Filament Settings Tab" -msgstr "Panel Nastavení &filamentu" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "Show the filament settings" -msgstr "Zobrazit nastavení filamentu" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Print&er Settings Tab" -msgstr "Panel Nastavení &tiskárny" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Show the printer settings" -msgstr "Zobrazit nastavení tiskárny" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "&Izometrické" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "Izometrické zobrazení" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "S&vrchu" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "Pohled svrchu" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "Ze&spod" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "Pohled zespod" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "Z&epÅ™edu" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "Pohled zepÅ™edu" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "Zeza&du" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "Pohled zezadu" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "Z&leva" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "Pohled zleva" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "Z&prava" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "Pohled zprava" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "Prusa 3D &OvladaÄe" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Otevřít stránku pro stahování Prusa 3D ovladaÄů ve vaÅ¡em prohlížeÄi" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "&Vydání Prusa Edice" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Otavřít stránku vydání Prusa Edice ve vaÅ¡em prohlížeÄi" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "Slic3r &Webová stránka" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "Otevřít webovou stránku Slic3ru ve vaÅ¡em prohlížeÄi" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "Slic3r &návod" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "Otevřít Slic3r návod ve vaÅ¡em prohlížeÄi" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "&Informace o systému" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "Zobrazit systémové informace" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "Otevřít &adresář nastavení" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "Zobrazit uživatelský adresář konfigurace (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "Nahlásit &chybu" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Nahlásit chybu ve Slic3eru Prusa Edice" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "&O Slic3ru" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "Zobrazit okno o Slic3ru" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "&Soubor" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" -msgstr "&Okno" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" -msgstr "&Zobrazení" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" -msgstr "&Pomoc" - -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Zvolit soubor ke slicování (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." -msgstr "Žádné dříve slicované soubory." - -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" -msgstr "Chyba" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "Dříve slicovaný soubor (" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." -msgstr ") nebyl nalezen." - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "File Not Found" -msgstr "Soubor nenalezen" - -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " -msgstr "Uložit " - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "SVG" -msgstr "SVG" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "G-code" -msgstr "G-code" - -# Context: L('Save ') . ($params{export_svg} ? L('SVG') : L('G-code')) . L(' file as:'), e.g. "Save G-Code file as:" -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr " soubor jako:" - -#: src/slic3r/GUI/MainFrame.cpp:548 -msgid "Save zip file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Slicing" -msgstr "Slicování" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " -msgstr "Zpracovávám " - -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid " was successfully sliced." -msgstr " byl úspěšnÄ› slicován." - -#: src/slic3r/GUI/MainFrame.cpp:585 -msgid "Slicing Done!" -msgstr "Slicování dokonÄeno!" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Select the STL file to repair:" -msgstr "Vyberte STL soubor k opravÄ›:" - -#: src/slic3r/GUI/MainFrame.cpp:614 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "Uložit soubor OBJ (ménÄ› náchylný na chyby souÅ™adnic než STL) jako:" - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Your file was repaired." -msgstr "Váš soubor byl opraven." - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Repair" -msgstr "Oprava" - -#: src/slic3r/GUI/MainFrame.cpp:643 -msgid "Save configuration as:" -msgstr "Uložit konfiguraci jako:" - -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 -msgid "Select configuration to load:" -msgstr "Zvolte konfiguraci k naÄtení:" - -#: src/slic3r/GUI/MainFrame.cpp:700 -msgid "Save presets bundle as:" -msgstr "Uložit balík pÅ™ednastavení jako:" - -#: src/slic3r/GUI/MainFrame.cpp:751 -#, c-format -msgid "%d presets successfully imported." -msgstr "%d pÅ™ednastavení úspěšnÄ› importováno." - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" -msgstr "Chyba Slic3ru" - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" -msgstr "DoÅ¡lo k chybÄ› Slic3ru" - -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/Plater.cpp:126 -msgid "Volume" -msgstr "Obsah" - -#: src/slic3r/GUI/Plater.cpp:127 -msgid "Facets" -msgstr "Facety" - -#: src/slic3r/GUI/Plater.cpp:128 -msgid "Materials" -msgstr "Materiálů" - -#: src/slic3r/GUI/Plater.cpp:131 -msgid "Manifold" -msgstr "Model OK" - -#: src/slic3r/GUI/Plater.cpp:174 -msgid "Sliced Info" -msgstr "Informace o slicování" - -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 -msgid "Used Filament (m)" -msgstr "Použito Filamentu (m)" - -#: src/slic3r/GUI/Plater.cpp:194 -msgid "Used Filament (mm³)" -msgstr "Použito Filamentu (mm³)" - -#: src/slic3r/GUI/Plater.cpp:195 -msgid "Used Filament (g)" -msgstr "Použito Filamentu (g)" - -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 -msgid "Cost" -msgstr "Náklady" - -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 -msgid "Estimated printing time" -msgstr "Odhadovaný Äas tisku" - -#: src/slic3r/GUI/Plater.cpp:198 -msgid "Number of tool changes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "Podpora" - -#: src/slic3r/GUI/Plater.cpp:364 -msgid "Select what kind of support do you need" -msgstr "Vyberte typ podpor, které potÅ™ebujete" - -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Žádný" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 -msgid "Support on build plate only" -msgstr "Podpory pouze na tiskové ploÅ¡e" - -#: src/slic3r/GUI/Plater.cpp:367 -msgid "Everywhere" -msgstr "VÅ¡ude" - -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 -msgid "Brim" -msgstr "Límec" - -#: src/slic3r/GUI/Plater.cpp:381 -msgid "" -"This flag enables the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Tato vlajka zapíná límec, který bude vytiÅ¡tÄ›n kolem každého objektu pÅ™i " -"první vrstvÄ›." - -#: src/slic3r/GUI/Plater.cpp:390 -msgid "Purging volumes" -msgstr "Objemy ÄiÅ¡tÄ›ní" - -#: src/slic3r/GUI/Plater.cpp:556 -msgid "Print settings" -msgstr "Nastavení tisku" - -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 -msgid "Filament" -msgstr "Filament" - -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:560 -msgid "Printer" -msgstr "Tiskárna" - -#: src/slic3r/GUI/Plater.cpp:588 -msgid "Send to printer" -msgstr "Odeslat do tiskárny" - -#: src/slic3r/GUI/Plater.cpp:607 -msgid "Slice now" -msgstr "Slicovat" - -#: src/slic3r/GUI/Plater.cpp:787 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d obalů)" - -#: src/slic3r/GUI/Plater.cpp:792 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Automaticky opraveno (%d errors)" - -#: src/slic3r/GUI/Plater.cpp:795 -#, c-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" -"%d poÅ¡kozených faset, %d okrajů opraveno, %d faset odstranÄ›no, %d faset " -"pÅ™idáno, %d faset navráceno, %d zadních okrajů" - -#: src/slic3r/GUI/Plater.cpp:805 -msgid "Yes" -msgstr "Ano" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:855 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1304 -msgid "Loading" -msgstr "NaÄítání" - -#: src/slic3r/GUI/Plater.cpp:1314 -#, c-format -msgid "Processing input file %s\n" -msgstr "Zpracovávám vstupní soubor %s\n" - -#: src/slic3r/GUI/Plater.cpp:1366 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Tento soubor obsahuje nÄ›kolik objektů umístÄ›ných v různých výškách. Mají být " -"vloženy jako jeden objekt obsahující více Äástí,\n" -"namísto vložení nÄ›kolika objektů?\n" - -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 -msgid "Multi-part object detected" -msgstr "Detekován objekt obsahující více Äástí" - -#: src/slic3r/GUI/Plater.cpp:1388 -#, c-format -msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1408 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Bylo nahráno více objektů pro multi materiálovou tiskárnu.\n" -"Mají být vloženy jako jeden objekt obsahující více Äástí, \n" -"namísto vložení nÄ›kolika objektů?\n" - -#: src/slic3r/GUI/Plater.cpp:1424 -msgid "Loaded" -msgstr "NaÄteno" - -#: src/slic3r/GUI/Plater.cpp:1492 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" -"Váš objekt se zdá být příliÅ¡ velký, takže byl automaticky zmenÅ¡en, aby se " -"veÅ¡el na tiskovou podložku." - -#: src/slic3r/GUI/Plater.cpp:1493 -msgid "Object too large?" -msgstr "Objekt moc velký?" - -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "Exportovat nastavení tisku" - -#: src/slic3r/GUI/Plater.cpp:1538 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1702 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1705 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1736 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1740 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1782 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1787 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1797 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1818 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" -"Vybraný objekt nemůže být rozdÄ›len, protože obsahuje více nez jeden objem/" -"materiál." - -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "UkonÄování" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "V souÄasné dobÄ› běží jiná úloha exportu." - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "Exportování selhalo" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "Smazat" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "Odstanit vybraný objekt" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Increase copies" -msgstr "PÅ™idat kopie" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Place one more copy of the selected object" -msgstr "PÅ™idá jednu kopii vybraného objektu" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Decrease copies" -msgstr "Odebrat kopie" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Remove one copy of the selected object" -msgstr "Odstaní jednu kopii vybraného objektu" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Set number of copies" -msgstr "Zadat poÄet kopií" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Change the number of copies of the selected object" -msgstr "Změňte poÄet kopií vybraného objektu" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload from Disk" -msgstr "Znovu naÄíst z Disku" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload the selected file from Disk" -msgstr "Znovu naÄíst vybraný objekt z Disku" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "Exportovat objekt jako STL" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "Exportovat tento jediný objekt jako STL soubor" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Along X axis" -msgstr "Podél osy X" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Mirror the selected object along the X axis" -msgstr "Zrcadlit rozmÄ›r vybraného objektu podél osy X" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Along Y axis" -msgstr "Podél osy Y" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Mirror the selected object along the Y axis" -msgstr "Zrcadlit rozmÄ›r vybraného objektu podél osy Y" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Along Z axis" -msgstr "Podél osy Z" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Mirror the selected object along the Z axis" -msgstr "Zrcadlit rozmÄ›r vybraného objektu podél osy Z" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror" -msgstr "Zrcadlit" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror the selected object" -msgstr "Zrcadlit vybraný objekt" - -#: src/slic3r/GUI/Plater.cpp:2400 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 -msgid "Split the selected object into individual objects" -msgstr "RozdÄ›lit vybraný objekt na jednotlivé objekty" - -#: src/slic3r/GUI/Plater.cpp:2402 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 -msgid "Split the selected object into individual sub-parts" -msgstr "RozdÄ›lit vybraný objekt na jednotlivé Äásti" - -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 -msgid "Split" -msgstr "RozdÄ›lit" - -#: src/slic3r/GUI/Plater.cpp:2405 -msgid "Split the selected object" -msgstr "RozdÄ›lit vybraný objekt" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save G-code file as:" -msgstr "Uložit G-code jako:" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2845 -#, c-format -msgid "STL file exported to %s" -msgstr "Soubor STL byl exportován do %s" - -#: src/slic3r/GUI/Plater.cpp:2861 -#, c-format -msgid "AMF file exported to %s" -msgstr "Soubor AMF byl exportován do %s" - -#: src/slic3r/GUI/Plater.cpp:2864 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "Chyba pÅ™i exportu souboru AMF %s" - -#: src/slic3r/GUI/Plater.cpp:2891 -#, c-format -msgid "3MF file exported to %s" -msgstr "Soubor 3MF byl exportován do %s" - -#: src/slic3r/GUI/Plater.cpp:2894 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "Chyba pÅ™i exportu souboru 3MF %s" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 -msgid "General" -msgstr "Obecné" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "Pamatovat si výstupní složku" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" -"Pokud je tato volba povolena, Slic3r vyvolá poslední výstupní adresář " -"namísto toho, který obsahuje vstupní soubory." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Auto-centrování objektů" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" -"Pokud je tato možnost povolena, Slic3r bude automaticky centrovat objekty " -"kolem stÅ™edu tiskové plochy." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Zpracování na pozadí" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" -"Pokud je tato možnost povolena, Slic3r pÅ™edprojektuje objekty, jakmile budou " -"naÄteny, aby Å¡etÅ™il Äas pÅ™i exportu G-code." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "PotlaÄit “ - výchozí - “ pÅ™ednastavení" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" -"PotlaÄit “ - výchozí - “ pÅ™ednastavení v nabídkách Tisk / Filament / " -"Tiskárna, jakmile budou k dispozici další platné pÅ™edvolby." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Zobrazit nekompatibilní pÅ™ednastavení tisku a filamentu" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" -"Pokud je zaÅ¡krtnuto, pÅ™ednastavení tisku a filamentu se zobrazují v editoru " -"pÅ™ednastavení, i když jsou oznaÄeny jako nekompatibilní s aktivní tiskárnou" - -#: src/slic3r/GUI/Preferences.cpp:90 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Použijte historické OpenGL 1.1 vykreslování" - -#: src/slic3r/GUI/Preferences.cpp:92 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" -"Pokud máte problémy s vykreslováním způsobené chybným ovladaÄem OpenGL 2.0, " -"můžete se pokusit zaÅ¡krtnout toto políÄko. Tím se vypnou úpravy výšky " -"hladiny a vyhlazení, takže je je lepší upgradovat grafický ovladaÄ." - -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "Chcete-li provést zmÄ›ny, musíte restartovat aplikaci Slic3r." - -#: src/slic3r/GUI/Preset.cpp:170 -msgid "modified" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 -msgid "System presets" -msgstr "Systémové pÅ™ednastavení" - -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 -msgid "User presets" -msgstr "Uživatelská pÅ™ednastavení" - -#: src/slic3r/GUI/Preset.cpp:1157 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" -"Pokud je odhadovaný Äas vrstvy nižší než ~% ds, bude ventilátor pracovat na " -"%d%% a rychlost tisku bude snížena tak, aby na tuto vrstvu nebylo použito " -"ménÄ› než %ds (rychlost vÅ¡ak nikdy nebude snížena pod %dmm/s)." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Pokud je odhadovaný Äas vrstvy delší, ale stále pod ~% ds, bude ventilátor " -"pracovat s plynule klesající rychlostí mezi %d%% a %d%%." +#: xs/src/slic3r/GUI/Tab.cpp:2149 +msgid "\n\nis not compatible with printer\n" +msgstr "\n\nnení kompatibilní s tiskárnou\n" #: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"V průbÄ›hu ostaních vrstev, ventilátor " +msgid "\nDuring the other layers, fan " +msgstr "\nV průbÄ›hu ostaních vrstev, ventilátor " -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "Ventilátor " +#: src/slic3r/GUI/PresetHints.cpp:32 +#, possible-c-format +msgid "\nIf estimated layer time is greater, but still below ~%ds, fan will run at a proportionally decreasing speed between %d%% and %d%%." +msgstr "\nPokud je odhadovaný Äas vrstvy delší, ale stále pod ~%ds, bude ventilátor pracovat s plynule klesající rychlostí mezi %d%% a %d%%." -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "bude vždy běžet na %d%% " +#: lib/Slic3r/GUI/Plater.pm:1019 +msgid "\nNon-positive value." +msgstr "\nNezáporná hodnota." -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "s výjimkou prvních %d vrstev" +#: lib/Slic3r/GUI/Plater.pm:1020 +msgid "\nNot a numeric value." +msgstr "\nNeÄíselná hodnota." -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "vyjma první vstvy" +#: src/slic3r/GUI/MainFrame.cpp:55 +msgid " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" +msgstr " - Nezapomeňte zkontrolovat aktualizace na http://github.com/prusa3d/slic3r/releases" -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "bude vypnut." +#: src/slic3r/GUI/Tab.cpp:3239 +msgid " as:" +msgstr " jako:" -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "vnÄ›jší perimetry" +#: src/slic3r/GUI/PresetHints.cpp:228 +#, possible-c-format +msgid " at filament speed %3.2f mm/s." +msgstr " pÅ™i rychlosti filamentu %3.2f mm/s." -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "perimetry" +#: src/slic3r/GUI/Tab.cpp:1737 +msgid " Browse " +msgstr " Procházet " -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "výplň" - -#: src/slic3r/GUI/PresetHints.cpp:181 -msgid "solid infill" -msgstr "plná výplň" - -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "vrchní plná výplň" - -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "podpory" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "kontaktní vrstva podpor" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Volumetrická hodnota první vrstvy" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Volumetrická hodnota mostů" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "Volumetrický" +#: src/slic3r/GUI/MainFrame.cpp:677 +msgid " file as:" +msgstr " soubor jako:" #: src/slic3r/GUI/PresetHints.cpp:217 msgid " flow rate is maximized " msgstr " průtok je maximalizován " -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "maximem pro profil tisku" +#: src/slic3r/GUI/Tab.cpp:1358 +#, no-c-format +msgid " infill pattern is not supposed to work at 100% density.\n\nShall I switch to rectilinear fill pattern?" +msgstr " vzor výplnÄ› není urÄen pro práci se 100% hustotou.\n\nMám pÅ™ejít na vzor výplnÄ› rectilinear?" -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "pÅ™i tisku " +#: xs/src/slic3r/GUI/Tab.cpp:2131 +msgid " preset\n" +msgstr " pÅ™ednastavení\n" + +#: xs/src/slic3r/GUI/Tab.cpp:2130 +msgid " preset" +msgstr " pÅ™ednastavení" + +#: src/slic3r/GUI/Tab.cpp:2938 +msgid " Preset" +msgstr " PÅ™ednastavení" + +#: src/slic3r/GUI/Tab.cpp:1818 src/slic3r/GUI/Tab.cpp:2019 +#: src/slic3r/GUI/Tab.cpp:2988 +msgid " Set " +msgstr " Nastavit " + +#: src/slic3r/GUI/Tab.cpp:2936 +msgid " the selected preset?" +msgstr " zvolené pÅ™ednastavení?" + +#: src/slic3r/GUI/MainFrame.cpp:727 +msgid " was successfully sliced." +msgstr " byl úspěšnÄ› slicován." #: src/slic3r/GUI/PresetHints.cpp:222 msgid " with a volumetric rate " msgstr " s objemovou rychlostí " -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/s" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " pÅ™i rychlosti filamentu %3.2f mm/s." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" -"DoporuÄená tloušťka stÄ›ny objektu: Není k dispozici kvůli neplatné výšce " -"vrstvy." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "DoporuÄená tloušťka stÄ›ny objektu pro výšku vrstvy %.2f and " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d linie: %.2lf mm" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "ŽÃDNà RAPIDNà EXTRUZE" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "ÄŒas" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 -msgid "s" -msgstr "s" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "Objemová rychlost" - -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" -msgstr "Slic3r Prusa Edition - Informace o systému" - -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 -msgid "Compatible printers" -msgstr "Kompatibilní tiskárny" - -#: src/slic3r/GUI/Tab.cpp:50 -msgid "Select the printers this profile is compatible with." -msgstr "Vyberte tiskárny, s nimiž je tento profil kompatibilní." - -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:56 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " -msgstr "Uložit stávající " - -#: src/slic3r/GUI/Tab.cpp:119 -msgid "Delete this preset" -msgstr "Smazat pÅ™ednastavení" - -#: src/slic3r/GUI/Tab.cpp:131 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Pro více informací pÅ™ejeÄte kurzorem nad tlaÄítky nebo na tlaÄítko kliknÄ›te." - -#: src/slic3r/GUI/Tab.cpp:824 -msgid "It's a default preset." -msgstr "Je to výchozí pÅ™ednastavení." - -#: src/slic3r/GUI/Tab.cpp:825 -msgid "It's a system preset." -msgstr "Je to systémové pÅ™ednastavení." - -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " -msgstr "Aktuální nastavení je zdÄ›dÄ›no od " - -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " -msgstr "Nelze smazat nebo upravit. " - -#: src/slic3r/GUI/Tab.cpp:832 -msgid "" -"Any modifications should be saved as a new preset inherited from this one. " -msgstr "" -"Jakékoliv úpravy by mÄ›ly být uloženy jako nové pÅ™ednastavení zdÄ›dÄ›ná z " -"tohoto. " - -#: src/slic3r/GUI/Tab.cpp:833 -msgid "To do that please specify a new name for the preset." -msgstr "" -"Chcete-li akci provést, prosím nejdříve zadejte nový název pÅ™ednastavení." - -#: src/slic3r/GUI/Tab.cpp:837 -msgid "Additional information:" -msgstr "Doplňující informace:" - -#: src/slic3r/GUI/Tab.cpp:843 -msgid "printer model" -msgstr "model tiskárny" - -#: src/slic3r/GUI/Tab.cpp:851 -msgid "default print profile" -msgstr "výchozí tiskový profil" - -#: src/slic3r/GUI/Tab.cpp:854 -msgid "default filament profile" -msgstr "výchozí profil filamentu" - -#: src/slic3r/GUI/Tab.cpp:868 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:872 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 -msgid "Layers and perimeters" -msgstr "Vrstvy a perimetry" - -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 -msgid "Layer height" -msgstr "Výška vrstvy" - -#: src/slic3r/GUI/Tab.cpp:924 -msgid "Vertical shells" -msgstr "Svislé stÄ›ny" - -#: src/slic3r/GUI/Tab.cpp:935 -msgid "Horizontal shells" -msgstr "Vodorovné stÄ›ny" - -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 -msgid "Solid layers" -msgstr "Plných vrstev" - -#: src/slic3r/GUI/Tab.cpp:941 -msgid "Quality (slower slicing)" -msgstr "Kvalita (pomalejší slicing)" - -#: src/slic3r/GUI/Tab.cpp:958 -msgid "Reducing printing time" -msgstr "Zkracování tiskového Äasu" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Skirt and brim" -msgstr "Obrys a límec" - -#: src/slic3r/GUI/Tab.cpp:987 -msgid "Raft" -msgstr "Raft" - -#: src/slic3r/GUI/Tab.cpp:991 -msgid "Options for support material and raft" -msgstr "Volby pro podpory a raft" - -#: src/slic3r/GUI/Tab.cpp:1006 -msgid "Speed for print moves" -msgstr "Speed for print moves" - -#: src/slic3r/GUI/Tab.cpp:1018 -msgid "Speed for non-print moves" -msgstr "Netiskové rychlosti" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Modifiers" -msgstr "Modifikátory" - -#: src/slic3r/GUI/Tab.cpp:1024 -msgid "Acceleration control (advanced)" -msgstr "Kontrola akcelerací (pokroÄilé)" - -#: src/slic3r/GUI/Tab.cpp:1031 -msgid "Autospeed (advanced)" -msgstr "Automatická rychlost (pokroÄilé)" - -#: src/slic3r/GUI/Tab.cpp:1037 -msgid "Multiple Extruders" -msgstr "Multiple Extruders" - -#: src/slic3r/GUI/Tab.cpp:1045 -msgid "Ooze prevention" -msgstr "Prevence odkapávání" - -#: src/slic3r/GUI/Tab.cpp:1062 -msgid "Extrusion width" -msgstr "Šířka extruze" - -#: src/slic3r/GUI/Tab.cpp:1072 -msgid "Overlap" -msgstr "PÅ™ekrytí" - -#: src/slic3r/GUI/Tab.cpp:1075 -msgid "Flow" -msgstr "Průtok" - -#: src/slic3r/GUI/Tab.cpp:1078 -msgid "Other" -msgstr "Ostatní" - -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 -msgid "Output options" -msgstr "Možnosti výstupu" - -#: src/slic3r/GUI/Tab.cpp:1086 -msgid "Sequential printing" -msgstr "SekvenÄní tisk" - -#: src/slic3r/GUI/Tab.cpp:1088 -msgid "Extruder clearance (mm)" -msgstr "Kolizní oblast extruderu (mm)" - -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 -msgid "Output file" -msgstr "Výstupní soubor" - -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 -msgid "Post-processing scripts" -msgstr "PostprodukÄní skripty" - -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 -msgid "Notes" -msgstr "Poznámky" - -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 -msgid "Dependencies" -msgstr "Závislosti" - -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 -msgid "Profile dependencies" -msgstr "Profilové závislosti" - -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"Mód spirálové vázy vyžaduje:\n" -"- jeden perimeter\n" -"- žádné plné vrchní vrstvy\n" -"- 0% hustota výplnÄ›\n" -"- žádné podpÄ›ry\n" -"- nezjišťování vertikální tloušťky pláštÄ›\n" -"\n" -"Mám tyto nastavení upravit tak, aby bylo možné mód spirálové vázy zapnout?" - -#: src/slic3r/GUI/Tab.cpp:1168 -msgid "Spiral Vase" -msgstr "Spirálová váza" - -#: src/slic3r/GUI/Tab.cpp:1191 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"ÄŒistící věž v souÄasné dobÄ› podporuje pouze nerozpustné podpory\n" -"pokud jsou vytiÅ¡tÄ›ny s aktuálním extrudérem bez spuÅ¡tÄ›ní výmÄ›ny nástroje.\n" -"(jak extruder pro tisk popor tak extruder pro tisk kontaktních podpor je " -"tÅ™eba nastavit na 0).\n" -"\n" -"Mám tyto nastavení upravit tak, aby bylo možné zapnout ÄŒistící věž?" - -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 -msgid "Wipe Tower" -msgstr "ÄŒistící věž" - -#: src/slic3r/GUI/Tab.cpp:1209 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"U Äistící věže pokud pracujte s rozpustnými materiály, je tÅ™eba\n" -"synchronizovat vrstvy podpor s vrstvami objektů.\n" -"\n" -"Mám synchronizovat vrstvy podpor, aby bylo možné zapnout ÄŒistící věž?" - -#: src/slic3r/GUI/Tab.cpp:1227 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Podpory fungují lépe, pokud je povolena následující funkce:\n" -"- Zjistit pÅ™emosÅ¥ovací perimetry\n" -"\n" -"Mám tyto nastavení pro podpory upravit?" - -#: src/slic3r/GUI/Tab.cpp:1230 -msgid "Support Generator" -msgstr "Generátor Podpor" - -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" vzor výplnÄ› není urÄen pro práci se 100% hustotou.\n" -"\n" -"Mám pÅ™ejít na vzor výplnÄ› rectilinear?" - -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " -msgstr "Teplota " - -#: src/slic3r/GUI/Tab.cpp:1394 -msgid "Bed" -msgstr "Tisková podložka" - -#: src/slic3r/GUI/Tab.cpp:1399 -msgid "Cooling" -msgstr "Chlazení" - -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Enable" -msgstr "Zapnout" - -#: src/slic3r/GUI/Tab.cpp:1411 -msgid "Fan settings" -msgstr "Nastavení ventilátoru" - -#: src/slic3r/GUI/Tab.cpp:1412 -msgid "Fan speed" -msgstr "Rychlost ventilátoru" - -#: src/slic3r/GUI/Tab.cpp:1420 -msgid "Cooling thresholds" -msgstr "Podmínky chlazení" - -#: src/slic3r/GUI/Tab.cpp:1426 -msgid "Filament properties" -msgstr "Vlastnosti filamentu" - -#: src/slic3r/GUI/Tab.cpp:1430 -msgid "Print speed override" -msgstr "PÅ™epsání rychlosti tisku" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Parametry pÅ™i výmÄ›nÄ› (Multi Material s jedním extruderem)" - -#: src/slic3r/GUI/Tab.cpp:1455 -msgid "Ramming settings" -msgstr "Nastavení rapidní extruze" - -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 -msgid "Custom G-code" -msgstr "Vlastní G-code" - -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 -msgid "Start G-code" -msgstr "ZaÄátek G-code" - -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 -msgid "End G-code" -msgstr "Konec G-code" - -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr " Procházet " - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 -msgid "Test" -msgstr "Test" - -#: src/slic3r/GUI/Tab.cpp:1615 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 -msgid "Success!" -msgstr "ÚspÄ›ch!" - -#: src/slic3r/GUI/Tab.cpp:1636 -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát " -"s vlastním podpisem." - -#: src/slic3r/GUI/Tab.cpp:1648 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|VÅ¡echny soubory|*.*" - -#: src/slic3r/GUI/Tab.cpp:1649 -msgid "Open CA certificate file" -msgstr "Otevřít soubor s certifikátem CA" - -#: src/slic3r/GUI/Tab.cpp:1676 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 -msgid "Size and coordinates" -msgstr "RozmÄ›r a souÅ™adnice" - -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " -msgstr " Nastavit " - -#: src/slic3r/GUI/Tab.cpp:1740 -msgid "Capabilities" -msgstr "Možnosti" - -#: src/slic3r/GUI/Tab.cpp:1745 -msgid "Number of extruders of the printer." -msgstr "PoÄet extrudérů tiskárny." - -#: src/slic3r/GUI/Tab.cpp:1773 -msgid "USB/Serial connection" -msgstr "USB/Sériové pÅ™ipojení" - -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 -msgid "Serial port" -msgstr "Sériový port" - -#: src/slic3r/GUI/Tab.cpp:1779 -msgid "Rescan serial ports" -msgstr "Znovu prohledat sériové porty" - -#: src/slic3r/GUI/Tab.cpp:1801 -msgid "Connection to printer works correctly." -msgstr "PÅ™ipojení k tiskárnÄ› pracuje správnÄ›." - -#: src/slic3r/GUI/Tab.cpp:1804 -msgid "Connection failed." -msgstr "PÅ™ipojení selhalo." - -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 -msgid "Before layer change G-code" -msgstr "G-code pÅ™ed zmÄ›nou vrstvy" - -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 -msgid "After layer change G-code" -msgstr "G-code po zmÄ›nÄ› vrstvy" - -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 -msgid "Tool change G-code" -msgstr "G-code pro výmÄ›nu nástroje" - -#: src/slic3r/GUI/Tab.cpp:1877 -msgid "Between objects G-code (for sequential printing)" -msgstr "G-code mezi objekty (pro sekvenÄní tisk)" - -#: src/slic3r/GUI/Tab.cpp:1938 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2040 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2045 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2052 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2057 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 -msgid "Single extruder MM setup" -msgstr "Nastavení jednoho extruderu MM" - -#: src/slic3r/GUI/Tab.cpp:2104 -msgid "Single extruder multimaterial parameters" -msgstr "Parametry jednoho multi materiálového extruderu" - -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "Extruder %d" - -#: src/slic3r/GUI/Tab.cpp:2125 -msgid "Layer height limits" -msgstr "Výskové limity vrstvy" - -#: src/slic3r/GUI/Tab.cpp:2130 -msgid "Position (for multi-extruder printers)" -msgstr "Pozice (pro tiskárny s více extrudery)" - -#: src/slic3r/GUI/Tab.cpp:2133 -msgid "Retraction" -msgstr "Retrakce" - -#: src/slic3r/GUI/Tab.cpp:2136 -msgid "Only lift Z" -msgstr "Pouze zvednout Z" - -#: src/slic3r/GUI/Tab.cpp:2149 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" -"Retrakce pro neaktivní extruder (pokroÄilé nastavení pro tiskárny typu " -"MultiMaterial)" - -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "Náhled" - -#: src/slic3r/GUI/Tab.cpp:2284 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"Možnost OÄistit není k dispozici pÅ™i použití režimu retrací z firmwaru.\n" -"\n" -"Mám ji deaktivovat, aby bylo možné povolit retrakce z firmwaru?" - -#: src/slic3r/GUI/Tab.cpp:2286 -msgid "Firmware Retraction" -msgstr "Firmware Retrakce" - -#: src/slic3r/GUI/Tab.cpp:2565 -#, c-format -msgid "Default preset (%s)" -msgstr "Výchozí pÅ™ednastavení (%s)" - -#: src/slic3r/GUI/Tab.cpp:2566 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2583 -msgid "has the following unsaved changes:" -msgstr "má neuložené následující zmÄ›ny:" - -#: src/slic3r/GUI/Tab.cpp:2586 -msgid "is not compatible with printer" -msgstr "není kompatibilní s tiskárnou" - -#: src/slic3r/GUI/Tab.cpp:2587 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2589 -msgid "and it has the following unsaved changes:" -msgstr "a má neuložené následující zmÄ›ny:" - -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "Zahodit zmÄ›ny a pÅ™esto pokraÄovat?" - -#: src/slic3r/GUI/Tab.cpp:2593 -msgid "Unsaved Changes" -msgstr "Neuložené ZmÄ›ny" - -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "The supplied name is empty. It can't be saved." -msgstr "Název je prázdný. Nelze uložit." - -#: src/slic3r/GUI/Tab.cpp:2704 -msgid "Cannot overwrite a system profile." -msgstr "Nelze pÅ™epsat systémový profil." - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Cannot overwrite an external profile." -msgstr "Nelze pÅ™epsat externí profil." - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "remove" -msgstr "odebrat" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "delete" -msgstr "smazat" - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " -msgstr "Jste si jistý že chcete " - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr " zvolené pÅ™ednastavení?" - -#: src/slic3r/GUI/Tab.cpp:2736 -msgid "Remove" -msgstr "Odebrat" - -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" -msgstr " PÅ™ednastavení" - -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "VÅ¡e" - -#: src/slic3r/GUI/Tab.cpp:2869 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" -msgstr "" -"ZAMKNUTà ZÃMEK; indikuje, že nastavení jsou stejná jako systémové hodnoty " -"pro aktuální skupinu nastavení" - -#: src/slic3r/GUI/Tab.cpp:2872 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." -msgstr "" -"ODEMKNUTà ZÃMEK;indikuje, že nÄ›která nastavení byla zmÄ›nÄ›na a nejsou shodná " -"se systémovými hodnotami pro danou skupinu nastavení.\n" -"KliknÄ›te na ikonu ODEMKNUTÉHO ZÃMKU pro reset vÅ¡ech nastavení aktuální " -"skupiny nastavení na systémové hodnoty." - -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" -"BÃLà TEÄŒKA;pro levé tlaÄítko: indikuje nesystémové pÅ™ednastavení,\n" -"pro pravé tlaÄítko: indikuje, že nastavení nebylo zmÄ›nÄ›no." - -#: src/slic3r/GUI/Tab.cpp:2882 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." -msgstr "" -"Å IPKA ZPÄšT; indikuje, že doÅ¡lo ke zmÄ›nÄ› nastavení, které není shodné s " -"naposledy uloženým pÅ™ednastavením pro aktuální skupinu nastavení. KliknÄ›te " -"na ikonu Å IPKY ZPÄšT pro reset vÅ¡ech nastavení pro aktuální skupinu nastavení " -"na naposledy uložené pÅ™ednastavení." - -#: src/slic3r/GUI/Tab.cpp:2908 -msgid "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" -msgstr "" -"Ikona ZAMKNUTÉHO ZÃMKU indikuje, že nastavení jsou stejná jako systémové " -"hodnoty pro aktuální skupinu nastavení" - -#: src/slic3r/GUI/Tab.cpp:2910 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"Ikona ODEMKNUTÉHO ZÃMKU indikuje, že nÄ›která nastavení byla zmÄ›nÄ›na a nejsou " -"shodná se systémovými hodnotami pro danou skupinu nastavení. KliknÄ›te pro " -"reset vÅ¡ech nastavení aktuální skupiny nastavení na systémové hodnoty." - -#: src/slic3r/GUI/Tab.cpp:2913 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "Ikona BÃLÉ TEÄŒKY indikuje nesystémové pÅ™ednastavení." - -#: src/slic3r/GUI/Tab.cpp:2916 -msgid "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." -msgstr "" -"Ikona BÃLÉ TEÄŒKY indikuje, že nastavení jsou shodná s naposledy uloženým " -"pÅ™ednastavením pro danou skupinu nastavení." - -#: src/slic3r/GUI/Tab.cpp:2918 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." -msgstr "" -"Ikona Å IPKY ZPÄšT indikuje, že doÅ¡lo ke zmÄ›nÄ› nastavení, které není shodné s " -"naposledy uloženým pÅ™ednastavením pro aktuální skupinu nastavení.\n" -"KliknÄ›te pro reset vÅ¡ech nastavení pro aktuální skupinu nastavení na " -"naposledy uložené pÅ™ednastavení." - -#: src/slic3r/GUI/Tab.cpp:2924 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"Ikona ZAMKNUTÉHO ZÃMKU indikuje, že hodnota je shodná se systémovou hodnotou." - -#: src/slic3r/GUI/Tab.cpp:2925 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"Ikona ODEMKNUTÉHO ZÃMKU indikuje, že se hodnota zmÄ›nila a není shodná se " -"systémovou hodnotou.\n" -"KliknÄ›te pro reset souÄasné hodnoty na systémovou hodnotu." - -#: src/slic3r/GUI/Tab.cpp:2931 -msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." -msgstr "" -"Ikona BÃLÉ TEÄŒKY indikuje, že je hodnota shodná s naposledy uloženým " -"pÅ™ednastavením." - -#: src/slic3r/GUI/Tab.cpp:2932 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"Ikona Å IPKY ZPÄšT indikuje, že se hodnota zmÄ›nila a není shodná s naposledy " -"uloženým pÅ™ednastavením.\n" -"KliknÄ›te pro reset souÄasné hodnoty na naposledy uložené pÅ™ednastavení." - -# Used in this context: _("Save ") + title + _(" as:") -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" -msgstr " jako:" - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "The supplied name is not available." -msgstr "Zadaný název není dostupný." - -#: src/slic3r/GUI/Tab.cpp:3092 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 -msgid "Layers" -msgstr "Vrstvy" - -#: src/slic3r/GUI/Tab.cpp:3098 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3183 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3188 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 -msgid "Print Settings" -msgstr "Nastavení tisku" - -#: src/slic3r/GUI/Tab.hpp:311 -msgid "Filament Settings" -msgstr "Nastavení filamentu" - -#: src/slic3r/GUI/Tab.hpp:344 -msgid "Printer Settings" -msgstr "Nastavení tiskárny" - -#: src/slic3r/GUI/Tab.hpp:367 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:393 -msgid "Save preset" -msgstr "Uložit pÅ™ednastavení" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "Update available" -msgstr "Je dostupná aktualizace" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" -msgstr "Je dostupná nová verze Slic3r PE" - -#: src/slic3r/GUI/UpdateDialogs.cpp:35 -msgid "To download, follow the link below." -msgstr "Pro stažení, kliknÄ›te na odkaz níže." - -#: src/slic3r/GUI/UpdateDialogs.cpp:42 -msgid "Current version:" -msgstr "Aktuální verze:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "New version:" -msgstr "Nová verze:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:52 -msgid "Don't notify about new releases any more" -msgstr "Neupozorňovat na nové verze" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 -msgid "Configuration update" -msgstr "Aktualizace nastavení" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 -msgid "Configuration update is available" -msgstr "Je k dispozici aktualizace nastavení" - -#: src/slic3r/GUI/UpdateDialogs.cpp:73 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"PÅ™ejete si spustit instalaci?\n" -"\n" -"Nejprve bude provedena kompletní záloha nastavení. V případÄ› problémů s " -"novou verzí ji bude možné kdykoliv obnovit.\n" -"\n" -"Aktualizované balíÄky nastavení:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "Nekompatibilita Slic3ru" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "Konfigurace Slic3ru není kompatibilní" - -#: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Tato verze Slic3r PE není kompatibilní se souÄasnÄ› nainstalovanými balíÄky " -"nastavení.\n" -"Tato situace nejspíše nastala spuÅ¡tÄ›ním starší verze Slic3r PE po používání " -"novÄ›jší verze.\n" -"\n" -"Můžete buÄ ukonÄit Slic3r a zkusit to znovu s novou verzí, nebo můžete znovu " -"spustit výchozí konfiguraci. PÅ™ed instalací kompatibilního nastavení s touto " -"verzí Slic3ru dojde k vytvoÅ™ení zálohy souÄasné konfigurace.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Tato verze Slic3r PE: %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:126 -msgid "Incompatible bundles:" -msgstr "Nekompatibilní balíky:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" -msgstr "UkonÄit Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:145 -msgid "Re-configure" -msgstr "PÅ™enastavit" - -#: src/slic3r/GUI/UpdateDialogs.cpp:166 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -msgstr "" -"Slic3r PE nyní používá aktualizovanou konfiguraÄní strukturu.\n" -"\n" -"Byly uvedeny takzvaná \"Systémová pÅ™ednastavení\", která obsahují výchozí " -"nastavení pro rozliÄné tiskárny. Tato systémová pÅ™ednastavení nemohou být " -"upravena, místo toho si nyní uživatel může vytvoÅ™it svá vlastní " -"pÅ™ednastavení tím, že zdÄ›dí nastavení z jednoho ze systémových " -"pÅ™ednastavení.\n" -"NovÄ› vytvoÅ™ené pÅ™ednastavení může buÄ zdÄ›dit urÄitou hodnotu od svého " -"pÅ™edchůdce nebo ji pÅ™epsat upravenou hodnotou.\n" -"\n" -"Prosím postupujte dle %s, který následuje pro nastavení nových pÅ™ednastavení " -"a vyberte si, zdali chcete jejich automatickou aktualizaci." - -#: src/slic3r/GUI/UpdateDialogs.cpp:182 -msgid "For more information please visit our wiki page:" -msgstr "Pro více informací prosím navÅ¡tivte naší wiki stránku:" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 -msgid "Ramming customization" -msgstr "PÅ™izpůsobení rapidní extruze" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"Rapidní extruze oznaÄuje rychlé vytlaÄení filamentu tÄ›snÄ› pÅ™ed jeho výmÄ›nou " -"za jiný v multi material tiskárnÄ› s jedním extruderem. ÚÄelem je správnÄ› " -"vytvarovat konec vysouvaného filamentu tak, aby neblokoval zasunutí nového " -"filamentu a také mohl být sám pozdÄ›ji opÄ›tovnÄ› zasunut. Tento proces je " -"důležitý a rozdílné materiály mohou pro získání optimálního tvaru vyžadovat " -"různé rychlosti extruze. Z tohoto důvodu jsou objemové průtoky pÅ™i rapidní " -"extruzi uživatelsky upravitelné.\n" -"\n" -"Toto nastavení je urÄeno pro pokroÄilé uživatele, nesprávné nastavení velmi " -"pravdÄ›podobnÄ› povede k zaseknutí filamentu, vybrouÅ¡ení filamentu podávacím " -"koleÄkem, atd." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 -msgid "Total ramming time" -msgstr "Celkový Äas rapidní extruze" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 -msgid "Total rammed volume" -msgstr "Celkový objem rapidní extruze" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Ramming line width" -msgstr "Šířka linky pÅ™i rapidní extruzi" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 -msgid "Ramming line spacing" -msgstr "Rozestup linek pÅ™i rapidní extruzi" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 -msgid "Wipe tower - Purging volume adjustment" -msgstr "ÄŒistící věž - Úprava objemu ÄiÅ¡tÄ›ní" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 -msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." -msgstr "" -"Zde můžete upravit požadovaný objem ÄiÅ¡tÄ›ní (mm³) pro kteroukoliv dvojici " -"extruderů." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 -msgid "Extruder changed to" -msgstr "Extruder zmÄ›nÄ›n na" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 -msgid "unloaded" -msgstr "vyjmuto" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 -msgid "loaded" -msgstr "zavádÄ›n" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "Tool #" -msgstr "Nástroj #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." -msgstr "" -"Celkový objem ÄiÅ¡tÄ›ní je spoÄítán jako souÄet dvou hodnot níže v závislosti " -"na tom, které extrudery jsou zavedeny/vyjmuty." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Objem k vyÄiÅ¡tÄ›ní (mm³) pokud je filament" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 -msgid "From" -msgstr "PÅ™edchozí extruder" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 -msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"PÅ™epnutím do jednoduchého nastavení ztratíte zmÄ›ny provedené v pokroÄilém " -"režimu!\n" -"\n" -"Opravdu chcete pokraÄovat?" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show simplified settings" -msgstr "Zobrazit jednoduché nastavení" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show advanced settings" -msgstr "Zobrazit rozšířená nastavení" - -#: src/slic3r/Utils/OctoPrint.cpp:65 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:80 -msgid "Connection to OctoPrint works correctly." -msgstr "PÅ™ipojení k OctoPrint pracuje správnÄ›." - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Could not connect to OctoPrint" -msgstr "Nelze se spojit s OctoPrintem" - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Poznámka: Je vyžadován OctoPrint ve verzi alespoň 1.1.0." - -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:186 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:571 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "vyžaduje min. %s a max. %s" - -#: src/slic3r/Utils/PresetUpdater.cpp:576 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:578 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:334 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:335 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:357 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:372 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:375 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:379 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Print.cpp:1175 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1201 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1216 -msgid "" -"Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1234 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1239 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1241 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1253 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1255 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1257 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1259 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1281 -msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1290 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1307 -msgid "" -"One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1324 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1328 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1350 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1354 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:41 -msgid "Bed shape" -msgstr "Tvar tiskové podložky" - -#: src/libslic3r/PrintConfig.cpp:48 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"Toto nastavení řídí výšku (a tedy výsledný poÄet) Å™ezů/vrstev. TenÄí vrstva " -"poskytuje lepší pÅ™esnost, ale tiskne se déle." - -#: src/libslic3r/PrintConfig.cpp:56 -msgid "Max print height" -msgstr "Maximální výška tisku" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." -msgstr "" -"Nastavte tuto hodnotu na maximální výšku, která může být dosažena extruderem " -"bÄ›hem tisku." - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" -msgstr "Vyhnout se pÅ™ejíždÄ›ní perimetrů" - -#: src/libslic3r/PrintConfig.cpp:74 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"Optimalizovat rychloposuny do poÅ™adí aby se minimalizovalo pÅ™ejíždÄ›ní " -"perimetrů. Nejvíce užiteÄné u Bowdenových extruderů které trpí na vytékáné " -"filamentu. Toto nastavení zpomaluje tisk i generování G-code." - -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 -msgid "Other layers" -msgstr "Ostatní vrstvy" - -#: src/libslic3r/PrintConfig.cpp:83 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" -"Teplota tiskové podložky pro další vrstvy po první vrstvÄ›. Nastavením na " -"hodnotu nula vypnete ovládací příkazy teploty tiskové podložky ve výstupu." - -#: src/libslic3r/PrintConfig.cpp:86 -msgid "Bed temperature" -msgstr "Teplota tiskové podložky" - -#: src/libslic3r/PrintConfig.cpp:93 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"Tento vlastní kód je vložen pro každou zmÄ›nu vrstvy, pÅ™edtím než se pohne Z. " -"Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru stejnÄ› tak " -"jako [layer_num] a [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:104 -msgid "Between objects G-code" -msgstr "G-code mezi objekty" - -#: src/libslic3r/PrintConfig.cpp:105 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Tento kód je vložen mezi objekty, pokud je použit sekvenÄní tisk. Ve " -"výchozím nastavení je resetován extruder a tisková podložka pomocí non-wait " -"(neÄekacím) příkazem; nicménÄ› pokud jsou příkazy M104, M109, 140 nebo M190 " -"detekovány v tomto vlastním kódu, Slic3r nebude pÅ™idávat teplotní příkazy. " -"Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru, takže " -"můžete vložit příkaz “M109 S[first_layer_temperature]†kamkoliv chcete." - -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Spodních" - -#: src/libslic3r/PrintConfig.cpp:116 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "PoÄet plných vrstev." - -#: src/libslic3r/PrintConfig.cpp:118 -msgid "Bottom solid layers" -msgstr "Plné spodní vrstvy" - -#: src/libslic3r/PrintConfig.cpp:123 -msgid "Bridge" -msgstr "Most" - -#: src/libslic3r/PrintConfig.cpp:124 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "" -"Nastavení akcelerace tiskárny pÅ™i vytváření mostů. Nastavením na nulu " -"vypnete ovládání akcelerace pro mosty." - -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 -msgid "mm/s²" -msgstr "mm/s²" - -#: src/libslic3r/PrintConfig.cpp:133 -msgid "Bridging angle" -msgstr "Úhel vytváření mostů" - -#: src/libslic3r/PrintConfig.cpp:135 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" -"PÅ™epsání úhlu vytváření mostů. Nastavením hodnoty na nulu se bude úhel " -"vytváření mostů vypoÄítávat automaticky. PÅ™i zadání jiného úhlu, bude pro " -"vÅ¡echny mosty použitý zadaný úhel. Pro nulový úhel zadejte 180°." - -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:145 -msgid "Bridges fan speed" -msgstr "Rychlost ventilátoru pÅ™i vytváření mostů" - -#: src/libslic3r/PrintConfig.cpp:146 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "" -"Nastavená rychlost ventilátoru je využita vždy pÅ™i vytváření mostů a pÅ™esahů." - -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 +#: src/libslic3r/PrintConfig.cpp:179 src/libslic3r/PrintConfig.cpp:745 +#: src/libslic3r/PrintConfig.cpp:1154 src/libslic3r/PrintConfig.cpp:1217 +#: src/libslic3r/PrintConfig.cpp:1462 src/libslic3r/PrintConfig.cpp:2260 +#: src/libslic3r/PrintConfig.cpp:2502 msgid "%" msgstr "%" -#: src/libslic3r/PrintConfig.cpp:155 -msgid "Bridge flow ratio" -msgstr "PomÄ›r průtoku pÅ™i vytváření mostů" +#: src/libslic3r/GCode/PreviewData.cpp:504 +#, possible-c-format +msgid "%.2f - %.2f mm" +msgstr "%.2f - %.2f mm" -#: src/libslic3r/PrintConfig.cpp:157 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"Tato hodnota urÄuje množství vytlaÄeného plastu pÅ™i vytváření mostů. Mírným " -"snížením této hodnoty můžete pÅ™edejít pronášení ikdyž, pÅ™ednastavené hodnoty " -"jsou vÄ›tÅ¡inou dobré a je lepší experimentovat s chlazením (využitím " -"ventilátoru), než s touto hodnotou." +#: src/slic3r/GUI/PresetHints.cpp:226 +#, possible-c-format +msgid "%3.2f mm³/s" +msgstr "%3.2f mm³/s" -#: src/libslic3r/PrintConfig.cpp:168 -msgid "Bridges" -msgstr "Mosty" +#: src/slic3r/GUI/Plater.cpp:974 +#, possible-c-format +msgid "%d (%d shells)" +msgstr "%d (%d obalů)" -#: src/libslic3r/PrintConfig.cpp:170 -msgid "Speed for printing bridges." -msgstr "Rychlost pro vytváření mostů." +#: src/slic3r/GUI/Plater.cpp:982 +#, possible-c-format +msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" +msgstr "%d poÅ¡kozených faset, %d okrajů opraveno, %d faset odstranÄ›no, %d faset pÅ™idáno, %d faset navráceno, %d zadních okrajů" -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 -msgid "mm/s" -msgstr "mm/s" +#: src/slic3r/GUI/PresetHints.cpp:271 +#, possible-c-format +msgid "%d lines: %.2lf mm" +msgstr "%d linie: %.2lf mm" -#: src/libslic3r/PrintConfig.cpp:178 -msgid "Brim width" -msgstr "Šířka límce" +#: src/slic3r/GUI/MainFrame.cpp:894 +#, possible-c-format +msgid "%d presets successfully imported." +msgstr "%d pÅ™ednastavení úspěšnÄ› importováno." -#: src/libslic3r/PrintConfig.cpp:179 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "Šírka límce který bude vytiÅ¡tÄ›n v první vrstvÄ› okolo každého objektu." +#: src/slic3r/GUI/MainFrame.cpp:553 +#, possible-c-format +msgid "%s &Manual" +msgstr "%s Návod" -#: src/libslic3r/PrintConfig.cpp:187 -msgid "Clip multi-part objects" -msgstr "PÅ™ipnutí objektů z více Äástí k sobÄ›" +#: src/slic3r/GUI/MainFrame.cpp:550 +#, possible-c-format +msgid "%s &Website" +msgstr "%s &Webová stránka" -#: src/libslic3r/PrintConfig.cpp:188 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" -"PÅ™ipnutí pÅ™ekrývajících se objektů jeden k druhému pÅ™i Multimateriálovém " -"tisku. (Druhá Äást se pÅ™ipne k první, tÅ™etí Äást k první a druhé, atd)." +#: src/slic3r/GUI/UpdateDialogs.cpp:113 +#, possible-c-format +msgid "%s configuration is incompatible" +msgstr "Konfigurace %s není kompatibilní" -#: src/libslic3r/PrintConfig.cpp:196 -msgid "Colorprint height" -msgstr "" +#: src/slic3r/GUI/Field.cpp:136 +#, possible-c-format +msgid "%s doesn't support percentage" +msgstr "%s nepodporuje procenta" -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " -msgstr "" +#: src/slic3r/GUI/MsgDialog.cpp:73 +#, possible-c-format +msgid "%s error" +msgstr "%s chyba" -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Compatible printers condition" -msgstr "Stav kompatibilních tiskáren" +#: src/slic3r/GUI/ConfigWizard.cpp:336 +#, possible-c-format +msgid "%s Family" +msgstr "%s Rodina" -#: src/libslic3r/PrintConfig.cpp:208 -msgid "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." -msgstr "" -"Logický výraz může používat konfiguraÄní hodnoty aktivního profilu tiskárny. " -"Pokud je tento logický výraz pravdivý, potom je tento profil považován za " -"kompatibilní s aktivním profilem tiskárny." +#: src/slic3r/GUI/MsgDialog.cpp:74 +#, possible-c-format +msgid "%s has encountered an error" +msgstr "DoÅ¡lo k chybÄ› v programu %s" -#: src/libslic3r/PrintConfig.cpp:220 -msgid "Compatible print profiles condition" -msgstr "" +#: src/slic3r/GUI/UpdateDialogs.cpp:112 +#, possible-c-format +msgid "%s incompatibility" +msgstr "Není kompatibilní s %s" -#: src/libslic3r/PrintConfig.cpp:221 -msgid "" -"A boolean expression using the configuration values of an active print " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active print profile." -msgstr "" +#: src/slic3r/GUI/UpdateDialogs.cpp:172 +#, possible-c-format +msgid "%s now uses an updated configuration structure.\n\nSo called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\nAn inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n\nPlease proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." +msgstr "%s nyní používá aktualizovanou konfiguraÄní strukturu.\n\nByly uvedeny takzvaná \"Systémová pÅ™ednastavení\", která obsahují výchozí nastavení pro rozliÄné tiskárny. Tato systémová pÅ™ednastavení nemohou být upravena, místo toho si nyní uživatel může vytvoÅ™it svá vlastní pÅ™ednastavení tím, že zdÄ›dí nastavení z jednoho ze systémových pÅ™ednastavení.\nNovÄ› vytvoÅ™ené pÅ™ednastavení může buÄ zdÄ›dit urÄitou hodnotu od svého pÅ™edchůdce nebo ji pÅ™epsat upravenou hodnotou.\n\nPÅ™i nastavování nových pÅ™edvoleb postupujte podle pokynů v %s a vyberte, zda chcete povolit automatické pÅ™ednastavené aktualizace." -#: src/libslic3r/PrintConfig.cpp:235 -msgid "Complete individual objects" -msgstr "DokonÄení individuálních objektů" +#: src/slic3r/GUI/GUI_App.cpp:681 +#, possible-c-format +msgid "%s View Mode" +msgstr "%s Režim zobrazení" + +#: src/slic3r/GUI/MainFrame.cpp:563 +#, possible-c-format +msgid "&About %s" +msgstr "O %s" + +#: src/slic3r/GUI/MainFrame.cpp:479 +msgid "&About Slic3r" +msgstr "&O Slic3ru" + +#: src/slic3r/GUI/GUI_App.cpp:769 +msgid "&Configuration" +msgstr "&Konfigurace" + +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "&Configuration Snapshots" +msgstr "Záloha konfigura&ce" + +#: src/slic3r/GUI/MainFrame.cpp:454 +msgid "&Copy" +msgstr "Kopírovat" + +#: src/slic3r/GUI/MainFrame.cpp:447 +msgid "&Delete selected" +msgstr "&Smazat vybrané" + +#: src/slic3r/GUI/MainFrame.cpp:575 +msgid "&Edit" +msgstr "&Editovat" + +#: src/slic3r/GUI/MainFrame.cpp:377 +msgid "&Export" +msgstr "&Exportovat" + +#: lib/Slic3r/GUI/MainFrame.pm:227 +msgid "&Export Config Bundle…" +msgstr "&Exportovat KonfiguraÄní Balík…" + +#: lib/Slic3r/GUI/MainFrame.pm:221 +msgid "&Export Config…\tCtrl+E" +msgstr "&Exportovat Konfiguraci…\tCtrl+E" + +#: src/slic3r/GUI/MainFrame.cpp:480 src/slic3r/GUI/MainFrame.cpp:604 +msgid "&Filament Settings Tab" +msgstr "Panel nastavení &filamentu" + +#: src/slic3r/GUI/MainFrame.cpp:574 +msgid "&File" +msgstr "&Soubor" + +#: src/slic3r/GUI/ConfigWizard.cpp:1094 +msgid "&Finish" +msgstr "&DokonÄit" + +#: src/slic3r/GUI/MainFrame.cpp:580 +msgid "&Help" +msgstr "&Pomoc" + +#: src/slic3r/GUI/MainFrame.cpp:359 +msgid "&Import" +msgstr "&Importovat" + +#: lib/Slic3r/GUI/MainFrame.pm:224 +msgid "&Load Config Bundle…" +msgstr "&NaÄíst KonfiguraÄní Balík…" + +#: lib/Slic3r/GUI/MainFrame.pm:218 +msgid "&Load Config…\tCtrl+L" +msgstr "&NaÄíst Konfiguraci…\tCtrl+L" + +#: src/slic3r/GUI/ConfigWizard.cpp:1093 +msgid "&Next >" +msgstr "&Další>" + +#: lib/Slic3r/GUI/MainFrame.pm:376 +msgid "&Object" +msgstr "&Objekt" + +#: src/slic3r/GUI/MainFrame.cpp:339 +msgid "&Open Project" +msgstr "&Otevřít projekt" + +#: src/slic3r/GUI/MainFrame.cpp:456 +msgid "&Paste" +msgstr "Vložit" + +#: lib/Slic3r/GUI/MainFrame.pm:375 +msgid "&Plater" +msgstr "&Podložka" + +#: src/slic3r/GUI/MainFrame.cpp:471 +msgid "&Plater Tab" +msgstr "&Panel Podložka" + +#: src/slic3r/GUI/GUI_App.cpp:665 +msgid "&Preferences" +msgstr "Nastavení" + +#: src/slic3r/GUI/MainFrame.cpp:409 +msgid "&Quit" +msgstr "&UkonÄit" + +#: src/slic3r/GUI/MainFrame.cpp:406 +msgid "&Repair STL file" +msgstr "Op&ravit soubor STL" + +#: lib/Slic3r/GUI/MainFrame.pm:244 +msgid "&Repeat Last Quick Slice\tCtrl+Shift+U" +msgstr "&Opakovat Poslední Slicování\tCtrl+Shift+U" + +#: src/slic3r/GUI/MainFrame.cpp:341 +msgid "&Save Project" +msgstr "Uložit projekt" + +#: src/slic3r/GUI/MainFrame.cpp:444 +msgid "&Select all" +msgstr "Vybrat vÅ¡e" + +#: src/slic3r/GUI/MainFrame.cpp:577 +msgid "&View" +msgstr "&Zobrazení" + +#: src/slic3r/GUI/MainFrame.cpp:576 +msgid "&Window" +msgstr "&Okno" + +#: lib/Slic3r/GUI/MainFrame.pm:255 +msgid "(&Re)Slice Now\tCtrl+S" +msgstr "(&Znovu)Slicovat\tCtrl+S" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:89 +msgid "(default)" +msgstr "(výchozí)" + +#: src/libslic3r/PrintConfig.cpp:1376 +msgid "(minimum)" +msgstr "(minimálnÄ›)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +msgid "(Re)slice" +msgstr "(Znovu)Slicovat" + +#: src/slic3r/GUI/MainFrame.cpp:403 +msgid "(Re)Slice &Now" +msgstr "(Z&novu)Slicovat" + +#: src/slic3r/GUI/MainFrame.cpp:641 +msgid ") not found." +msgstr ") nebyl nalezen." + +#: src/slic3r/GUI/GUI_App.cpp:789 +msgid ". Discard changes and continue anyway?" +msgstr ". PokraÄovat i pÅ™es zahození zmÄ›n?" + +#: lib/Slic3r/GUI/Plater/3DPreview.pm:69 +msgid "1 Layer" +msgstr "1 Vrstva" + +#: lib/Slic3r/GUI/Plater.pm:206 +msgid "2D" +msgstr "2D" + +#: src/slic3r/GUI/MainFrame.cpp:487 +msgid "3&D" +msgstr "3&D" + +#: lib/Slic3r/GUI/Plater.pm:164 lib/Slic3r/GUI/Plater.pm:2323 +msgid "3D" +msgstr "3D" + +#: src/libslic3r/PrintConfig.cpp:804 +msgid "3D Honeycomb" +msgstr "3D Plástev" + +#: src/slic3r/GUI/GUI_App.cpp:741 +msgid "3D-Scene will be cleaned." +msgstr "3D-scéna bude smazána." + +#: lib/Slic3r/GUI/Plater.pm:1756 +msgid "3MF file exported to " +msgstr "Soubor 3MF byl exportován do " + +#: src/slic3r/GUI/Plater.cpp:3590 +#, possible-c-format +msgid "3MF file exported to %s" +msgstr "Soubor 3MF byl exportován do %s" + +#: lib/Slic3r/GUI/Plater.pm:258 +msgid "45° ccw" +msgstr "45° doleva" + +#: lib/Slic3r/GUI/Plater.pm:259 +msgid "45° cw" +msgstr "45° doprava" + +#: src/slic3r/GUI/ConfigWizard.cpp:1092 +msgid "< &Back" +msgstr "<&ZpÄ›t" + +#: src/libslic3r/PrintConfig.cpp:251 +msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." +msgstr "Logický výraz může používat konfiguraÄní hodnoty aktivního profilu tiskárny. Pokud je tento logický výraz pravdivý, potom je tento profil považován za kompatibilní s aktivním profilem tiskárny." #: src/libslic3r/PrintConfig.cpp:236 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"PÅ™i tisku více objektů nebo kopií tiskárna kompletnÄ› dokonÄí jeden objekt, " -"pÅ™edtím než zaÄne tisknout druhý (zaÄíná od spodní vstvy). Tato vlastnost je " -"výhodná z důvodů snížení rizika zniÄených výtisků. Slic3r by mÄ›l varovat pÅ™i " -"možné kolizi extruderu s objektem a zabránit mu, pÅ™esto doporuÄujeme " -"obezÅ™etnost." +msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." +msgstr "Logický výraz může používat konfiguraÄní hodnoty aktivního profilu tiskárny. Pokud je tento logický výraz pravdivý, potom je tento profil považován za kompatibilní s aktivním profilem tiskárny." -#: src/libslic3r/PrintConfig.cpp:245 -msgid "Enable auto cooling" -msgstr "Zapnutí automatického chlazení" +#: src/slic3r/GUI/ConfigWizard.cpp:609 +msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." +msgstr "Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS." -#: src/libslic3r/PrintConfig.cpp:246 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "" -"Zapne výpoÄet automatického chlazení který upravuje rychlost tisku a " -"ventilátoru v závislosti na délce tisku jedné vstvy." +#: src/slic3r/GUI/ConfigWizard.cpp:623 +msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." +msgstr "Obecným pravidlem je 160 až 230° pro PLA a 215 až 250° pro ABS. Zadejte nula, pokud nemáte vyhřívanou podložku." -#: src/libslic3r/PrintConfig.cpp:252 -msgid "Cooling tube position" -msgstr "Pozice chladící trubiÄky" +#: src/libslic3r/SLA/SLASupportTree.cpp:2162 +msgid "Abort" +msgstr "PÅ™eruÅ¡it" -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "Vzdálenost ze stÅ™edu chladící trubiÄky ke Å¡piÄce extruderu " +#: src/slic3r/GUI/AboutDialog.cpp:35 +#, possible-c-format +msgid "About %s" +msgstr "O %s" -#: src/libslic3r/PrintConfig.cpp:261 -msgid "Cooling tube length" -msgstr "Délka chladící trubiÄky" +#: src/slic3r/GUI/AboutDialog.cpp:35 +msgid "About Slic3r" +msgstr "O Slic3ru" -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "" -"Délka kovové trubiÄky urÄené pro ochlazení a zformování filamentu po " -"vytažení z extruderu " +#: src/libslic3r/GCode/PreviewData.cpp:499 +#, possible-c-format +msgid "above %.2f mm" +msgstr "nad %.2f mm" -#: src/libslic3r/PrintConfig.cpp:271 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"Toto je hodnota akcelerace na kterou se tiskárna vrátí po specifických " -"úpravách akcelerace například pÅ™i tisku (perimetru/výplnÄ›). Nastavením na " -"nulu zabráníte návratu rychlostí zcela." +#: src/libslic3r/PrintConfig.cpp:1499 +msgid "Above Z" +msgstr "Nad Z" -#: src/libslic3r/PrintConfig.cpp:281 -msgid "Default filament profile" -msgstr "Výchozí profil filamentu" +#: src/slic3r/GUI/Tab.cpp:1103 +msgid "Acceleration control (advanced)" +msgstr "Kontrola akcelerací (pokroÄilé)" -#: src/libslic3r/PrintConfig.cpp:282 -msgid "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." -msgstr "" -"Výchozí materiálový profil spojený se souÄasným profilem tiskárny. PÅ™i " -"výbÄ›ru souÄasného profilu tiskárny se aktivuje tento materiálový profil." +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73 +msgid "Activate" +msgstr "Aktivovat" -#: src/libslic3r/PrintConfig.cpp:287 -msgid "Default print profile" -msgstr "Výchozí tiskový profil" +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39 +msgid "Active: " +msgstr "Aktivní: " -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 -msgid "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." -msgstr "" -"Výchozí tiskový profil spojený se souÄasným profilem tiskárny. PÅ™i výbÄ›ru " -"souÄasného profilu tiskárny se aktivuje tento tiskový profil." +#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:237 +msgid "Add a new printer" +msgstr "PÅ™idat novou tiskárnu" -#: src/libslic3r/PrintConfig.cpp:293 -msgid "Disable fan for the first" -msgstr "Vypnutí chlazení pro prvních" +#: src/libslic3r/PrintConfig.cpp:2517 +msgid "Add a pad underneath the supported model" +msgstr "Pod podepíraný model pÅ™idá podložku" -#: src/libslic3r/PrintConfig.cpp:294 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" -"Nastavením poÄtu prvních vstev s vypnutým chlazením pro nezhorÅ¡ování " -"pÅ™ilnavosti." +#: src/libslic3r/PrintConfig.cpp:1971 +msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." +msgstr "PÅ™idá pouzdro (jednu obvodovou Äáru) kolem podpÄ›r. Díky tomu je podpora spolehlivÄ›jší, ale také obtížnÄ›jší na odstranÄ›ní." -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "layers" -msgstr "vrstvu" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:186 +msgid "Add color change marker for current layer" +msgstr "PÅ™idat znaÄku zmÄ›ny barvy pro aktuální vrstvu" -#: src/libslic3r/PrintConfig.cpp:304 -msgid "Don't support bridges" -msgstr "Nevytvářet podpory pod mosty" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +msgid "Add Instance to selected object " +msgstr "PÅ™idat instanci vybraného objektu" -#: src/libslic3r/PrintConfig.cpp:306 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "" -"Experimentální nastavení pro zabránÄ›ní tvorbÄ› podpÄ›r v oblastech po mosty." +#: src/slic3r/GUI/GUI_ObjectList.cpp:1067 +msgid "Add modifier" +msgstr "PÅ™idat modifikátor" -#: src/libslic3r/PrintConfig.cpp:313 -msgid "Distance between copies" -msgstr "Vzdálenost mezi kopiemi" - -#: src/libslic3r/PrintConfig.cpp:314 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Vzdálenost, použitá pro funkci automatického rozmístÄ›ní po podložce." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Elephant foot compensation" -msgstr "Kompenzace rozplácnutí první vrstvy" - -#: src/libslic3r/PrintConfig.cpp:324 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"První vrstva bude v rovinÄ› XY zmenÅ¡ena nakonfigurovanou hodnotou, která " -"kompenzuje rozplácnutí první vrstvy." - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "" -"Tato ukonÄovací procedůra je vložena na konec výstupního souboru. Můžete " -"pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru." - -#: src/libslic3r/PrintConfig.cpp:345 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"Tato ukonÄovací procedůra je vložena na konec výstupního souboru, pÅ™ed " -"koneÄným G-code tiskárny. Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré " -"nastavení Slic3ru. Pokud máte tiskárnu s více extrudery, G-code je zpracován " -"v poÅ™adí extruderů." - -#: src/libslic3r/PrintConfig.cpp:356 -msgid "Ensure vertical shell thickness" -msgstr "Zajistit tloušťku svislých stÄ›n" - -#: src/libslic3r/PrintConfig.cpp:358 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" -"PÅ™idá plnou výplň u Å¡ikmých ploch pro garanci tloušťky svislých stÄ›n " -"(vrchních a spodních plných vrstev)." - -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Vzor výplnÄ› horních/spodních vrstev" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "" -"Vzor výplnÄ› pro vrchní/spodní vrstvy. Ovlivňuje pouze vnÄ›jší viditelné " -"vrstvy. Neovlivňuje pÅ™ilehlé plné obaly." - -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 -msgid "External perimeters" -msgstr "VnÄ›jší perimetry" - -#: src/libslic3r/PrintConfig.cpp:388 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" -"Nastavením na kladnou hodnotu, definuje šířku manuální extruze pro vnÄ›jší " -"obvod. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je " -"nastavena, jinak se použije průmÄ›r trysky 1,125 x. Pokud je hodnota " -"vyjádÅ™ena jako procento (například 200%), vypoÄítá se podle výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "mm or % (leave 0 for default)" -msgstr "mm nebo % (ponechte 0 jako výchozí)" - -#: src/libslic3r/PrintConfig.cpp:399 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Toto oddÄ›lené nastavení ovlivní rychlost tisku vnÄ›jších perimetrů (tÄ›ch " -"viditelných). Pokud je hodnota vyjádÅ™ena procenty (například: 80%), bude " -"rychlost vypoÄítána z hodnoty rychlosti tisku perimetrů, nastavené výše. " -"Nastavte nulu pro automatický výpoÄet." - -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 -msgid "mm/s or %" -msgstr "mm/s nebo %" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "External perimeters first" -msgstr "Nejprve tisknout vnÄ›jší perimetry" - -#: src/libslic3r/PrintConfig.cpp:411 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "" -"Tisk obrysových perimetrů od vnÄ›jších po vnitÅ™ní namísto opaÄného výchozího " -"poÅ™adí." - -#: src/libslic3r/PrintConfig.cpp:418 -msgid "Extra perimeters if needed" -msgstr "Extra perimetry pokud jsou potÅ™eba" - -#: src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:447 #, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" -"PÅ™idání více perimetrů, pokud je potÅ™eba, pro vyvarování se tvorbÄ› mezer v " -"Å¡ikmých plochách. Slic3r pokraÄuje v pÅ™idávání perimetrů, dokud není " -"podepÅ™eno více než 70% perimetrů v následující vrstvÄ›." +msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." +msgstr "PÅ™idání více perimetrů, pokud je potÅ™eba, pro vyvarování se tvorbÄ› mezer v Å¡ikmých plochách. Slic3r pokraÄuje v pÅ™idávání perimetrů, dokud není podepÅ™eno více než 70% perimetrů v následující vrstvÄ›." -#: src/libslic3r/PrintConfig.cpp:431 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" -"Extruder, který chcete použít (pokud nejsou zvoleny specifiÄtÄ›jší nastavení " -"extruderu). Tato hodnota pÅ™epíše nastavení perimetrového a výplňového " -"exrtuderu, ale ne nastavení extruderu pro podpory." +#: src/slic3r/GUI/GUI_ObjectList.cpp:1066 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1082 +msgid "Add part" +msgstr "PÅ™idat díl" -#: src/libslic3r/PrintConfig.cpp:444 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"Zadejte vertikální vzdálenost mezi tryskou a (obvykle) tyÄemi osy X. Jinými " -"slovy, je to výška kolizního prostoru okolo extruderu a pÅ™edstavuje " -"maximální hloubku, které může extruder dosáhnout pÅ™ed kolizí s jinými, již " -"vytiÅ¡tÄ›nými, objekty." +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1229 +msgid "Add point" +msgstr "PÅ™idat bod" -#: src/libslic3r/PrintConfig.cpp:455 -msgid "Radius" -msgstr "Rádius" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1232 +msgid "Add point to selection" +msgstr "PÅ™idat bod k výbÄ›ru" -#: src/libslic3r/PrintConfig.cpp:456 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"Zadejte horizontální rádius kolizního prostoru okolo extruderu. Pokud tryska " -"není v centru tohoto rádiusu, zvolte nejdelší vzdálenost. Toto nastavení " -"slouží ke kontrole kolizí a zobrazení grafického náhledu na podložce." +#: src/slic3r/GUI/GUI_ObjectList.cpp:1118 +msgid "Add settings" +msgstr "PÅ™idat nastavení" -#: src/libslic3r/PrintConfig.cpp:467 -msgid "Extruder Color" -msgstr "Barva extruderu" +#: src/libslic3r/PrintConfig.cpp:382 +msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." +msgstr "PÅ™idá plnou výplň u Å¡ikmých ploch pro garanci tloušťky svislých stÄ›n (vrchních a spodních plných vrstev)." -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Toto je ve Slic3ru jako názorná pomoc." +#: src/slic3r/GUI/GUI_ObjectList.cpp:1069 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1089 +msgid "Add support blocker" +msgstr "PÅ™idat blokátor podpÄ›r" -#: src/libslic3r/PrintConfig.cpp:475 -msgid "Extruder offset" -msgstr "Odsazení extruderu" +#: src/slic3r/GUI/GUI_ObjectList.cpp:1068 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1086 +msgid "Add support enforcer" +msgstr "PÅ™idat vynucení podpÄ›r" -#: src/libslic3r/PrintConfig.cpp:476 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"Pokud firmware nezpracovává umístÄ›ní extruderu správnÄ›, potÅ™ebujete aby to " -"vzal G-code v úvahu. Toto nastavení umožňuje urÄit odsazení každého " -"extruderu vzhledem k prvnímu. OÄekávají se pozitivní souÅ™adnice (budou " -"odeÄteny od souÅ™adnice XY)." +#: src/slic3r/GUI/Tab.cpp:920 +msgid "Additional information:" +msgstr "Doplňující informace:" -#: src/libslic3r/PrintConfig.cpp:486 -msgid "Extrusion axis" -msgstr "Osa extruderu" +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 +msgid "Additional Settings" +msgstr "Další nastavení" -#: src/libslic3r/PrintConfig.cpp:487 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"Touto volbou nastavíte písmeno osy pÅ™idružené k extruderu tiskárny (obvykle " -"E, ale nÄ›které tiskárny používají A)." +#: src/slic3r/GUI/ConfigWizard.cpp:431 +msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." +msgstr "Dále je pÅ™ed nainstalováním aktualizace vytvoÅ™ena záloha veÅ¡kerého nastavení." -#: src/libslic3r/PrintConfig.cpp:493 -msgid "Extrusion multiplier" -msgstr "NásobiÄ extruze" +#: src/slic3r/GUI/BonjourDialog.cpp:72 +msgid "Address" +msgstr "Adresa" -#: src/libslic3r/PrintConfig.cpp:494 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"Tento faktor mÄ›ní pomÄ›rné množství průtoku. Možná bude tÅ™eba toto nastavení " -"vyladit, pro dosažení hezkého povrchu a správné šířky jednotlivých stÄ›n. " -"Obvyklé hodnoty jsou mezi 0,9 a 1,1. Pokud si myslíte, že hodnotu " -"potÅ™ebujete zmÄ›nit více, zkontrolujte průmÄ›r filamentu a E kroky ve firmwaru." +#: lib/Slic3r/GUI/Plater.pm:250 lib/Slic3r/GUI/Plater.pm:268 +msgid "Add…" +msgstr "PÅ™idat…" -#: src/libslic3r/PrintConfig.cpp:503 -msgid "Default extrusion width" -msgstr "Výchozí šířka extruze" +#: src/slic3r/GUI/GUI_App.cpp:675 src/slic3r/GUI/GUI_ObjectList.cpp:76 +#: src/slic3r/GUI/GUI_ObjectList.cpp:517 src/slic3r/GUI/Tab.cpp:1026 +#: src/slic3r/GUI/Tab.cpp:1041 src/slic3r/GUI/Tab.cpp:1139 +#: src/slic3r/GUI/Tab.cpp:1142 src/slic3r/GUI/Tab.cpp:1515 +#: src/slic3r/GUI/Tab.cpp:1940 src/slic3r/GUI/Tab.cpp:3435 +#: src/slic3r/GUI/wxExtensions.cpp:2460 src/libslic3r/PrintConfig.cpp:72 +#: src/libslic3r/PrintConfig.cpp:187 src/libslic3r/PrintConfig.cpp:350 +#: src/libslic3r/PrintConfig.cpp:988 src/libslic3r/PrintConfig.cpp:2175 +msgid "Advanced" +msgstr "PokroÄilý" -#: src/libslic3r/PrintConfig.cpp:505 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" -"Nastavením kladné hodnoty povolíte manuální šířku extruze. Pokud je hodnota " -"ponechána na nule, Slic3r odvozuje šířku extruze z průmÄ›ru trysky (viz " -"nápovÄ›dy pro šířku extruze perimetru, šířku extruze výplnÄ› apod.). Pokud je " -"hodnota vyjádÅ™ena procenty (například: 230%), vypoÄítá se z výšky vrstvy." +#: src/slic3r/GUI/GUI_App.cpp:675 +msgid "Advanced View Mode" +msgstr "PokroÄilý režim" -#: src/libslic3r/PrintConfig.cpp:509 -msgid "mm or % (leave 0 for auto)" -msgstr "mm or % (pro automatické ponechte 0)" +#: xs/src/slic3r/GUI/FirmwareDialog.cpp:400 +msgid "Advanced: avrdude output log" +msgstr "PokroÄilé: výstupní log avrdude" -#: src/libslic3r/PrintConfig.cpp:515 -msgid "Keep fan always on" -msgstr "Ventilátor vždy zapnutý" +#: src/slic3r/GUI/FirmwareDialog.cpp:803 +msgid "Advanced: Output log" +msgstr "PokroÄilý:  Výstupní log" -#: src/libslic3r/PrintConfig.cpp:516 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"Pokud je tato funkce zapnutá, ventilátor nebude nikdy vypnut a bude udržován " -"v chodu alespoň rychlostí která je nastavena jako minimální rychlost. " -"UžiteÄné pro PLA, Å¡kodlivé pro ABS." +#: src/libslic3r/PrintConfig.cpp:636 +msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." +msgstr "Po výmÄ›nÄ› nástroje nemusí být známa pÅ™esná poloha novÄ› zavedeného filamentu uvnitÅ™ trysky a tlak filamentu pravdÄ›podobnÄ› jeÅ¡tÄ› není stabilní. PÅ™ed vyÄiÅ¡tÄ›ním tiskové hlavy do výplnÄ› nebo do objektu bude Slic3r toto množství materiálu vždy vytlaÄovat do Äistící věže, aby se spolehlivÄ› vytvoÅ™ily následné výplnÄ› nebo objekty." -#: src/libslic3r/PrintConfig.cpp:522 -msgid "Enable fan if layer print time is below" -msgstr "Zapnout ventilátor pokud je doba tisku vrstvy kratší než" +#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1031 +msgid "After layer change G-code" +msgstr "G-code po zmÄ›nÄ› vrstvy" -#: src/libslic3r/PrintConfig.cpp:523 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"Pokud je doba tisku vrstvy odhadnuta jako kratší než tato nastavená hodnota " -"ve vteÅ™inách, ventilátor bude aktivován a jeho rychlost bude vypoÄtena " -"interpolací minimální a maximální rychlosti." +#: src/libslic3r/PrintConfig.cpp:3009 +msgid "Align the model to the given point." +msgstr "Zarovnejte model s daným bodem." -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 +#: src/libslic3r/PrintConfig.cpp:3008 +msgid "Align XY" +msgstr "Zarovnat XY" + +#: src/libslic3r/PrintConfig.cpp:1561 +msgid "Aligned" +msgstr "Zarovnaný" + +#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:2986 +msgid "All" +msgstr "VÅ¡echny" + +#: src/libslic3r/Print.cpp:1195 +msgid "All extruders must have the same diameter for single extruder multimaterial printer." +msgstr "VÅ¡echny průmÄ›ry trysek musí být pro multimateriálovou tiskárnu s jedním extrudérem stejné." + +#: src/libslic3r/Print.cpp:1135 +msgid "All objects are outside of the print volume." +msgstr "VÅ¡echny objekty jsou mimo tiskový prostor." + +#: src/slic3r/GUI/Plater.cpp:3298 +msgid "All objects will be removed, continue ?" +msgstr "VÅ¡echny objekty budou obebrány, pokraÄovat?" + +#: src/slic3r/GUI/ConfigWizard.cpp:188 +msgid "All standard" +msgstr "VÅ¡echny běžné" + +#: src/libslic3r/Zipper.cpp:65 +msgid "allocation failed" +msgstr "alokace selhala" + +#: src/slic3r/GUI/Plater.cpp:2939 +msgid "Along X axis" +msgstr "Podél osy X" + +#: lib/Slic3r/GUI/Plater.pm:2251 lib/Slic3r/GUI/Plater.pm:2267 +#: lib/Slic3r/GUI/Plater.pm:2283 +msgid "Along X axis…" +msgstr "Podél osy X…" + +#: src/slic3r/GUI/Plater.cpp:2941 +msgid "Along Y axis" +msgstr "Podél osy Y" + +#: lib/Slic3r/GUI/Plater.pm:2254 lib/Slic3r/GUI/Plater.pm:2270 +#: lib/Slic3r/GUI/Plater.pm:2286 +msgid "Along Y axis…" +msgstr "Podél osy Y…" + +#: src/slic3r/GUI/Plater.cpp:2943 +msgid "Along Z axis" +msgstr "Podél osy Z" + +#: lib/Slic3r/GUI/Plater.pm:2257 lib/Slic3r/GUI/Plater.pm:2273 +#: lib/Slic3r/GUI/Plater.pm:2289 +msgid "Along Z axis…" +msgstr "Podél osy Z…" + +#: src/slic3r/GUI/ConfigWizard.cpp:122 +msgid "Alternate nozzles:" +msgstr "Alternativní trysky:" + +#: lib/Slic3r/GUI/Plater.pm:1740 +msgid "AMF file exported to " +msgstr "Soubor AMF byl exportován do " + +#: src/slic3r/GUI/Plater.cpp:3561 +#, possible-c-format +msgid "AMF file exported to %s" +msgstr "Soubor AMF byl exportován do %s" + +#: src/slic3r/GUI/Tab.cpp:2781 +msgid "and it has the following unsaved changes:" +msgstr "a má neuložené následující zmÄ›ny:" + +#: src/slic3r/GUI/Plater.cpp:2461 +msgid "Another export job is currently running." +msgstr "V souÄasné dobÄ› běží jiná úloha exportu." + +#: src/slic3r/GUI/Tab.cpp:915 +msgid "Any modifications should be saved as a new preset inherited from this one. " +msgstr "Jakékoliv úpravy by mÄ›ly být uloženy jako nové pÅ™ednastavení zdÄ›dÄ›ná z tohoto. " + +#: xs/src/libslic3r/PrintConfig.cpp:1109 +msgid "API Key" +msgstr "KlÃ­Ä API" + +#: src/libslic3r/PrintConfig.cpp:88 +msgid "API Key / Password" +msgstr "API klÃ­Ä / Heslo" + +#: src/slic3r/GUI/GUI_App.cpp:671 +msgid "Application preferences" +msgstr "Nastavení aplikace" + +#: xs/src/slic3r/GUI/GUI.cpp:406 +msgid "Application will be restarted" +msgstr "Aplikace bude restartována" + +#: src/slic3r/GUI/GUI_App.cpp:740 +msgid "Application will be restarted after language change." +msgstr "Aplikace bude po zmÄ›nÄ› jazyka restartována." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:864 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1240 +msgid "Apply changes" +msgstr "Aplikovat zmÄ›ny" + +#: src/libslic3r/PrintConfig.cpp:542 src/libslic3r/PrintConfig.cpp:1638 msgid "approximate seconds" msgstr "vteÅ™in pÅ™ibližnÄ›" -#: src/libslic3r/PrintConfig.cpp:534 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 +msgid "Archimedean Chords" +msgstr "Archimedean Chords" + +#: src/libslic3r/Zipper.cpp:91 +msgid "archive is too large" +msgstr "archiv je moc velký" + +#: src/slic3r/GUI/Tab.cpp:2936 +msgid "Are you sure you want to " +msgstr "Jste si jistý že chcete " + +#: src/slic3r/GUI/FirmwareDialog.cpp:862 +msgid "Are you sure you want to cancel firmware flashing?\nThis could leave your printer in an unusable state!" +msgstr "Opravdu chcete ukonÄit nahrávání firmware?\nTiskárna může zůstat v nefunkÄním stavu!" + +#: src/libslic3r/PrintConfig.cpp:2258 +msgid "Area fill" +msgstr "ZaplnÄ›ná plocha" + +#: lib/Slic3r/GUI/Plater.pm:2238 +msgid "Around X axis…" +msgstr "Okolo osy X…" + +#: lib/Slic3r/GUI/Plater.pm:2241 +msgid "Around Y axis…" +msgstr "Okolo osy Y…" + +#: lib/Slic3r/GUI/Plater.pm:2244 +msgid "Around Z axis…" +msgstr "Okolo osy Z…" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 +msgid "Arrange" +msgstr "Uspořádat" + +#: src/libslic3r/PrintConfig.cpp:3054 +msgid "Arrange the supplied models in a plate and merge them in a single model in order to perform actions once." +msgstr "Uspořádejte modely na tiskovou podložku a sluÄte je do jednoho modelu, abyste s nimi mohli provádÄ›t akce jednou." + +#: src/slic3r/GUI/Plater.cpp:2106 +msgid "Arranging" +msgstr "Uspořádávání" + +#: src/slic3r/GUI/Plater.cpp:2103 +msgid "Arranging canceled" +msgstr "Uspořádávání bylo zruÅ¡eno" + +#: src/slic3r/GUI/Plater.cpp:2144 +msgid "Arranging done." +msgstr "Uspořádávání dokonÄeno." + +#: src/slic3r/GUI/GUI_App.cpp:514 +msgid "Array of language names and identifiers should have the same size." +msgstr "Pole jazykových jmen a identifikátorů by mÄ›la mít stejnou velikost." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Arrow Down" +msgstr "Å ipka dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Arrow Left" +msgstr "Å ipka vlevo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Arrow Right" +msgstr "Å ipka vpravo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Arrow Up" +msgstr "Å ipka nahoru" + +#: xs/src/slic3r/GUI/GUI.cpp:660 +msgid "Attempt to free unreferenced scalar" +msgstr "Attempt to free unreferenced scalar" + +#: src/slic3r/GUI/GUI.cpp:144 src/slic3r/GUI/GUI_App.cpp:743 +#: src/slic3r/GUI/Tab.cpp:2798 +msgid "Attention!" +msgstr "Pozor!" + +#: src/libslic3r/PrintConfig.cpp:1785 +msgid "Auto generated supports" +msgstr "Automaticky generované podpÄ›ry" + +#: src/slic3r/GUI/Preferences.cpp:44 +msgid "Auto-center parts" +msgstr "Auto-centrování objektů" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:902 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1243 +msgid "Auto-generate points" +msgstr "Automatické generování bodů" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 +msgid "Auto-generate points [A]" +msgstr "Automatické generování bodů [A]" + +#: src/slic3r/GUI/Plater.cpp:979 +#, possible-c-format +msgid "Auto-repaired (%d errors)" +msgstr "Automaticky opraveno (%d chyb)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:230 +#, possible-c-format +msgid "Auto-repaired (%d errors):\n" +msgstr "Automaticky opraveno ( %d chyb):\n" + +#: src/slic3r/GUI/FirmwareDialog.cpp:771 +msgid "Autodetected" +msgstr "Automaticky detekováno" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1166 +msgid "Autogeneration will erase all manually edited points.\n\nAre you sure you want to do it?\n" +msgstr "Automatické generování vymaže vÅ¡echny ruÄnÄ› vytvoÅ™ené body. \n\nOpravdu to chcete udÄ›lat?\n" + +#: src/slic3r/GUI/Tab.cpp:3421 +msgid "Automatic generation" +msgstr "Automatické generování" + +#: src/slic3r/GUI/ConfigWizard.cpp:401 +msgid "Automatic updates" +msgstr "Automatické aktualizace" + +#: src/slic3r/GUI/MainFrame.cpp:406 +msgid "Automatically repair an STL file" +msgstr "Automaticky opravit STL soubor" + +#: src/slic3r/GUI/Tab.cpp:1110 +msgid "Autospeed (advanced)" +msgstr "Automatická rychlost (pokroÄilé)" + +#: src/libslic3r/PrintConfig.cpp:111 +msgid "Avoid crossing perimeters" +msgstr "Vyhnout se pÅ™ejíždÄ›ní perimetrů" + +#: src/slic3r/GUI/Tab.cpp:3113 +msgid "BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick to reset all settings for the current option group to the last saved preset." +msgstr "Ikona Å IPKY ZPÄšT indikuje, že doÅ¡lo ke zmÄ›nÄ› nastavení, které není shodné s naposledy uloženým pÅ™ednastavením pro aktuální skupinu nastavení.\nKliknÄ›te pro reset vÅ¡ech nastavení pro aktuální skupinu nastavení na naposledy uložené pÅ™ednastavení." + +#: src/slic3r/GUI/Tab.cpp:3127 +msgid "BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\nClick to reset current value to the last saved preset." +msgstr "Ikona Å IPKY ZPÄšT indikuje, že se hodnota zmÄ›nila a není shodná s naposledy uloženým pÅ™ednastavením.\nKliknÄ›te pro reset souÄasné hodnoty na naposledy uložené pÅ™ednastavení." + +#: src/slic3r/GUI/Tab.cpp:3077 +msgid "BACK ARROW;indicates that the settings were changed and are not equal to the last saved preset for the current option group.\nClick the BACK ARROW icon to reset all settings for the current option group to the last saved preset." +msgstr "Å IPKA ZPÄšT;indikuje, že doÅ¡lo ke zmÄ›nÄ› nastavení, které není shodné s naposledy uloženým pÅ™ednastavením pro aktuální skupinu nastavení. KliknÄ›te na ikonu Å IPKY ZPÄšT pro reset vÅ¡ech nastavení pro aktuální skupinu nastavení na naposledy uložené pÅ™ednastavení." + +#: src/slic3r/GUI/Preferences.cpp:52 +msgid "Background processing" +msgstr "Zpracování na pozadí" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:242 +msgid "backwards edges" +msgstr "zadní okraje" + +#: src/slic3r/GUI/Tab.cpp:1484 +msgid "Bed" +msgstr "Tisková podložka" + +#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:524 +msgid "Bed Shape" +msgstr "Tvar tiskové podložky" + +#: src/libslic3r/PrintConfig.cpp:50 +msgid "Bed shape" +msgstr "Tvar tiskové podložky" + +#: src/slic3r/GUI/ConfigWizard.cpp:524 +msgid "Bed Shape and Size" +msgstr "Tvar a rozmÄ›r podložky" + +#: src/libslic3r/PrintConfig.cpp:122 +msgid "Bed temperature" +msgstr "Teplota tiskové podložky" + +#: src/libslic3r/PrintConfig.cpp:120 +msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." +msgstr "Teplota tiskové podložky pro další vrstvy po první vrstvÄ›. Nastavením na hodnotu nula vypnete ovládací příkazy teploty tiskové podložky ve výstupu." + +#: src/slic3r/GUI/ConfigWizard.cpp:626 +msgid "Bed Temperature:" +msgstr "Teplota tiskové podložky:" + +#: src/slic3r/GUI/Tab.cpp:1961 src/libslic3r/PrintConfig.cpp:128 +msgid "Before layer change G-code" +msgstr "G-code pÅ™ed zmÄ›nou vrstvy" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +msgid "Before roll back" +msgstr "PÅ™ed vrácením zpÄ›t" + +#: src/libslic3r/PrintConfig.cpp:1508 +msgid "Below Z" +msgstr "Pod Z" + +#: src/libslic3r/PrintConfig.cpp:139 +msgid "Between objects G-code" +msgstr "G-code mezi objekty" + +#: src/slic3r/GUI/Tab.cpp:1979 +msgid "Between objects G-code (for sequential printing)" +msgstr "G-code mezi objekty (pro sekvenÄní tisk)" + +#. TRN To be shown in the main menu View->Bottom +#: src/slic3r/GUI/MainFrame.cpp:524 +msgid "Bottom" +msgstr "Zespod" + +#: src/libslic3r/PrintConfig.cpp:409 +msgid "Bottom fill pattern" +msgstr "Vzor spodní výplnÄ›" + +#: src/libslic3r/PrintConfig.cpp:152 +msgid "Bottom solid layers" +msgstr "Plné spodní vrstvy" + +#: src/slic3r/GUI/MainFrame.cpp:524 +msgid "Bottom View" +msgstr "Pohled zespod" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1087 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1090 +msgid "Box" +msgstr "Kostka" + +#: src/libslic3r/PrintConfig.cpp:157 +msgid "Bridge" +msgstr "Most" + +#: src/libslic3r/PrintConfig.cpp:186 +msgid "Bridge flow ratio" +msgstr "PomÄ›r průtoku pÅ™i vytváření mostů" + +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 +msgid "Bridge infill" +msgstr "Výplň mostů" + +#: src/libslic3r/PrintConfig.cpp:198 +msgid "Bridges" +msgstr "Mosty" + +#: src/libslic3r/PrintConfig.cpp:177 +msgid "Bridges fan speed" +msgstr "Rychlost ventilátoru pÅ™i vytváření mostů" + +#: src/libslic3r/PrintConfig.cpp:166 +msgid "Bridging angle" +msgstr "Úhel vytváření mostů" + +#: src/libslic3r/PrintConfig.cpp:168 +msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." +msgstr "PÅ™epsání úhlu vytváření mostů. Nastavením hodnoty na nulu se bude úhel vytváření mostů vypoÄítávat automaticky. PÅ™i zadání jiného úhlu, bude pro vÅ¡echny mosty použitý zadaný úhel. Pro nulový úhel zadejte 180°." + +#: src/slic3r/GUI/PresetHints.cpp:216 +msgid "Bridging volumetric" +msgstr "Volumetrická hodnota mostů" + +#: src/slic3r/GUI/Plater.cpp:446 src/slic3r/GUI/Tab.cpp:1056 +msgid "Brim" +msgstr "Límec" + +#: src/libslic3r/PrintConfig.cpp:208 +msgid "Brim width" +msgstr "Šířka límce" + +#: src/slic3r/GUI/Tab.cpp:1681 +msgid "Browse" +msgstr "Procházet" + +#: src/libslic3r/Zipper.cpp:85 +msgid "buffer too small" +msgstr "buffer je příliÅ¡ malý" + +#: src/slic3r/GUI/ButtonsDescription.cpp:16 +msgid "Buttons And Text Colors Description" +msgstr "Barvy pro textové popisky a tlaÄítka" + +#: src/slic3r/GUI/PresetHints.cpp:220 +msgid "by the print profile maximum" +msgstr "maximem pro profil tisku" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 +msgid "Camera view " +msgstr "Pohled kamery" + +#: src/slic3r/GUI/ConfigWizard.cpp:1095 src/slic3r/GUI/FirmwareDialog.cpp:147 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 +#: src/slic3r/GUI/ProgressStatusBar.cpp:28 +msgid "Cancel" +msgstr "ZruÅ¡it" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:156 +msgid "Cancel selected" +msgstr "ZruÅ¡it vybrané" + +#: src/slic3r/GUI/Plater.cpp:2727 src/slic3r/GUI/PrintHostDialogs.cpp:232 +msgid "Cancelled" +msgstr "ZruÅ¡eno" + +#: src/slic3r/GUI/Plater.cpp:2444 src/slic3r/GUI/PrintHostDialogs.cpp:231 +msgid "Cancelling" +msgstr "ZruÅ¡ení" + +#: src/slic3r/GUI/FirmwareDialog.cpp:866 +msgid "Cancelling..." +msgstr "UkonÄování..." + +#: src/slic3r/GUI/Tab.cpp:2905 +msgid "Cannot overwrite a system profile." +msgstr "Nelze pÅ™epsat systémový profil." + +#: src/slic3r/GUI/Tab.cpp:2909 +msgid "Cannot overwrite an external profile." +msgstr "Nelze pÅ™epsat externí profil." + +#: src/libslic3r/SLAPrint.cpp:612 +msgid "Cannot proceed without support points! Add support points or disable support generation." +msgstr "Nelze pokraÄovat bez podpÄ›rných bodů! PÅ™idejte podpÄ›rné body nebo zakažte generování podpÄ›r." + +#: src/slic3r/GUI/Tab.cpp:1840 +msgid "Capabilities" +msgstr "Možnosti" + +#: src/slic3r/GUI/GUI_App.cpp:662 +msgid "Capture a configuration snapshot" +msgstr "VytvoÅ™it aktuální zálohu konfigurace" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2159 +msgid "Cascading pillars" +msgstr "Kaskádové sloupy" + +#: src/libslic3r/PrintConfig.cpp:3035 +msgid "Center" +msgstr "StÅ™ed" + +#: src/libslic3r/PrintConfig.cpp:3036 +msgid "Center the print around the given center." +msgstr "Vycentrujte tisk kolem daného stÅ™edu." + +#: src/slic3r/GUI/Tab.cpp:1744 +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Soubory s certifikátem (*.crt, *.pem)|*.crt;*.pem|VÅ¡echny soubory|*.*" + +#: src/slic3r/GUI/GUI_App.cpp:683 +msgid "Change Application &Language" +msgstr "ZmÄ›nit jazyk ap&likace" + +#: xs/src/slic3r/GUI/GUI.cpp:354 +msgid "Change Application Language" +msgstr "ZmÄ›nit jazyk aplikace" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1226 +msgid "Change extruder" +msgstr "ZmÄ›nit extruder" + +#: src/slic3r/GUI/Plater.cpp:2901 +msgid "Change the number of copies of the selected object" +msgstr "Změňte poÄet kopií vybraného objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1185 +msgid "Change type" +msgstr "ZmÄ›nit typ" + +#: src/slic3r/GUI/GUI_App.cpp:378 +msgid "Changing of an application language" +msgstr "ZmÄ›nit jazyk aplikace" + +#: src/slic3r/GUI/ConfigWizard.cpp:409 src/slic3r/GUI/Preferences.cpp:61 +msgid "Check for application updates" +msgstr "Zkontrolovat aktualizace aplikace" + +#: src/slic3r/GUI/BedShapeDialog.cpp:316 +msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Vyberte soubor pro import tvaru tiskové podložky z (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/MainFrame.cpp:621 +msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Zvolit soubor ke slicování (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/GUI_App.cpp:489 +msgid "Choose one file (3MF):" +msgstr "Vyberte jeden soubor (3MF):" + +#: src/slic3r/GUI/GUI_App.cpp:501 +msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "Vyberte jeden nebo více souborů (STL/OBJ/AMF/3MF/PRUSA):" + +#: src/slic3r/GUI/ConfigWizard.cpp:490 +msgid "Choose the type of firmware used by your printer." +msgstr "Vyberte typ firmware používaný vaší tiskárnou." + +#: src/slic3r/GUI/BedShapeDialog.cpp:84 +msgid "Circular" +msgstr "Kruhový" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2156 +msgid "Classification" +msgstr "Klasifikace" + +#: src/slic3r/GUI/Plater.cpp:292 +msgid "Click to edit preset" +msgstr "KliknÄ›te pro editaci pÅ™ednastavení" + +#: src/libslic3r/PrintConfig.cpp:216 +msgid "Clip multi-part objects" +msgstr "PÅ™ipnutí objektů z více Äástí k sobÄ›" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:926 +msgid "Clipping of view:" +msgstr "Řezová rovina:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:814 +#: src/slic3r/GUI/PrintHostDialogs.cpp:160 +msgid "Close" +msgstr "Zavřít" + +#: src/libslic3r/PrintConfig.cpp:550 msgid "Color" msgstr "Barva" -#: src/libslic3r/PrintConfig.cpp:541 -msgid "Filament notes" -msgstr "Poznámky k filamentu" +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:535 +#: src/libslic3r/GCode/PreviewData.cpp:406 +msgid "Color Print" +msgstr "Color Print" -#: src/libslic3r/PrintConfig.cpp:542 -msgid "You can put your notes regarding the filament here." -msgstr "Zde můžete vložit poznámky týkající se filamentu." +#: src/libslic3r/PrintConfig.cpp:224 +msgid "Colorprint height" +msgstr "Výška barevného tisku" -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 -msgid "Max volumetric speed" -msgstr "Maximální objemová rychlost" +#: src/libslic3r/PrintConfig.cpp:942 +msgid "Combine infill every" +msgstr "Kombinovat výplň každou" -#: src/libslic3r/PrintConfig.cpp:552 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"Maximální povolený objem průtoku pro tento filament. Omezuje maximální " -"rychlost průtoku pro tisk až na minimální rychlost průtoku pro tisk a " -"filament. Zadejte nulu pro nastavení bez omezení." +#: src/libslic3r/PrintConfig.cpp:947 +msgid "Combine infill every n layers" +msgstr "Kombinovat výplň každou n vrstvu" -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "mm³/s" +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:244 +msgid "Compatible print profiles" +msgstr "Kompatibilní tiskové profily" -#: src/libslic3r/PrintConfig.cpp:562 -msgid "Loading speed" -msgstr "Rychlost zavádÄ›ní" +#: src/libslic3r/PrintConfig.cpp:250 +msgid "Compatible print profiles condition" +msgstr "Stav kompatibilních tiskových profilů" -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "Rychlost použitá pro zavádÄ›ní filamentu na Äistící věž. " +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:229 +msgid "Compatible printers" +msgstr "Kompatibilní tiskárny" -#: src/libslic3r/PrintConfig.cpp:571 -msgid "Loading speed at the start" -msgstr "" +#: src/libslic3r/PrintConfig.cpp:235 +msgid "Compatible printers condition" +msgstr "Stav kompatibilních tiskáren" -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" +#: src/libslic3r/PrintConfig.cpp:268 +msgid "Complete individual objects" +msgstr "DokonÄení individuálních objektů" -#: src/libslic3r/PrintConfig.cpp:580 -msgid "Unloading speed" -msgstr "Rychlost vysunutí" +#: src/slic3r/GUI/PrintHostDialogs.cpp:233 +msgid "Completed" +msgstr "DokonÄeno" -#: src/libslic3r/PrintConfig.cpp:581 -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " -msgstr "" -"Rychlost vysouvání filamentu pÅ™i výmÄ›nÄ› na Äistící věži (úvodní Äást " -"vysunutí okamžitÄ› po rapidní extruzi není ovlivnÄ›na). " +#: src/libslic3r/Zipper.cpp:57 +msgid "compression failed" +msgstr "komprese se nezdaÅ™ila" -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed at the start" -msgstr "" +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:802 +msgid "Concentric" +msgstr "Koncentrická" -#: src/libslic3r/PrintConfig.cpp:591 -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" +#: src/slic3r/GUI/ConfigWizard.cpp:1185 +msgid "Configuration &Assistant" +msgstr "Průvodce n&astavením" -#: src/libslic3r/PrintConfig.cpp:599 +#: src/slic3r/GUI/ConfigWizard.cpp:1182 +msgid "Configuration &Wizard" +msgstr "Průvodce nastavením" + +#: src/slic3r/GUI/ConfigWizard.cpp:1184 +msgid "Configuration Assistant" +msgstr "Průvodce nastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1251 +msgid "Configuration notes" +msgstr "KonfiguraÄní poznámky" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99 +msgid "Configuration Snapshots" +msgstr "Záloha konfigurace" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:168 +msgid "Configuration update" +msgstr "Aktualizace nastavení" + +#: src/slic3r/GUI/UpdateDialogs.cpp:73 +msgid "Configuration update is available" +msgstr "Je k dispozici aktualizace nastavení" + +#: src/slic3r/GUI/ConfigWizard.cpp:1181 +msgid "Configuration Wizard" +msgstr "Průvodce nastavením" + +#: src/slic3r/GUI/FirmwareDialog.cpp:863 +msgid "Confirmation" +msgstr "Potvrzení" + +#: src/slic3r/GUI/Tab.cpp:1904 +msgid "Connection failed." +msgstr "PÅ™ipojení selhalo." + +#: src/slic3r/GUI/Tab.cpp:3416 +msgid "Connection of the support sticks and junctions" +msgstr "Spojení podpůrných tyÄí a spojek" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "PÅ™ipojení k Duet funguje správnÄ›." + +#: src/slic3r/Utils/OctoPrint.cpp:84 +msgid "Connection to OctoPrint works correctly." +msgstr "PÅ™ipojení k OctoPrint pracuje správnÄ›." + +#: src/slic3r/GUI/Tab.cpp:1901 +msgid "Connection to printer works correctly." +msgstr "PÅ™ipojení k tiskárnÄ› pracuje správnÄ›." + +#: src/slic3r/Utils/OctoPrint.cpp:195 +msgid "Connection to Prusa SLA works correctly." +msgstr "PÅ™ipojení k tiskárnÄ› Prusa SLA pracuje správnÄ›." + +#: src/libslic3r/PrintConfig.cpp:1823 +msgid "Contact Z distance" +msgstr "Mezera mezi podpÄ›rami a objektem v ose Z" + +#: lib/Slic3r/GUI/MainFrame.pm:137 +msgid "Controller" +msgstr "OvladaÄ" + +#: src/libslic3r/PrintConfig.cpp:2408 +msgid "Controls the bridge type between two neigboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." +msgstr "Řídí typ mostu mezi dvÄ›ma sousedními sloupky. Může být zig-zag, cross (double zig-zag) nebo dynamic. Typ automaticky pÅ™epíná mezi prvními dvÄ›ma v závislosti na vzdálenosti dvou sloupků." + +#: src/slic3r/GUI/Tab.cpp:1489 +msgid "Cooling" +msgstr "Chlazení" + +#: src/libslic3r/PrintConfig.cpp:628 +msgid "Cooling moves are gradually accelerating beginning at this speed. " +msgstr "Chladicí pohyby se postupnÄ› zrychlují a zaÄínají touto rychlostí." + +#: src/libslic3r/PrintConfig.cpp:647 +msgid "Cooling moves are gradually accelerating towards this speed. " +msgstr "Chladící pohyby se postupnÄ› zrychlují až k této rychlosti." + +#: src/slic3r/GUI/Tab.cpp:1510 +msgid "Cooling thresholds" +msgstr "Podmínky chlazení" + +#: src/libslic3r/PrintConfig.cpp:291 +msgid "Cooling tube length" +msgstr "Délka chladící trubiÄky" + +#: src/libslic3r/PrintConfig.cpp:283 +msgid "Cooling tube position" +msgstr "Pozice chladící trubiÄky" + +#: lib/Slic3r/GUI/Plater.pm:304 lib/Slic3r/GUI/Plater.pm:992 +msgid "Copies" +msgstr "Kopií" + +#: src/slic3r/GUI/Tab.cpp:2878 +msgid "Copy" +msgstr "Kopírovat" + +#: src/slic3r/GUI/MainFrame.cpp:454 +msgid "Copy selection to clipboard" +msgstr "Kopírovat výbÄ›r do schránky" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +msgid "Copy to clipboard" +msgstr "Kopírovat do schránky" + +#: src/libslic3r/PrintConfig.cpp:2324 src/libslic3r/PrintConfig.cpp:2325 +msgid "Correction for expansion" +msgstr "Korekce expanze" + +#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:3310 +msgid "Corrections" +msgstr "Korekce" + +#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1056 +#: src/libslic3r/PrintConfig.cpp:717 +msgid "Cost" +msgstr "Náklady" + +#: src/slic3r/GUI/Plater.cpp:2140 +msgid "Could not arrange model objects! Some geometries may be invalid." +msgstr "Objekty nelze uspořádat! NÄ›které geometrie mohou být neplatné." + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "Nelze se pÅ™ipojit k Duet" + +#: src/slic3r/Utils/OctoPrint.cpp:90 +msgid "Could not connect to OctoPrint" +msgstr "Nelze se spojit s OctoPrintem" + +#: src/slic3r/Utils/OctoPrint.cpp:200 +msgid "Could not connect to Prusa SLA" +msgstr "Nelze se pÅ™ipojit k Prusa SLA" + +#: src/slic3r/GUI/Tab.cpp:1710 +msgid "Could not get a valid Printer Host reference" +msgstr "Nelze získat platný odkaz na tiskový server" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "Nelze získat prostÅ™edky pro vytvoÅ™ení nového spojení" + +#: src/libslic3r/PrintConfig.cpp:1872 +msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "Zakrýt smyÄkami horní kontaktní vrstvu podpÄ›r. Ve výchozím nastavení zakázáno." + +#: src/libslic3r/PrintConfig.cpp:73 +msgid "Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low." +msgstr "Praskliny menší než 2x polomÄ›r uzavÅ™ení mezery se vyplní bÄ›hem slicování trojúhelníkových sítí. Operace uzavírání mezery může snížit koneÄné rozliÅ¡ení tisku, proto je vhodné udržovat rozumnÄ› nízkou hodnotu." + +#: src/libslic3r/Zipper.cpp:61 +msgid "CRC-32 check failed" +msgstr "CRC-32 kontrola selhala" + +#: src/libslic3r/PrintConfig.cpp:2460 +msgid "Critical angle" +msgstr "Kritický úhel" + +#: src/libslic3r/PrintConfig.cpp:2417 +msgid "Cross" +msgstr "Cross" + +#: src/libslic3r/PrintConfig.cpp:800 +msgid "Cubic" +msgstr "Kubická" + +#: src/slic3r/GUI/wxExtensions.cpp:2413 +#, possible-c-format +msgid "Current mode is %s" +msgstr "Aktuální režim je %s" + +#: src/slic3r/GUI/Tab.cpp:909 +msgid "Current preset is inherited from " +msgstr "Aktuální nastavení je zdÄ›dÄ›no od " + +#: src/slic3r/GUI/UpdateDialogs.cpp:45 +msgid "Current version:" +msgstr "Aktuální verze:" + +#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/slic3r/GUI/GUI_Preview.cpp:239 +#: src/libslic3r/GCode/PreviewData.cpp:175 +msgid "Custom" +msgstr "Vlastní" + +#: src/libslic3r/PrintConfig.cpp:96 +msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." +msgstr "Pro HTTPS pÅ™ipojení OctoPrintu lze zadat vlastní CA certifikát ve formátu crt/pem. Pokud zůstane pole prázdné, použije se výchozí úložiÅ¡tÄ› certifikátů OS CA." + +#: src/slic3r/GUI/Tab.cpp:1563 src/slic3r/GUI/Tab.cpp:1948 +msgid "Custom G-code" +msgstr "Vlastní G-code" + +#: src/slic3r/GUI/ConfigWizard.cpp:373 +msgid "Custom Printer" +msgstr "Vlastní tiskárna" + +#: src/slic3r/GUI/ConfigWizard.cpp:373 +msgid "Custom Printer Setup" +msgstr "Vlastní nastavení tiskárny" + +#: src/slic3r/GUI/ConfigWizard.cpp:377 +msgid "Custom profile name:" +msgstr "Vlastní název profilu:" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:254 +msgid "Custom setup" +msgstr "Vlastní nastavení" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3013 +msgid "Cut" +msgstr "Řezat" + +#: src/libslic3r/PrintConfig.cpp:3014 +msgid "Cut model at the given Z." +msgstr "Rozříznout model v dané výšce Z." + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 +msgid "Cut object:" +msgstr "Řezat objekt:" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 +msgid "Cut [C]" +msgstr "Řezat [C]" + +#: lib/Slic3r/GUI/Plater.pm:262 lib/Slic3r/GUI/Plater.pm:278 +#: lib/Slic3r/GUI/Plater.pm:2296 +msgid "Cut…" +msgstr "Řezat…" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +msgid "Cylinder" +msgstr "Válec" + +#: src/libslic3r/PrintConfig.cpp:3115 +msgid "Data directory" +msgstr "Složka Data" + +#: src/libslic3r/Zipper.cpp:55 +msgid "decompression failed or archive is corrupted" +msgstr "dekomprese selhala nebo je archiv poÅ¡kozen" + +#: src/slic3r/GUI/Plater.cpp:2899 +msgid "Decrease copies" +msgstr "Odebrat kopie" + +#: src/slic3r/GUI/GUI_App.cpp:594 src/slic3r/GUI/GUI_ObjectList.cpp:1245 +#: src/libslic3r/PrintConfig.cpp:299 +msgid "Default" +msgstr "Výchozí" + +#: xs/src/slic3r/GUI/Tab.cpp:2130 +msgid "Default " +msgstr "Výchozí " + +#: xs/src/slic3r/GUI/Field.cpp:98 +msgid "default" +msgstr "výchozí" + +#: src/libslic3r/PrintConfig.cpp:730 +msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." +msgstr "Výchozí úhel pro orientaci výplnÄ›. Bude pro nÄ›j použito křížové Å¡rafování. Mosty budou vyplnÄ›ny nejlepším smÄ›rem, který Slic3r dokáže rozpoznat, takže toto nastavení je neovlivní." + +#: src/libslic3r/PrintConfig.cpp:522 +msgid "Default extrusion width" +msgstr "Výchozí šířka extruze" + +#: src/slic3r/GUI/Tab.cpp:937 +msgid "default filament profile" +msgstr "výchozí profil filamentu" + +#: src/libslic3r/PrintConfig.cpp:309 +msgid "Default filament profile" +msgstr "Výchozí profil filamentu" + +#: src/libslic3r/PrintConfig.cpp:310 +msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." +msgstr "Výchozí materiálový profil spojený se souÄasným profilem tiskárny. PÅ™i výbÄ›ru souÄasného profilu tiskárny se aktivuje tento materiálový profil." + +#: src/slic3r/GUI/Tab.cpp:2757 +#, possible-c-format +msgid "Default preset (%s)" +msgstr "Výchozí pÅ™ednastavení (%s)" + +#: xs/src/slic3r/GUI/Tab.cpp:2410 xs/src/slic3r/GUI/Tab.cpp:2496 +msgid "Default presets" +msgstr "Výchozí pÅ™ednastavení" + +#: src/libslic3r/GCode/PreviewData.cpp:491 +msgid "Default print color" +msgstr "Výchozí barva tisku" + +#: src/slic3r/GUI/Tab.cpp:934 +msgid "default print profile" +msgstr "výchozí tiskový profil" + +#: src/libslic3r/PrintConfig.cpp:316 +msgid "Default print profile" +msgstr "Výchozí tiskový profil" + +#: src/libslic3r/PrintConfig.cpp:317 src/libslic3r/PrintConfig.cpp:2341 +#: src/libslic3r/PrintConfig.cpp:2352 +msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." +msgstr "Výchozí tiskový profil spojený se souÄasným profilem tiskárny. PÅ™i výbÄ›ru souÄasného profilu tiskárny se aktivuje tento tiskový profil." + +#: src/slic3r/GUI/Tab.cpp:951 +msgid "default SLA material profile" +msgstr "výchozí profil pro SLA materiál" + +#: src/libslic3r/PrintConfig.cpp:2340 src/libslic3r/PrintConfig.cpp:2351 +msgid "Default SLA material profile" +msgstr "Výchozí profil pro SLA materiál" + +#: src/slic3r/GUI/Tab.cpp:955 +msgid "default SLA print profile" +msgstr "výchozí SLA tiskový profil" + +#: src/slic3r/GUI/Field.cpp:105 +msgid "default value" +msgstr "výchozí hodnota" + +#: src/slic3r/GUI/ConfigWizard.cpp:375 +msgid "Define a custom printer profile" +msgstr "VytvoÅ™it vlastní tiskový profil" + +#: src/libslic3r/PrintConfig.cpp:2529 +msgid "Defines the cavity depth. Set to zero to disable the cavity." +msgstr "Definuje hloubku dutiny. Chcete-li dutinu vypnout, nastavte ji na nulu." + +#: src/libslic3r/PrintConfig.cpp:2533 +msgid "Defines the pad cavity depth. Set to zero to disable the cavity. Be careful when enabling this feature, as some resins may produce an extreme suction effect inside the cavity, which makes pealing the print off the vat foil difficult." +msgstr "Definuje hloubku dutiny. Chcete-li dutinu vypnout, nastavte ji na nulu. PÅ™i povolování této funkce buÄte opatrní, protože nÄ›které pryskyÅ™ice mohou způsobit extrémní sací efekt uvnitÅ™ dutiny, což ztěžuje odlupování tisku z fólie ve vaniÄce." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:237 +msgid "degenerate facets" +msgstr "Degenerace facetů" + +#: src/libslic3r/PrintConfig.cpp:2572 +msgid "degrees" +msgstr "stupňů" + +#: src/libslic3r/PrintConfig.cpp:608 msgid "Delay after unloading" msgstr "ZpoždÄ›ní po vyjmutí" -#: src/libslic3r/PrintConfig.cpp:600 -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " -msgstr "" -"Doba Äekání po vysunutí filamentu. Může pomoci ke spolehlivé výmÄ›nÄ› nástrojů " -"s flexibilními materiály, které potÅ™ebují více Äasu ke smrÅ¡tÄ›ní na původní " -"rozmÄ›ry. " +#: src/slic3r/GUI/Tab.cpp:2935 +msgid "delete" +msgstr "smazat" -#: src/libslic3r/PrintConfig.cpp:610 -msgid "Number of cooling moves" -msgstr "" +#: src/slic3r/GUI/GUI_ObjectList.cpp:1257 src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Plater.cpp:2909 src/slic3r/GUI/Tab.cpp:2937 +msgid "Delete" +msgstr "Smazat" -#: src/libslic3r/PrintConfig.cpp:611 -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " -msgstr "" +#: src/slic3r/GUI/MainFrame.cpp:449 +msgid "Delete &all" +msgstr "Sm&azat vÅ¡e" -#: src/libslic3r/PrintConfig.cpp:620 -msgid "Speed of the first cooling move" -msgstr "" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +msgid "Delete All" +msgstr "Smazat VÅ¡e" -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" +#: src/slic3r/GUI/Plater.cpp:3298 +msgid "Delete all" +msgstr "Smazat vÅ¡e" -#: src/libslic3r/PrintConfig.cpp:629 -msgid "Minimal purge on wipe tower" -msgstr "" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:187 +msgid "Delete color change marker for current layer" +msgstr "Odebrat znaÄku zmÄ›ny barvy pro aktuální vrstvu" -#: src/libslic3r/PrintConfig.cpp:630 -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +msgid "Delete selected" +msgstr "Smazat vybrané" -#: src/libslic3r/PrintConfig.cpp:635 -msgid "mm³" -msgstr "" +#: src/slic3r/GUI/Tab.cpp:131 +msgid "Delete this preset" +msgstr "Smazat pÅ™ednastavení" -#: src/libslic3r/PrintConfig.cpp:641 -msgid "Speed of the last cooling move" -msgstr "" +#: src/slic3r/GUI/MainFrame.cpp:449 +msgid "Deletes all objects" +msgstr "Smazat vÅ¡echny objekty" -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:650 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:651 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:659 -msgid "Ramming parameters" -msgstr "Parametry rapidní extruze" - -#: src/libslic3r/PrintConfig.cpp:660 -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " -msgstr "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " - -#: src/libslic3r/PrintConfig.cpp:667 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"Zde zadejte průmÄ›r filamentu. Je zapotÅ™ebí správné pÅ™esnosti, proto použijte " -"Å¡upleru a proveÄte nÄ›kolik měření podél filamentu, poté vypoÄtete průmÄ›r." +#: src/slic3r/GUI/MainFrame.cpp:447 +msgid "Deletes the current selection" +msgstr "Smaže aktuální výbÄ›r" #: src/libslic3r/PrintConfig.cpp:685 msgid "Density" msgstr "Hustota" +#: src/libslic3r/PrintConfig.cpp:744 +msgid "Density of internal infill, expressed in the range 0% - 100%." +msgstr "Hustota vnitÅ™ní výplnÄ›, vyjádÅ™ená v rozmezí 0% až 100%." + +#: src/slic3r/GUI/Tab.cpp:1200 src/slic3r/GUI/Tab.cpp:1584 +#: src/slic3r/GUI/Tab.cpp:1992 src/slic3r/GUI/Tab.cpp:2086 +#: src/slic3r/GUI/Tab.cpp:3336 src/slic3r/GUI/Tab.cpp:3445 +msgid "Dependencies" +msgstr "Závislosti" + +#: src/libslic3r/PrintConfig.cpp:1542 src/libslic3r/PrintConfig.cpp:1543 +msgid "Deretraction Speed" +msgstr "Rychlost deretrakce" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1235 +msgid "Deselect by rectangle" +msgstr "OdznaÄit obdélníkovým výbÄ›rem myÅ¡i" + +#: src/libslic3r/PrintConfig.cpp:1833 +msgid "detachable" +msgstr "oddÄ›litelný" + +#: src/libslic3r/PrintConfig.cpp:1304 +msgid "Detect bridging perimeters" +msgstr "Detekovat perimetry pÅ™emostÄ›ní" + +#: src/libslic3r/PrintConfig.cpp:1988 +msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." +msgstr "Detekuje stÄ›ny o tloušťce jedné Äáry (Äásti, kam se dvÄ› Äáry nemohou vejít a je potÅ™eba slouÄit je do Äáry jedné)." + +#: src/libslic3r/PrintConfig.cpp:1986 +msgid "Detect thin walls" +msgstr "Detekovat tenké zdi" + +#: src/libslic3r/PrintConfig.cpp:3083 +msgid "Detect unconnected parts in the given model(s) and split them into separate objects." +msgstr "Rozpoznat nepÅ™ipojené Äásti daného modelu(ů) a rozdÄ›lit je do samostatných objektů." + +#: src/slic3r/GUI/Plater.cpp:1713 +msgid "Detected advanced data" +msgstr "Byla detekována data z pokroÄilého režimu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:723 +msgid "Detected object outside print volume\nResolve a clash to continue slicing/export process correctly" +msgstr "Detekován objekt mimo tiskový prostor\nVyÅ™eÅ¡te konflikt, abyste mohli správnÄ› pokraÄovat v procesu slicování/exportu" + +#: src/slic3r/GUI/GLCanvas3D.cpp:719 +msgid "Detected object outside print volume" +msgstr "Detekován objekt mimo tiskový prostor." + +#: src/slic3r/GUI/GLCanvas3D.cpp:720 +msgid "Detected toolpath outside print volume" +msgstr "Byla detekována cesta mimo tiskový objem" + +#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:677 +msgid "Diameter" +msgstr "PrůmÄ›r" + +#: src/libslic3r/PrintConfig.cpp:2443 +msgid "Diameter in mm of the pillar base" +msgstr "PrůmÄ›r základny podpÄ›r v mm" + +#: src/libslic3r/PrintConfig.cpp:2399 +msgid "Diameter in mm of the support pillars" +msgstr "PrůmÄ›r podpÄ›rných sloupů v mm" + +#: src/libslic3r/PrintConfig.cpp:2371 +msgid "Diameter of the pointing side of the head" +msgstr "PrůmÄ›r konce podpůrného hrotu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:89 +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +msgstr "PrůmÄ›r tiskové podložky. PÅ™epokládaný poÄátek (0,0) je umístÄ›n uprostÅ™ed." + +#: src/libslic3r/PrintConfig.cpp:1569 +msgid "Direction" +msgstr "SmÄ›r" + +#: xs/src/slic3r/GUI/Preferences.cpp:76 +msgid "Disable communication with the printer over a serial / USB cable. This simplifies the user interface in case the printer is never attached to the computer." +msgstr "Zakázat komunikaci s tiskárnou pÅ™es sériový / USB kabel. To zjednoduÅ¡uje uživatelské rozhraní v případÄ›, že tiskárna není nikdy pÅ™ipojena k poÄítaÄi." + +#: src/libslic3r/PrintConfig.cpp:323 +msgid "Disable fan for the first" +msgstr "Vypnutí chlazení pro prvních" + +#: xs/src/slic3r/GUI/Preferences.cpp:74 +msgid "Disable USB/serial connection" +msgstr "Vypnout USB/sériové pÅ™ipojení" + +#: src/libslic3r/PrintConfig.cpp:1280 +msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." +msgstr "Vypne retrakce, pokud dráha nepÅ™ekroÄí perimetr vrchní vrstvy (a proto bude pravdÄ›podobnÄ› jakékoliv odkapávání neviditelné)." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:869 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1241 +msgid "Discard changes" +msgstr "Zahodit zmÄ›ny" + +#: src/slic3r/GUI/Tab.cpp:2784 +msgid "Discard changes and continue anyway?" +msgstr "Zahodit zmÄ›ny a pokraÄovat?" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Displacement (mm)" +msgstr "Posunutí (mm)" + +#: src/slic3r/GUI/Tab.cpp:2041 +msgid "Display" +msgstr "Displej" + +#: src/libslic3r/PrintConfig.cpp:2208 +msgid "Display height" +msgstr "Výška displeje" + +#: src/libslic3r/PrintConfig.cpp:2227 +msgid "Display orientation" +msgstr "Orientace displeje" + +#: src/slic3r/GUI/MainFrame.cpp:510 +msgid "Display the Print Host Upload Queue window" +msgstr "Zobrazit okno s frontou nahrávání do tiskového serveru." + +#: src/libslic3r/PrintConfig.cpp:2202 +msgid "Display width" +msgstr "Šířka displeje" + +#: src/libslic3r/PrintConfig.cpp:341 +msgid "Distance between copies" +msgstr "Vzdálenost mezi kopiemi" + +#: src/libslic3r/PrintConfig.cpp:1610 +msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." +msgstr "Vzdálenost mezi obrysem a objektem (objekty). Nastavte tuto hodnotu na nulu, pro slouÄení obrysu s pÅ™edmÄ›tem (pÅ™edmÄ›ty) a tvorbu límce pro dosažení lepší pÅ™ilnavosti." + +#: src/libslic3r/PrintConfig.cpp:1609 +msgid "Distance from object" +msgstr "Vzdálenost od objektu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:80 +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." +msgstr "Vzdálenost souÅ™adnice 0,0 G-code od pÅ™edního levého rohu obdélníku." + +#: src/libslic3r/PrintConfig.cpp:284 +msgid "Distance of the center-point of the cooling tube from the extruder tip " +msgstr "Vzdálenost ze stÅ™edu chladící trubiÄky ke Å¡piÄce extruderu " + +#: src/libslic3r/PrintConfig.cpp:1313 +msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware. " +msgstr "Vzdálenost Å¡piÄky extruderu od místa, kde je zaparkován filament pÅ™i vytažení. MÄ›la by se shodovat s hodnotou ve firmware tiskárny. " + +#: src/libslic3r/PrintConfig.cpp:342 +msgid "Distance used for the auto-arrange feature of the plater." +msgstr "Vzdálenost, použitá pro funkci automatického rozmístÄ›ní po podložce." + +#: src/libslic3r/PrintConfig.cpp:3097 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "Nepodaří se, pokud neexistuje soubor dodaný k pÅ™epínaÄi --load." + +#: src/libslic3r/PrintConfig.cpp:3041 +msgid "Do not rearrange the given models before merging and keep their original XY coordinates." +msgstr "NepÅ™euspořádávejte modely pÅ™ed slouÄením a tím ponecháním jejich původních souÅ™adnic v XY." + +#: src/slic3r/GUI/Field.cpp:181 +#, possible-c-format +msgid "Do you mean %d%% instead of %d %s?\nSelect YES if you want to change this value to %d%%, \nor NO if you are sure that %d %s is a correct value." +msgstr "Myslíte %d%% namísto %d %s?\nVyberte ANO, pokud chcete zmÄ›nit tuto hodnotu na %d%% nebo NE, pokud jste si jisti, že %d %s je správná hodnota." + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1022 +msgid "Do you want to save your manually edited support points ?\n" +msgstr "Chcete uložit ruÄnÄ› upravované podpÄ›rné body?\n" + +#: src/libslic3r/PrintConfig.cpp:3040 +msgid "Don't arrange" +msgstr "Neuspořádávat" + +#: src/slic3r/GUI/UpdateDialogs.cpp:55 +msgid "Don't notify about new releases any more" +msgstr "Neupozorňovat na nové verze" + +#: src/libslic3r/PrintConfig.cpp:333 +msgid "Don't support bridges" +msgstr "Nevytvářet podpÄ›ry pod mosty" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2161 +msgid "Done" +msgstr "DokonÄeno" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +msgid "Downgrade" +msgstr "Downgrade" + +#: lib/Slic3r/GUI/Plater/2D.pm:132 +msgid "Drag your objects here" +msgstr "PÅ™etáhnÄ›te své objekty sem" + +#: src/libslic3r/PrintConfig.cpp:3044 +msgid "Duplicate" +msgstr "Duplikovat" + +#: src/libslic3r/PrintConfig.cpp:3049 +msgid "Duplicate by grid" +msgstr "Duplikovat mřížkou" + +#: src/libslic3r/PrintConfig.cpp:2418 +msgid "Dynamic" +msgstr "Dynamic" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:238 +msgid "edges fixed" +msgstr "hrany opraveny" + +#: src/libslic3r/PrintConfig.cpp:349 +msgid "Elephant foot compensation" +msgstr "Kompenzace rozplácnutí první vrstvy" + +#: src/libslic3r/SLAPrint.cpp:624 +msgid "Elevation is too low for object." +msgstr "Výška od podložky je pro objekt příliÅ¡ nízká." + +#: src/libslic3r/PrintConfig.cpp:1044 +msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." +msgstr "Vkládání M73 P[poÄet vytiÅ¡tÄ›ných procent] R[zbývající Äas v minutách] v 1 minutových intervalech do G-codu, aby firmware ukázal pÅ™esný zbývající Äas. M73 nyní rozpoznává pouze firmware tiskárny Prusa i3 MK3. Firmware i3 MK3 také podporuje M73 Qxx Sxx pro tichý režim." + +#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1286 +#: src/libslic3r/PrintConfig.cpp:2099 +msgid "Enable" +msgstr "Zapnout" + +#: src/libslic3r/PrintConfig.cpp:277 +msgid "Enable auto cooling" +msgstr "Zapnutí automatického chlazení" + +#: src/libslic3r/PrintConfig.cpp:539 +msgid "Enable fan if layer print time is below" +msgstr "Zapnout ventilátor, pokud je doba tisku vrstvy kratší než" + +#: src/libslic3r/PrintConfig.cpp:1781 +msgid "Enable support material generation." +msgstr "Zapne generování podpÄ›r." + +#: src/libslic3r/PrintConfig.cpp:918 +msgid "Enable this to add comments into the G-Code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill." +msgstr "ZapnÄ›te tuto možnost, chcete-li do G-Code pÅ™idávat komentáře, které budou urÄovat, přísluÅ¡nost tiskových pohybů k jednotlivým objektům. To je užiteÄné pro Octoprint plugin CancelObject. Nastavení NENà kompatibilní se Single Extruder Multi Material konfigurací a s ÄiÅ¡tÄ›ním trysky do objektu / výplnÄ›." + +#: src/libslic3r/PrintConfig.cpp:881 +msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." +msgstr "Aktivací získáte komentovaný soubor G-code, pÅ™iÄemž každý řádek je doplnÄ›n popisným textem. Pokud tisknete z SD karty, dodateÄné informace v souboru můžou zpomalit firmware." + +#: src/libslic3r/PrintConfig.cpp:2085 +msgid "Enable variable layer height feature" +msgstr "Zapnout variabilní výšku vrstev" + +#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:359 src/libslic3r/PrintConfig.cpp:369 +msgid "End G-code" +msgstr "Konec G-code" + +#: src/libslic3r/PrintConfig.cpp:1838 +msgid "Enforce support for the first" +msgstr "Zesílit podpÄ›ry pro prvních" + +#: src/libslic3r/PrintConfig.cpp:1845 +msgid "Enforce support for the first n layers" +msgstr "Vynucení podpÄ›r pro prvních n vrstev" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:197 +#: src/slic3r/GUI/PrintHostDialogs.cpp:228 +msgid "Enqueued" +msgstr "ZaÅ™azeno do fronty" + +#: src/libslic3r/PrintConfig.cpp:380 +msgid "Ensure vertical shell thickness" +msgstr "Zajistit tloušťku svislých stÄ›n" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +msgid "Enter new name" +msgstr "Zadejte nový název" + +#: src/slic3r/GUI/ConfigWizard.cpp:622 +msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." +msgstr "Zadejte požadovanou teplotu filamentu, aby se spojil s vyhřívanou podložkou." + +#: src/slic3r/GUI/ConfigWizard.cpp:570 +msgid "Enter the diameter of your filament." +msgstr "Zadejte průmÄ›r vaÅ¡eho filamentu." + +#: src/slic3r/GUI/ConfigWizard.cpp:557 +msgid "Enter the diameter of your printer's hot end nozzle." +msgstr "Zadejte průmÄ›r trysky hotendu vaší tiskárny." + +#: lib/Slic3r/GUI/Plater.pm:1158 +msgid "Enter the new max size for the selected object:" +msgstr "Zvolte nový maximální rozmÄ›r pro zvolný objekt:" + +#: lib/Slic3r/GUI/Plater.pm:1132 +#, possible-perl-format +msgid "Enter the new size for the selected object (print bed: %smm):" +msgstr "Zadejte novou velikost vybraného objektu (tisková podložka: %smm):" + +#: lib/Slic3r/GUI/Plater.pm:992 +msgid "Enter the number of copies of the selected object:" +msgstr "Zadejte poÄet kopií pro vybraný objekt:" + +#: lib/Slic3r/GUI/Plater.pm:1042 +msgid "Enter the rotation angle:" +msgstr "Zadejte úhel natoÄení:" + +#: lib/Slic3r/GUI/Plater.pm:1137 lib/Slic3r/GUI/Plater.pm:1163 +#, no-perl-format +msgid "Enter the scale % for the selected object:" +msgstr "Zadejte rozmÄ›r % pro zvolený objekt:" + +#: src/slic3r/GUI/ConfigWizard.cpp:608 +msgid "Enter the temperature needed for extruding your filament." +msgstr "Zadejte požadovanou teplotu pro extruzi vaÅ¡eho filamentu." + +#: src/libslic3r/PrintConfig.cpp:718 +msgid "Enter your filament cost per kg here. This is only for statistical information." +msgstr "Zde zadejte cenu filamentu za kg. Slouží pouze pro statistické informace." + #: src/libslic3r/PrintConfig.cpp:686 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"Zde zadejte hustotu filamentu. Toto je pouze pro statistické informace. " -"Přípustný způsob je zvážit známou délku filamentu a vypoÄítat pomÄ›r délky k " -"objemu. Je lepší vypoÄítat objem přímo pÅ™es posun." +msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." +msgstr "Zde zadejte hustotu filamentu. Toto je pouze pro statistické informace. Přípustný způsob je zvážit známou délku filamentu a vypoÄítat pomÄ›r délky k objemu. Je lepší vypoÄítat objem přímo pÅ™es posun." + +#: src/libslic3r/PrintConfig.cpp:678 +msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." +msgstr "Zde zadejte průmÄ›r filamentu. Je zapotÅ™ebí správné pÅ™esnosti, proto použijte Å¡upleru a proveÄte nÄ›kolik měření podél filamentu, poté vypoÄtete průmÄ›r." + +#: src/slic3r/GUI/MainFrame.cpp:636 src/slic3r/GUI/PrintHostDialogs.cpp:230 +msgid "Error" +msgstr "Chyba" + +#: src/slic3r/GUI/FirmwareDialog.cpp:608 +#, possible-c-format +msgid "Error accessing port at %s: %s" +msgstr "Chyba pÅ™i přístupu k portu na %s : %s" + +#: lib/Slic3r/GUI/Plater.pm:1760 +msgid "Error exporting 3MF file " +msgstr "Chyba pÅ™i exportu souboru 3MF " + +#: src/slic3r/GUI/Plater.cpp:3593 +#, possible-c-format +msgid "Error exporting 3MF file %s" +msgstr "Chyba pÅ™i exportu souboru 3MF %s" + +#: lib/Slic3r/GUI/Plater.pm:1744 +msgid "Error exporting AMF file " +msgstr "Chyba pÅ™i exportu souboru AMF " + +#: src/slic3r/GUI/Plater.cpp:3564 +#, possible-c-format +msgid "Error exporting AMF file %s" +msgstr "Chyba pÅ™i exportu souboru AMF %s" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:271 +msgid "Error uploading to print host:" +msgstr "Chyba pÅ™i nahrávání do tiskového serveru:" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:98 +msgid "Error while uploading to the OctoPrint server" +msgstr "Chyba pÅ™i nahrávání na server OctoPrint" + +#: src/libslic3r/Zipper.cpp:105 +msgid "Error with zip archive" +msgstr "Chyba v zip archivu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1431 +msgid "Error! " +msgstr "Chyba! " + +#: src/slic3r/GUI/FirmwareDialog.cpp:610 +#, possible-c-format +msgid "Error: %s" +msgstr "Chyba: %s" + +#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1028 +#: src/slic3r/GUI/Plater.cpp:1070 +msgid "Estimated printing time" +msgstr "Odhadovaný Äas tisku" + +#: lib/Slic3r/GUI/Plater.pm:1618 +msgid "Estimated printing time (normal mode)" +msgstr "PÅ™edpokládaná doba tisku (normální režim)" + +#: lib/Slic3r/GUI/Plater.pm:1620 +msgid "Estimated printing time (silent mode)" +msgstr "PÅ™edpokládaná doba tisku (tichý režim)" + +#: src/slic3r/GUI/Plater.cpp:424 +msgid "Everywhere" +msgstr "VÅ¡ude" + +#: src/slic3r/GUI/PresetHints.cpp:46 +#, possible-c-format +msgid "except for the first %d layers" +msgstr "s výjimkou prvních %d vrstev" + +#: src/slic3r/GUI/PresetHints.cpp:50 +msgid "except for the first layer" +msgstr "vyjma první vrstvy" + +#: src/slic3r/GUI/UpdateDialogs.cpp:148 +#, possible-c-format +msgid "Exit %s" +msgstr "UkonÄit %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:144 +msgid "Exit Slic3r" +msgstr "UkonÄit Slic3r" + +#: src/libslic3r/PrintConfig.cpp:335 +msgid "Experimental option for preventing support material from being generated under bridged areas." +msgstr "Experimentální nastavení pro zabránÄ›ní tvorbÄ› podpÄ›r v oblastech po mosty." + +#: src/libslic3r/PrintConfig.cpp:1306 +msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." +msgstr "Experimentální volba pro nastavení průtoku pro pÅ™esahy (použije se průtok jako u mostů), aplikuje se na nÄ› rychlost mostu a spustí se ventilátor." + +#: src/slic3r/GUI/GUI_App.cpp:676 src/slic3r/GUI/wxExtensions.cpp:2461 +msgid "Expert" +msgstr "Expert" + +#: src/slic3r/GUI/GUI_App.cpp:676 +msgid "Expert View Mode" +msgstr "Režim Expert" + +#: src/slic3r/GUI/MainFrame.cpp:602 src/slic3r/GUI/Plater.cpp:3821 +msgid "Export" +msgstr "Exportovat" + +#: src/slic3r/GUI/MainFrame.cpp:373 +msgid "Export &Config" +msgstr "Exportovat Konfigura&ci" + +#: src/slic3r/GUI/MainFrame.cpp:362 src/slic3r/GUI/MainFrame.cpp:602 +msgid "Export &G-code" +msgstr "Exportovat &G-code" + +#: src/libslic3r/PrintConfig.cpp:2949 +msgid "Export 3MF" +msgstr "Exportovat 3MF" + +#: src/slic3r/GUI/MainFrame.cpp:375 +msgid "Export all presets to file" +msgstr "Exportovat vÅ¡echna pÅ™ednastavení do souboru" + +#: src/libslic3r/PrintConfig.cpp:2954 +msgid "Export AMF" +msgstr "Exportovat AMF" + +#: src/slic3r/GUI/Plater.cpp:1932 +msgid "Export AMF file:" +msgstr "Exportovat AMF soubor:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1219 src/slic3r/GUI/Plater.cpp:2927 +msgid "Export as STL" +msgstr "Exportovat jako STL" + +#: lib/Slic3r/GUI/Plater.pm:1416 +msgid "Export cancelled" +msgstr "Export zruÅ¡en" + +#: src/slic3r/GUI/MainFrame.cpp:375 +msgid "Export Config &Bundle" +msgstr "Exportovat KonfiguraÄní &Balík" + +#: src/slic3r/GUI/MainFrame.cpp:373 +msgid "Export current configuration to file" +msgstr "Exportovat souÄasnou konfiguraci do souboru" + +#: lib/Slic3r/GUI/MainFrame.pm:281 +msgid "Export current plate as 3MF" +msgstr "Exportovat stávající plochu jako 3MF" + +#: src/slic3r/GUI/MainFrame.cpp:370 +msgid "Export current plate as AMF" +msgstr "Exportovat stávající plochu jako AMF" + +#: src/slic3r/GUI/MainFrame.cpp:362 +msgid "Export current plate as G-code" +msgstr "Exportovat stávající plochu do G-code" + +#: src/slic3r/GUI/MainFrame.cpp:366 +msgid "Export current plate as STL" +msgstr "Exportovat stávající plochu jako STL" + +#: src/slic3r/GUI/MainFrame.cpp:368 +msgid "Export current plate as STL including supports" +msgstr "Exportovat stávající plochu vÄetnÄ› podpÄ›r jako STL" + +#: src/slic3r/GUI/Plater.cpp:2722 +msgid "Export failed" +msgstr "Exportování selhalo" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:733 +#: src/slic3r/GUI/Plater.cpp:3821 src/libslic3r/PrintConfig.cpp:2964 +msgid "Export G-code" +msgstr "Exportovat G-code" + +#: lib/Slic3r/GUI/MainFrame.pm:272 +msgid "Export G-code..." +msgstr "Exportovat G-code…" + +#: lib/Slic3r/GUI/Plater.pm:322 +msgid "Export G-code…" +msgstr "Exportovat G-code…" + +#: src/libslic3r/PrintConfig.cpp:2931 +msgid "Export OBJ" +msgstr "Exportovat OBJ" + +#: lib/Slic3r/GUI/Plater.pm:2307 +msgid "Export object as STL…" +msgstr "Exportovat objekt jako STL…" + +#: src/slic3r/Utils/FixModelByWin10.cpp:368 +msgid "Export of a temporary 3mf file failed" +msgstr "Export doÄasného 3MF souboru selhalo." + +#: src/slic3r/GUI/MainFrame.cpp:370 +msgid "Export plate as &AMF" +msgstr "Exportovat plochu jako &AMF" + +#: src/slic3r/GUI/MainFrame.cpp:366 +msgid "Export plate as &STL" +msgstr "Exportovat plochu jako &STL" + +#: lib/Slic3r/GUI/MainFrame.pm:281 +msgid "Export plate as 3MF..." +msgstr "Exportovat plochu jako 3MF..." + +#: lib/Slic3r/GUI/MainFrame.pm:278 +msgid "Export plate as AMF..." +msgstr "Exportovat plochu jako AMF..." + +#: src/slic3r/GUI/MainFrame.cpp:368 +msgid "Export plate as STL including supports" +msgstr "Exportovat plochu vÄetnÄ› podpÄ›r jako STL soubor" + +#: lib/Slic3r/GUI/MainFrame.pm:275 +msgid "Export plate as STL..." +msgstr "Exportovat plochu jako STL..." + +#: xs/src/slic3r/GUI/GUI.cpp:930 +msgid "Export print config" +msgstr "Exportovat nastavení tisku" + +#: src/libslic3r/PrintConfig.cpp:2943 +msgid "Export SLA" +msgstr "Exportovat SLA" + +#: src/libslic3r/PrintConfig.cpp:2959 +msgid "Export STL" +msgstr "Exportovat STL" + +#: src/slic3r/GUI/Plater.cpp:1925 +msgid "Export STL file:" +msgstr "Exportovat STL soubor:" + +#: lib/Slic3r/GUI/Plater.pm:326 +msgid "Export STL…" +msgstr "Exportovat STL…" + +#: src/libslic3r/PrintConfig.cpp:2924 +msgid "Export SVG" +msgstr "Exportovat SVG" + +#: src/libslic3r/PrintConfig.cpp:2950 +msgid "Export the model(s) as 3MF." +msgstr "Exportovat model(y) jako 3MF." + +#: src/libslic3r/PrintConfig.cpp:2955 +msgid "Export the model(s) as AMF." +msgstr "Exportovat model(y) jako AMF." + +#: src/libslic3r/PrintConfig.cpp:2932 +msgid "Export the model(s) as OBJ." +msgstr "Exportovat model(y) jako OBJ." + +#: src/libslic3r/PrintConfig.cpp:2960 +msgid "Export the model(s) as STL." +msgstr "Exportovat model(y) jako STL." + +#: src/slic3r/GUI/Plater.cpp:2927 +msgid "Export the selected object as STL file" +msgstr "Exportovat vybrané objekty jako STL soubor" + +#: lib/Slic3r/GUI/Plater.pm:2307 +msgid "Export this single object as STL file" +msgstr "Exportovat tento jediný objekt jako STL soubor" + +#: src/libslic3r/Print.cpp:1517 +msgid "Exporting G-code" +msgstr "Exportování souboru G-code" + +#: src/slic3r/Utils/FixModelByWin10.cpp:341 +msgid "Exporting model..." +msgstr "Exportování modelu..." + +#: src/slic3r/Utils/FixModelByWin10.cpp:219 +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" +msgstr "Exportování zdrojového modelu" + +#: src/slic3r/GUI/Tab.cpp:3306 +msgid "Exposure" +msgstr "Osvit" + +#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2311 +msgid "Exposure time" +msgstr "Doba osvitu" + +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 +msgid "External perimeter" +msgstr "VnÄ›jší perimetr" + +#: src/slic3r/GUI/PresetHints.cpp:153 +msgid "external perimeters" +msgstr "vnÄ›jší perimetry" + +#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:425 +msgid "External perimeters" +msgstr "VnÄ›jší perimetry" + +#: src/libslic3r/PrintConfig.cpp:437 +msgid "External perimeters first" +msgstr "Nejprve tisknout vnÄ›jší perimetry" + +#: src/libslic3r/PrintConfig.cpp:1518 src/libslic3r/PrintConfig.cpp:1526 +msgid "Extra length on restart" +msgstr "Extra vzdálenost pÅ™i návratu" + +#: src/libslic3r/PrintConfig.cpp:1321 +msgid "Extra loading distance" +msgstr "Extra délka pÅ™i zavádÄ›ní" + +#: src/libslic3r/PrintConfig.cpp:445 +msgid "Extra perimeters if needed" +msgstr "Extra perimetry (pokud jsou potÅ™eba)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:335 src/slic3r/GUI/Tab.cpp:1479 +#: src/libslic3r/PrintConfig.cpp:455 +msgid "Extruder" +msgstr "Extruder" + +#: src/slic3r/GUI/Tab.cpp:2253 src/libslic3r/GCode/PreviewData.cpp:475 +#, possible-c-format +msgid "Extruder %d" +msgstr "Extruder %d" + +#: src/slic3r/GUI/ConfigWizard.cpp:592 +msgid "Extruder and Bed Temperatures" +msgstr "Teploty extruderu a podložky" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 +msgid "Extruder changed to" +msgstr "Extruder zmÄ›nÄ›n na" + +#: src/slic3r/GUI/Tab.cpp:1171 +msgid "Extruder clearance (mm)" +msgstr "Kolizní oblast extruderu (mm)" + +#: src/libslic3r/PrintConfig.cpp:490 +msgid "Extruder Color" +msgstr "Barva extruderu" + +#: src/libslic3r/PrintConfig.cpp:497 +msgid "Extruder offset" +msgstr "Odsazení extruderu" + +#: src/libslic3r/PrintConfig.cpp:863 +msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." +msgstr "Teplota extruderu pro první vrstvu. Chcete-li bÄ›hem tisku ruÄnÄ› ovládat teplotu, nastavte tuto hodnotu na nulu, aby se ve výstupním souboru zakázaly příkazy pro řízení teploty." + +#: src/libslic3r/PrintConfig.cpp:1978 +msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." +msgstr "Teplota extruderu pro následující vrstvy po vrstvÄ› první. Nastavte tuto hodnotu na nulu, abyste zakázali příkazy pro řízení teploty na výstupu." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72 +#: src/slic3r/GUI/GUI_ObjectList.cpp:513 src/slic3r/GUI/Tab.cpp:1119 +#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:954 src/libslic3r/PrintConfig.cpp:1340 +#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1852 +#: src/libslic3r/PrintConfig.cpp:1878 src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2159 +msgid "Extruders" +msgstr "Extrudery" + +#: src/libslic3r/PrintConfig.cpp:507 +msgid "Extrusion axis" +msgstr "Osa extruderu" + +#: src/libslic3r/PrintConfig.cpp:513 +msgid "Extrusion multiplier" +msgstr "NásobiÄ extruze" + +#: src/slic3r/GUI/ConfigWizard.cpp:612 +msgid "Extrusion Temperature:" +msgstr "Teplota extruze:" + +#: src/slic3r/GUI/Tab.cpp:1143 +msgid "Extrusion width" +msgstr "Šířka extruze" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:514 +#: src/libslic3r/PrintConfig.cpp:416 src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:830 src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:1349 src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1861 src/libslic3r/PrintConfig.cpp:2018 +msgid "Extrusion Width" +msgstr "Šíře extruze" + +#: src/slic3r/GUI/Plater.cpp:139 +msgid "Facets" +msgstr "Facety" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:240 +msgid "facets added" +msgstr "facety pÅ™idány" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:239 +msgid "facets removed" +msgstr "facety odebrány" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:241 +msgid "facets reversed" +msgstr "facety otoÄeny" + +#: src/libslic3r/PrintConfig.cpp:2302 +msgid "Faded layers" +msgstr "Vrstvy poÄáteÄního osvitu" + +#: src/libslic3r/Zipper.cpp:47 +msgid "failed finding central directory" +msgstr "selhalo nalezení koÅ™enového adresáře" + +#: src/slic3r/Utils/FixModelByWin10.cpp:235 +msgid "Failed loading the input model." +msgstr "NaÄtení vstupního modelu se nezdaÅ™ilo." + +#: src/libslic3r/PrintBase.cpp:65 +msgid "Failed processing of the output_filename_format template." +msgstr "Zpracování Å¡ablony output_filename_format selhalo." + +#: src/slic3r/GUI/PresetHints.cpp:38 +msgid "Fan " +msgstr "Ventilátor " + +#: src/slic3r/GUI/Tab.cpp:1501 +msgid "Fan settings" +msgstr "Nastavení ventilátoru" + +#: src/slic3r/GUI/Tab.cpp:1502 +msgid "Fan speed" +msgstr "Rychlost ventilátoru" + +#: src/libslic3r/PrintConfig.cpp:2240 +msgid "Fast" +msgstr "Rychlý" + +#: src/libslic3r/PrintConfig.cpp:2241 +msgid "Fast tilt" +msgstr "Rychlý náklon" + +#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:537 +#: src/libslic3r/GCode/PreviewData.cpp:394 +msgid "Feature type" +msgstr "Typ" + +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 +msgid "Feature types" +msgstr "Typy extruzí" + +#: lib/Slic3r/GUI/Plater.pm:256 +msgid "Fewer" +msgstr "MénÄ›" + +#: src/slic3r/GUI/Plater.cpp:682 src/slic3r/GUI/Tab.cpp:1470 +#: src/slic3r/GUI/Tab.cpp:1471 +msgid "Filament" +msgstr "Filament" + +#: src/slic3r/GUI/Preset.cpp:1275 +msgid "filament" +msgstr "filament" + +#: src/slic3r/GUI/ConfigWizard.cpp:541 +msgid "Filament and Nozzle Diameters" +msgstr "PrůmÄ›ry filamentu a trysky" + +#: src/slic3r/GUI/ConfigWizard.cpp:574 +msgid "Filament Diameter:" +msgstr "PrůmÄ›r filamentu:" + +#: src/libslic3r/PrintConfig.cpp:619 +msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves " +msgstr "Filament je chlazen pohyby tam a zpÄ›t v chladicí trubiÄce. Zadejte požadovaný poÄet tÄ›chto pohybů" + +#: src/libslic3r/PrintConfig.cpp:654 +msgid "Filament load time" +msgstr "Doba zavádÄ›ní filamentu" + +#: src/libslic3r/PrintConfig.cpp:556 +msgid "Filament notes" +msgstr "Poznámky k filamentu" + +#: src/libslic3r/PrintConfig.cpp:1312 +msgid "Filament parking position" +msgstr "Parkovací pozice filamentu" + +#: src/slic3r/GUI/Tab.cpp:1516 +msgid "Filament properties" +msgstr "Vlastnosti filamentu" + +#: src/slic3r/GUI/Tab.hpp:335 +msgid "Filament Settings" +msgstr "Nastavení filamentu" + +#: src/libslic3r/PrintConfig.cpp:694 +msgid "Filament type" +msgstr "Typ filamentu" + +#: src/libslic3r/PrintConfig.cpp:669 +msgid "Filament unload time" +msgstr "Doba vysouvání filamentu" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 +msgid "filaments" +msgstr "filamenty" + +#: lib/Slic3r/GUI/Plater.pm:1555 +msgid "File added to print queue" +msgstr "Soubor byl pÅ™idán do tiskové fronty" + +#: src/libslic3r/Zipper.cpp:75 +msgid "file close failed" +msgstr "zavÅ™ení souboru selhalo" + +#: src/libslic3r/Zipper.cpp:69 +msgid "file create failed" +msgstr "vytvoÅ™ení souboru selhalo" + +#: src/slic3r/GUI/MainFrame.cpp:642 +msgid "File Not Found" +msgstr "Soubor nenalezen" + +#: src/libslic3r/Zipper.cpp:89 +msgid "file not found" +msgstr "Soubor nenalezen" + +#: src/libslic3r/Zipper.cpp:67 +msgid "file open failed" +msgstr "otevÅ™ení souboru selhalo" + +#: src/libslic3r/Zipper.cpp:73 +msgid "file read failed" +msgstr "Ätení souboru se nezdaÅ™ilo" + +#: src/libslic3r/Zipper.cpp:77 +msgid "file seek failed" +msgstr "hledání souboru selhalo" + +#: src/libslic3r/Zipper.cpp:79 +msgid "file stat failed" +msgstr "soubor stat selhal" + +#: src/libslic3r/Zipper.cpp:39 +msgid "file too large" +msgstr "soubor je příliÅ¡ velký" + +#: src/libslic3r/Zipper.cpp:71 +msgid "file write failed" +msgstr "zápis souboru se nezdaÅ™il" + +#: src/libslic3r/PrintConfig.cpp:728 +msgid "Fill angle" +msgstr "Úhel výplnÄ›" + +#: src/libslic3r/PrintConfig.cpp:742 +msgid "Fill density" +msgstr "Hustota výplnÄ›" + +#: src/libslic3r/PrintConfig.cpp:779 +msgid "Fill pattern" +msgstr "Vzor výplnÄ›" + +#: src/libslic3r/PrintConfig.cpp:410 +msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." +msgstr "Vzor výplnÄ› pro spodní vrstvy. Ovlivňuje pouze spodní vnÄ›jší viditelné vrstvy. Neovlivňuje následné plné vrstvy." + +#: src/libslic3r/PrintConfig.cpp:781 +msgid "Fill pattern for general low-density infill." +msgstr "Vzor výplnÄ› pro obecnou výplň s nízkou hustotou." + +#: src/libslic3r/PrintConfig.cpp:390 +msgid "Fill pattern for top infill. This only affects the top visible layer, and not its adjacent solid shells." +msgstr "Nastavte vzor pro horní výplň. Ovlivňuje pouze horní viditelnou vrstvu a ne její sousední plné vrstvy." + +#: xs/src/libslic3r/PrintConfig.cpp:285 +msgid "Fill pattern for top/bottom infill. This only affects the external visible layer, and not its adjacent solid shells." +msgstr "Vzor výplnÄ› pro vrchní/spodní vrstvy. Ovlivňuje pouze vnÄ›jší viditelné vrstvy. Neovlivňuje sousední plné vrstvy." + +#: src/libslic3r/SLA/SLASupportTree.cpp:2154 +msgid "Filtering" +msgstr "Filtrování" + +#: src/slic3r/GUI/BonjourDialog.cpp:225 +msgid "Finished" +msgstr "DokonÄeno" + +#: src/slic3r/GUI/ConfigWizard.cpp:486 src/slic3r/GUI/Tab.cpp:1920 +msgid "Firmware" +msgstr "Firmware" + +#: src/slic3r/GUI/FirmwareDialog.cpp:740 +msgid "Firmware flasher" +msgstr "Aktualizace firmware" + +#: src/slic3r/GUI/FirmwareDialog.cpp:765 +msgid "Firmware image:" +msgstr "Soubor s firmware:" + +#: src/slic3r/GUI/Tab.cpp:2431 +msgid "Firmware Retraction" +msgstr "Firmware Retrakce" + +#: src/slic3r/GUI/ConfigWizard.cpp:486 +msgid "Firmware Type" +msgstr "Typ firmware" + +#: src/libslic3r/PrintConfig.cpp:812 src/libslic3r/PrintConfig.cpp:821 +#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:862 +msgid "First layer" +msgstr "První vrstva" + +#: src/libslic3r/PrintConfig.cpp:841 +msgid "First layer height" +msgstr "Výška první vrstvy" + +#: src/libslic3r/Print.cpp:1328 +msgid "First layer height can't be greater than nozzle diameter" +msgstr "Výška první vrstvy nesmí být vÄ›tší než průmÄ›r trysky" + +#: src/libslic3r/PrintConfig.cpp:852 +msgid "First layer speed" +msgstr "Rychlost první vrstvy" + +#: src/slic3r/GUI/PresetHints.cpp:216 +msgid "First layer volumetric" +msgstr "Volumetrická hodnota první vrstvy" + +#: src/libslic3r/Print.cpp:1313 +msgid "first_layer_height" +msgstr "first_layer_height" + +#: lib/Slic3r/GUI/Plater.pm:2311 +msgid "Fix STL through Netfabb" +msgstr "Opravit STL pomocí služby Netfabb" + +#: lib/Slic3r/GUI/Plater.pm:2311 +msgid "Fix the model by sending it to a Netfabb cloud service through Windows 10 API" +msgstr "Opravit model zasláním do cloudové služby Netfabb pomocí Window 10 API" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1210 +msgid "Fix through the Netfabb" +msgstr "Opravit pomocí služby Netfabb" + +#: src/slic3r/GUI/GUI_App.cpp:685 +msgid "Flash printer &firmware" +msgstr "Nahrát &firmware tiskárny" + +#: xs/src/slic3r/GUI/GUI.cpp:356 +msgid "Flash printer firmware" +msgstr "Nahrát firmware tiskárny" + +#: src/slic3r/GUI/FirmwareDialog.cpp:146 +msgid "Flash!" +msgstr "Nahrát!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:275 +msgid "Flashing cancelled." +msgstr "Nahrávání zruÅ¡eno." + +#: src/slic3r/GUI/FirmwareDialog.cpp:274 +msgid "Flashing failed. Please see the avrdude log below." +msgstr "Nahrání selhalo. ProjdÄ›te si prosím avrdude log níže." + +#: src/slic3r/GUI/FirmwareDialog.cpp:192 +msgid "Flashing failed: " +msgstr "Nahrávání selhalo:" + +#: src/slic3r/GUI/FirmwareDialog.cpp:148 +msgid "Flashing in progress. Please do not disconnect the printer!" +msgstr "Probíhá nahrávání firmware. Prosím neodpojujte tiskárnu!" + +#: src/slic3r/GUI/FirmwareDialog.cpp:273 +msgid "Flashing succeeded!" +msgstr "Nahrávání bylo úspěšné!" + +#: src/slic3r/GUI/Tab.cpp:1156 +msgid "Flow" +msgstr "Průtok" + +#: src/slic3r/GUI/UpdateDialogs.cpp:188 +msgid "For more information please visit our wiki page:" +msgstr "Pro více informací prosím navÅ¡tivte naší wiki stránku:" + +#: src/slic3r/GUI/Tab.cpp:1295 +msgid "For the Wipe Tower to work with the soluble supports, the support layers\nneed to be synchronized with the object layers.\n\nShall I synchronize support layers in order to enable the Wipe Tower?" +msgstr "U Äistící věže pokud pracujte s rozpustnými materiály, je tÅ™eba\nsynchronizovat vrstvy podpÄ›r s vrstvami objektů.\n\nMám synchronizovat vrstvy podpÄ›r, aby bylo možné zapnout ÄŒistící věž?" + +#: src/libslic3r/Print.cpp:1302 +msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." +msgstr "U Äistící věže pokud pracujte s rozpustnými materiály, je tÅ™eba\nsynchronizovat vrstvy podpÄ›r s vrstvami objektů." + +#: src/libslic3r/PrintConfig.cpp:1660 +msgid "Force solid infill for regions having a smaller area than the specified threshold." +msgstr "Vynucení plné výplnÄ› pro oblasti, které mají menší plochu, než je stanovená prahová hodnota." + +#: src/libslic3r/PrintConfig.cpp:1023 +msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." +msgstr "Vynucení vytváření pevných skoÅ™epin mezi sousedními materiály/objemy. UžiteÄné pro tisk s více extrudery s průsvitnými materiály nebo ruÄnÄ› rozpustným podpůrným materiálem." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 +msgid "From" +msgstr "PÅ™edchozí extruder" + +#: src/slic3r/GUI/MainFrame.cpp:525 +msgid "Front" +msgstr "ZepÅ™edu" + +#: src/slic3r/GUI/MainFrame.cpp:525 +msgid "Front View" +msgstr "Pohled zepÅ™edu" + +#: src/slic3r/GUI/Tab.cpp:2151 +msgid "Full Power" +msgstr "Plný výkon (režim Normal)" + +#: src/slic3r/GUI/MainFrame.cpp:677 +msgid "G-code" +msgstr "G-code" + +#: lib/Slic3r/GUI/Plater.pm:1561 +msgid "G-code file exported to " +msgstr "Soubor G-code byl exportován do " + +#: src/libslic3r/PrintConfig.cpp:888 +msgid "G-code flavor" +msgstr "Druh G-code" #: src/libslic3r/PrintConfig.cpp:689 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:695 -msgid "Filament type" -msgstr "Typ filamentu" +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:870 +#: src/libslic3r/GCode/PreviewData.cpp:170 +msgid "Gap fill" +msgstr "Výplň tenkých stÄ›n" -#: src/libslic3r/PrintConfig.cpp:696 -msgid "The filament material type for use in custom G-codes." -msgstr "" +#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1812 +#: src/slic3r/GUI/Tab.cpp:2013 +msgid "General" +msgstr "Obecné" -#: src/libslic3r/PrintConfig.cpp:712 -msgid "Soluble material" -msgstr "Rozpustný materiál" +#: src/libslic3r/PrintConfig.cpp:1242 +msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." +msgstr "Nevygenerovat ménÄ›, než poÄet obrysových smyÄek, potÅ™ebných ke spotÅ™ebování specifikovaného množství filamentu na spodní vrstvu. U strojů s více extrudery platí toto minimum pro každý extruder." -#: src/libslic3r/PrintConfig.cpp:713 -msgid "Soluble material is most likely used for a soluble support." -msgstr "Rozpustný materiál je pÅ™evážnÄ› používán pro tisk rozpustných podpor." +#: src/libslic3r/SLA/SLASupportTree.cpp:2155 +msgid "Generate pinheads" +msgstr "Generovat podpůrné hroty" -#: src/libslic3r/PrintConfig.cpp:719 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "" -"Zde zadejte cenu filamentu za kg. Slouží pouze pro statistické informace." +#: src/libslic3r/PrintConfig.cpp:1779 +msgid "Generate support material" +msgstr "Generovat podpÄ›ry" -#: src/libslic3r/PrintConfig.cpp:720 -msgid "money/kg" -msgstr "korun/kg" +#: src/libslic3r/PrintConfig.cpp:1840 +msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." +msgstr "Vygeneruje podpÄ›ry pro zadaný poÄet vrstev poÄítaných od spodního okraje, bez ohledu na to, zda jsou povoleny standartní podpÄ›ry nebo nikoliv a bez ohledu na jakýkoli prah úhlu. To je užiteÄné pro získání vÄ›tší pÅ™ilnavosti pÅ™edmÄ›tů s velmi tenkou nebo Å¡patnou stopou na tiskové podložce." -#: src/libslic3r/PrintConfig.cpp:729 -msgid "Fill angle" -msgstr "Úhel výplnÄ›" +#: src/libslic3r/PrintConfig.cpp:2362 +msgid "Generate supports" +msgstr "Generovat podpÄ›ry" -#: src/libslic3r/PrintConfig.cpp:731 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"Výchozí úhel pro orientaci výplnÄ›. Bude pro nÄ›j použito křížové Å¡rafování. " -"Mosty budou vyplnÄ›ny nejlepším smÄ›rem, který Slic3r dokáže rozpoznat, takže " -"toto nastavení je neovlivní." +#: src/libslic3r/PrintConfig.cpp:2364 +msgid "Generate supports for the models" +msgstr "Generovat podpÄ›ry modelů" -#: src/libslic3r/PrintConfig.cpp:744 -msgid "Fill density" -msgstr "Hustota výplnÄ›" +#: src/libslic3r/Print.cpp:1492 +msgid "Generating brim" +msgstr "Generování límce" -#: src/libslic3r/PrintConfig.cpp:746 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Hustota vnitÅ™ní výplnÄ›, vyjádÅ™ená v rozmezí 0% až 100%." +#: src/libslic3r/SLAPrint.cpp:58 +msgid "Generating pad" +msgstr "Generování podložky" -#: src/libslic3r/PrintConfig.cpp:782 -msgid "Fill pattern" -msgstr "Vzor výplnÄ›" +#: src/libslic3r/Print.cpp:1484 +msgid "Generating skirt" +msgstr "Generování obrysových smyÄek" -#: src/libslic3r/PrintConfig.cpp:784 -msgid "Fill pattern for general low-density infill." -msgstr "Vzor výplnÄ› pro obecnou výplň s nízkou hustotou." +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:809 +msgid "Generating support points" +msgstr "Generování podpÄ›rných bodů" -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/SLAPrint.cpp:57 +msgid "Generating support tree" +msgstr "Generování podpÄ›r typu strom" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1551 +msgid "Generic" +msgstr "Obecný" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 +msgid "Gizmo cut" +msgstr "Gizmo Å™ez" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "Gizmo move" +msgstr "Gizmo posuv" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 +msgid "Gizmo Place face on bed" +msgstr "Gizmo Umístit plochou na podložku" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 +msgid "Gizmo rotate" +msgstr "Gizmo rotace" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 +msgid "Gizmo scale" +msgstr "Gizmo měřítko" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 +msgid "Gizmo SLA support points" +msgstr "Gizmo SLA podpÄ›rné body" + +#: src/slic3r/GUI/ConfigWizard.cpp:571 +msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." +msgstr "Je zapotÅ™ebí velká pÅ™esnost, proto použijte posuvné měřítko (Å¡upleru) a proveÄte nÄ›kolik měření po délce filamentu, poté vypoÄítejte průmÄ›r." + +#: src/libslic3r/PrintConfig.cpp:797 msgid "Grid" -msgstr "" +msgstr "Mřížka" -#: src/libslic3r/PrintConfig.cpp:802 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Cubic" -msgstr "" +#: src/slic3r/GUI/GUI_ObjectList.cpp:1846 +msgid "Group manipulation" +msgstr "Manipulace se skupinou" #: src/libslic3r/PrintConfig.cpp:805 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:808 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:809 msgid "Gyroid" -msgstr "" +msgstr "Gyroid" -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 -msgid "First layer" -msgstr "První vrstva" +#: src/slic3r/GUI/Tab.cpp:2775 +msgid "has the following unsaved changes:" +msgstr "má neuložené následující zmÄ›ny:" -#: src/libslic3r/PrintConfig.cpp:817 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "" -"Toto je zrychlení, které vaÅ¡e tiskárna použije pro první vrstvu. Nastavte " -"nulu pro vypnutí řízení zrychlení pro první vrstvu." +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:838 +msgid "Head diameter: " +msgstr "PrůmÄ›r hrotu:" -#: src/libslic3r/PrintConfig.cpp:827 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "" -"Teplota vyhřívané tiskové podložky pro první vrstvu. Nastavením tuto hodnoty " -"na nulu vypnete příkazy pro řízení teploty ve vrstvÄ› ve výstupu." +#: src/slic3r/GUI/Tab.cpp:3483 +msgid "Head penetration should not be greater than the head width." +msgstr "Průnik podpÄ›ry do modelu by nemÄ›l být vÄ›tší než je tloušťka hrotu podpÄ›ry." -#: src/libslic3r/PrintConfig.cpp:837 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" -"Nastavením kladné hodnoty zvolíte manuální šířku vytlaÄování pro první " -"vrstvu. Toto můžete použít k vytlaÄování tlustší extruze pro lepší " -"pÅ™ilnavost. Pokud je vyjádÅ™eno jako procenty (například 120%), bude " -"vypoÄteno z výšky první vrstvy. Pokud je nastavena na nulu, použije se " -"výchozí šířka vytlaÄování." +#: src/libslic3r/PrintConfig.cpp:822 +msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." +msgstr "Teplota vyhřívané tiskové podložky pro první vrstvu. Nastavením tuto hodnoty na nulu vypnete příkazy pro řízení teploty ve vrstvÄ› ve výstupu." -#: src/libslic3r/PrintConfig.cpp:848 -msgid "First layer height" -msgstr "Výška první vrstvy" - -#: src/libslic3r/PrintConfig.cpp:850 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"PÅ™i tisku s velmi nízkými výškami vrstev můžete stále vytisknout tlustší " -"spodní vrstvu pro zlepÅ¡ení pÅ™ilnavosti a toleranci pro nedokonale " -"zkalibrovanou tiskovou podložku. Může být vyjádÅ™eno jako absolutní hodnota " -"nebo jako procento (například: 150%) z výchozí výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 -msgid "mm or %" -msgstr "mm nebo %" - -#: src/libslic3r/PrintConfig.cpp:860 -msgid "First layer speed" -msgstr "Rychlost první vrstvy" - -#: src/libslic3r/PrintConfig.cpp:861 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"Pokud je vyjádÅ™ena jako absolutní hodnota v mm / s, bude tato rychlost " -"použita pro vÅ¡echny pohyby tisku první vrstvy bez ohledu na jejich typ. " -"Pokud je hodnota vyjádÅ™ena procenty (například: 40%), zmÄ›ní v závisloti na " -"výchozích rychlostech." - -#: src/libslic3r/PrintConfig.cpp:872 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"Teplota extruderu pro první vrstvu. Chcete-li bÄ›hem tisku ruÄnÄ› ovládat " -"teplotu, nastavte tuto hodnotu na nulu, aby se ve výstupním souboru zakázaly " -"příkazy pro řízení teploty." - -#: src/libslic3r/PrintConfig.cpp:882 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" -"Rychlost plnÄ›ní malých mezer pomocí krátkých cikcak pohybů. Udržujte tuto " -"hodnotu pomÄ›rnÄ› nízkou, aby nedoÅ¡lo k příliÅ¡ným otÅ™esům a problémům s " -"rezonancí. Nastavte nulu pro vypnutí vyplnÄ›ní mezery." - -#: src/libslic3r/PrintConfig.cpp:890 -msgid "Verbose G-code" -msgstr "Komentáře do G-code" - -#: src/libslic3r/PrintConfig.cpp:891 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Aktivací získáte komentovaný soubor G-code, pÅ™iÄemž každý řádek je doplnÄ›n " -"popisným textem. Pokud tisknete z SD karty, dodateÄné informace v souboru " -"můžou zpomalit firmware." - -#: src/libslic3r/PrintConfig.cpp:899 -msgid "G-code flavor" -msgstr "Druh G-code" - -#: src/libslic3r/PrintConfig.cpp:900 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"NÄ›které příkazy G/M code, vÄetnÄ› řízení teploty a jiné, nejsou univerzální. " -"Vyberte typ firmwaru který používá vaÅ¡e tiskárna pro dosažení kompatibilního " -"výstupu. Příkazy typu “No extrusion†zabraňují Slic3ru zcela exportovat " -"jakoukoliv hodnotu extruze." - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:929 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:930 -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:939 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "" -"Toto je zrychlení, které vaÅ¡e tiskárna použije pro výplň. Nastavte nulu, " -"chcete-li vypnout řízení zrychlení pro výplň." - -#: src/libslic3r/PrintConfig.cpp:948 -msgid "Combine infill every" -msgstr "Kombinovat výplň každou" - -#: src/libslic3r/PrintConfig.cpp:950 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"Tato funkce umožňuje kombinovat výplň a urychlit tisk pomocí extruzí " -"silnÄ›jších výplňových vrstev pÅ™i zachování tenkých obvodů, a tím i pÅ™esnosti." - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "Combine infill every n layers" -msgstr "Kombinovat výplň každou n vrstvu" - -#: src/libslic3r/PrintConfig.cpp:960 -msgid "Infill extruder" -msgstr "Extruder pro výplň" - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "The extruder to use when printing infill." -msgstr "Extruder který se použije pro tisk výplní." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Nastavením kladné hodnoty upravíte manuálnÄ› šířku extruze pro výplň. Pokud " -"je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, " -"jinak se použije průmÄ›r trysky 1,125 x. Je možné, že budete chtít použít " -"tlustší extruze, pro zrychlení výplnÄ› a zpevnÄ›ní vaÅ¡ich výtisků. Pokud je " -"vyjádÅ™eno jako procenty (například 90%), bude vypoÄteno z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:981 -msgid "Infill before perimeters" -msgstr "Tisknout výplň pÅ™ed tiskem perimetrů" - -#: src/libslic3r/PrintConfig.cpp:982 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "Tato volba obrátí poÅ™adí tisku obvodů a výplní." - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "Only infill where needed" -msgstr "Výplň pouze kde je potÅ™eba" - -#: src/libslic3r/PrintConfig.cpp:990 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"Tato volba omezuje výplň na plochy skuteÄnÄ› potÅ™ebné pro podporu stropů " -"(bude se chovat jako vnitÅ™ní podpůrný materiál). Je-li tato volba zapnuta, " -"zpomaluje generování G-code kvůli nÄ›kolikanásobným kontrolám." - -#: src/libslic3r/PrintConfig.cpp:998 -msgid "Infill/perimeters overlap" -msgstr "PÅ™esah pro výplň/perimetry" - -#: src/libslic3r/PrintConfig.cpp:1000 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"Toto nastavení uplatňuje dodateÄné pÅ™ekrytí mezi výplní a obvodem pro lepší " -"spojení. Teoreticky by to nemÄ›lo být potÅ™eba, ale reakce by mohla způsobit " -"mezery. Pokud je vyjádÅ™eno procenty (například: 15%), vypoÄítá se z šířky " -"extruze perimetrů." - -#: src/libslic3r/PrintConfig.cpp:1012 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "Rychlost tisku vnitÅ™ní výplnÄ›. Pro automatické nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:1020 -msgid "Inherits profile" -msgstr "ZdÄ›dí profil" - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Name of the profile, from which this profile inherits." -msgstr "Název profilu, ze kterého tento profil zdÄ›dí." - -#: src/libslic3r/PrintConfig.cpp:1032 -msgid "Interface shells" -msgstr "Mezilehlé stÄ›ny" - -#: src/libslic3r/PrintConfig.cpp:1033 -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." -msgstr "" -"Vynucení vytváření pevných skoÅ™epin mezi sousedními materiály/objemy. " -"UžiteÄné pro tisk s více extrudery s průsvitnými materiály nebo ruÄnÄ› " -"rozpustným podpůrným materiálem." - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"Tento vlastní kód je vložen pÅ™i každé zmÄ›nÄ› vrstvy, hned po pohybu Z a " -"pÅ™edtím, než se extruder pÅ™esune na první bod vrstvy. Můžete pÅ™idávat " -"zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru, stejnÄ› tak jako [layer_num] " -"a [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:1054 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1055 -msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 -msgid "Max" -msgstr "Maximum" - -#: src/libslic3r/PrintConfig.cpp:1164 -msgid "This setting represents the maximum speed of your fan." -msgstr "Toto nastavení vyjadÅ™uje maximální rychlost ventilátoru." - -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" -"Toto je nejvÄ›tší možná výška vrstvy pro tento extruder, který se používá k " -"zakrytí výšky promÄ›nné vrstvy a výšky podpůrné vrstvy. Maximální doporuÄená " -"výška vrstvy Äiní 75% šířky vytlaÄování, aby se dosáhlo pÅ™iměřené " -"pÅ™ilnavosti mezi vrstvami. Pokud je nastavena hodnota 0, je výška vrstvy " -"omezena na 75% průmÄ›ru trysky." - -#: src/libslic3r/PrintConfig.cpp:1185 -msgid "Max print speed" -msgstr "Maximální rychlost tisku" - -#: src/libslic3r/PrintConfig.cpp:1186 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"Pokud jsou vÅ¡echna ostatní nastavení rychlosti na hodnotÄ› nula, Slic3r " -"automaticky vypoÄítá optimální rychlost pro udržení konstantního tlaku v " -"extruderu. Toto experimentální nastavení slouží k nastavení nejvyšší " -"rychlosti tisku, kterou chcete povolit." - -#: src/libslic3r/PrintConfig.cpp:1197 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "" -"Toto experimentální nastavení slouží k nastavení maximální objemové " -"rychlosti, kterou váš extruder podporuje." - -#: src/libslic3r/PrintConfig.cpp:1206 -msgid "Max volumetric slope positive" -msgstr "Maximální pozitivní objemový sklon" - -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" -"Toto experimentální nastavení se používá k omezení rychlosti zmÄ›ny " -"objemového průtoku. Hodnota 1,8mm³/s² zajišťuje, že zmÄ›na objemového průtoku " -"z 1,8 mm³/s (šířka extruze 0,45 mm, výška extruze 0,2 mm, rychlost posuvu 20 " -"mm/s) na 5,4 mm³/s (rychlost posuvu 60 mm/s) potrvá nejménÄ› 2 sekundy." - -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: src/libslic3r/PrintConfig.cpp:1218 -msgid "Max volumetric slope negative" -msgstr "Maximální negativní objemový sklon" - -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 -msgid "Min" -msgstr "Minimum" - -#: src/libslic3r/PrintConfig.cpp:1231 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "" -"Toto nastavení pÅ™edstavuje minimální hodnotu PWM, kterou ventilátor " -"potÅ™ebuje, aby pracoval." - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" -"Nejmenší tisknutelná výška vrstvy pro tento extruder. Omezuje rozliÅ¡ení pro " -"výšku promÄ›nné vrstvy. Typické hodnoty jsou mezi 0,05 mm a 0,1 mm." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Min print speed" -msgstr "Minimální rychlost tisku" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r nebude mÄ›nit rychlost pod tuto rychlost." - -#: src/libslic3r/PrintConfig.cpp:1259 -msgid "Minimal filament extrusion length" -msgstr "Minimální délka extruze filamentu" - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"Nevygenerovat ménÄ›, než poÄet obrysových smyÄek, potÅ™ebných ke spotÅ™ebování " -"specifikovaného množství filamentu na spodní vrstvu. U strojů s více " -"extrudery platí toto minimum pro každý extruder." - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Configuration notes" -msgstr "KonfiguraÄní poznámky" - -#: src/libslic3r/PrintConfig.cpp:1271 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Zde můžete zadat své osobní poznámky. Tento text bude pÅ™idán do komentáře " -"záhlaví G code." - -#: src/libslic3r/PrintConfig.cpp:1281 -msgid "Nozzle diameter" -msgstr "PrůmÄ›r trysky" - -#: src/libslic3r/PrintConfig.cpp:1282 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "PrůmÄ›r trysky extruderu (například: 0.5, 0.35 atd.)" - -#: src/libslic3r/PrintConfig.cpp:1288 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1289 -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "Název hosta, IP nebo URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 -msgid "Only retract when crossing perimeters" -msgstr "Provést retrakci pouze pÅ™i pÅ™ejíždÄ›ní perimetrů" - -#: src/libslic3r/PrintConfig.cpp:1326 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "" -"Vypne retrakce, pokud dráha nepÅ™ekroÄí perimetr vrchní vrstvy (a proto bude " -"pravdÄ›podobnÄ› jakékoliv odkapávání neviditelné)." - -#: src/libslic3r/PrintConfig.cpp:1334 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" -"Tato volba sníží teplotu neaktivních extruderů, aby u nich nedoÅ¡lo k " -"vytékání." - -#: src/libslic3r/PrintConfig.cpp:1342 -msgid "Output filename format" -msgstr "Formát názvu výstupního souboru" - -#: src/libslic3r/PrintConfig.cpp:1343 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"V této Å¡ablonÄ› můžete použít vÅ¡echny možnosti konfigurace jako promÄ›nné. " -"Můžete například použít: [layer_height], [fill_density] etc. Také můžete " -"použít [timestamp], [year], [month], [day], [hour], [minute], [second], " -"[version], [input_filename], [input_filename_base]." - -#: src/libslic3r/PrintConfig.cpp:1353 -msgid "Detect bridging perimeters" -msgstr "Detekovat perimetry pÅ™emostÄ›ní" - -#: src/libslic3r/PrintConfig.cpp:1355 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"Experimentální volba pro nastavení průtoku pro pÅ™esahy (použije se průtok " -"jako u mostů), aplikuje se na nÄ› rychlost mostu a spustí se ventilátor." - -#: src/libslic3r/PrintConfig.cpp:1362 -msgid "Filament parking position" -msgstr "Parkovací pozice filamentu" - -#: src/libslic3r/PrintConfig.cpp:1363 -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " -msgstr "" -"Vzdálenost Å¡piÄky extruderu od místa, kde je zaparkován filament pÅ™i " -"vytažení. MÄ›la by se shodovat s hodnotou ve firmware tiskárny. " - -#: src/libslic3r/PrintConfig.cpp:1372 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1373 -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 -msgid "Perimeters" -msgstr "Perimetry" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"Jedná se o akceleraci, kterou vaÅ¡e tiskárna použije pro perimetry. Vysoká " -"hodnota, jako je 9000, obvykle dává dobré výsledky, pokud je váš hardware v " -"pořádku. Nastavte nulu pro vypnutí řízení zrychlení pro perimetry." - -#: src/libslic3r/PrintConfig.cpp:1392 -msgid "Perimeter extruder" -msgstr "Extruder pro perimetry" - -#: src/libslic3r/PrintConfig.cpp:1394 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "" -"Extruder, který se používá pÅ™i tisku perimetrů a límce. První extruder je 1." - -#: src/libslic3r/PrintConfig.cpp:1404 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" -"Nastavením na kladnou hodnotu nastavíte manuálnÄ› šířku vytlaÄování " -"perimetrů. Chcete-li získat pÅ™esnÄ›jší povrchy, můžete použít tenÄí extruze. " -"Pokud je ponechána nula, použije se standardní šířka extruze, pokud je " -"nastavena, jinak se použije průmÄ›r trysky 1,125 x. Pokud je vyjádÅ™eno " -"procenty (například 200%), vypoÄte se z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" -"Rychlost pro perimetry (obrysy, neboli svislé stÄ›ny). Zadejte nulu pro " -"automatické nastavení." - -#: src/libslic3r/PrintConfig.cpp:1427 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"Tato volba nastavuje poÄet perimetrů, které je tÅ™eba vygenerovat pro každou " -"vrstvu. Slic3r může toto Äíslo automaticky zvýšit, pokud detekuje Å¡ikmé " -"plochy, které se tisknou lépe s vyšším poÄtem obvodů, pokud je zapnuta " -"možnost Extra perimetry." - -#: src/libslic3r/PrintConfig.cpp:1431 -msgid "(minimum)" -msgstr "(minimálnÄ›)" - -#: src/libslic3r/PrintConfig.cpp:1439 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Pokud chcete zpracovat výstupní G-code pomocí vlastních skriptů, staÄí zde " -"uvést jejich absolutní cesty. OddÄ›lte více skriptů stÅ™edníkem. Skripty " -"pÅ™edají absolutní cestu k souboru G-code jako první argument a mohou " -"pÅ™istupovat k nastavení konfigurace Slic3ru Ätením promÄ›nných prostÅ™edí." - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "Printer type" -msgstr "Typ tiskárny" - -#: src/libslic3r/PrintConfig.cpp:1453 -msgid "Type of the printer." -msgstr "Typ tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1457 -msgid "Printer notes" -msgstr "Poznámky o tiskárnÄ›" - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "You can put your notes regarding the printer here." -msgstr "Zde můžete uvést poznámky týkající se tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "Printer vendor" -msgstr "Prodejce tiskárny" - -#: src/libslic3r/PrintConfig.cpp:1468 -msgid "Name of the printer vendor." -msgstr "Název prodejce tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1472 -msgid "Printer variant" -msgstr "Varianta tiskárny" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." -msgstr "" -"Název varianty tiskárny. Varianty tiskárny mohou být například rozliÅ¡eny " -"podle průmÄ›ru trysky." - -#: src/libslic3r/PrintConfig.cpp:1483 -msgid "Raft layers" -msgstr "Vrstev raftu" - -#: src/libslic3r/PrintConfig.cpp:1485 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "" -"Objekt se zvýší tímto poÄtem vrstev a pod ním bude vytvoÅ™en podpůrný " -"materiál." - -#: src/libslic3r/PrintConfig.cpp:1494 -msgid "Resolution" -msgstr "RozliÅ¡ení" - -#: src/libslic3r/PrintConfig.cpp:1495 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"Minimální rozliÅ¡ení detailů, které se používají pro zjednoduÅ¡ení vstupního " -"souboru pro urychlení slicovací úlohy a snížení využití pamÄ›ti. Modely s " -"vysokým rozliÅ¡ením Äasto obsahují více detailů než tiskárny dokážou " -"vykreslit. Nastavte na nulu, chcete-li zakázat jakékoli zjednoduÅ¡ení a " -"použít vstup v plném rozliÅ¡ení." - -#: src/libslic3r/PrintConfig.cpp:1506 -msgid "Minimum travel after retraction" -msgstr "Minimální rychloposun po retrakci" - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "" -"Retrakce není spuÅ¡tÄ›na, pokud jsou rychloposuny pojezdu kratší než tato " -"délka." - -#: src/libslic3r/PrintConfig.cpp:1514 -msgid "Retract amount before wipe" -msgstr "Délka retrakce pÅ™ed oÄiÅ¡tÄ›ním" - -#: src/libslic3r/PrintConfig.cpp:1515 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" -"U bowdenových extrudérů může být vhodné provést rychlé retrakce než se " -"spustí oÄiÅ¡tÄ›ní." - -#: src/libslic3r/PrintConfig.cpp:1523 -msgid "Retract on layer change" -msgstr "Retrakce pÅ™i zmÄ›nÄ› vrstvy" - -#: src/libslic3r/PrintConfig.cpp:1524 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "Tato možnost vyvolá retrakci, kdykoli je proveden pohyb Z." - -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 -msgid "Length" -msgstr "Vzdálenost" - -#: src/libslic3r/PrintConfig.cpp:1531 -msgid "Retraction Length" -msgstr "Vzdálenost retrakce" - -#: src/libslic3r/PrintConfig.cpp:1532 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"PÅ™i spuÅ¡tÄ›ní retrakce se filament zatáhne zpÄ›t o zadané množství (délka se " -"měří na surovém filamentu, než vstoupí do extruderu)." - -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 -msgid "mm (zero to disable)" -msgstr "mm (nula pro vypnutí)" - -#: src/libslic3r/PrintConfig.cpp:1540 -msgid "Retraction Length (Toolchange)" -msgstr "Vzdálenost retrakce (pÅ™i zmÄ›nÄ› nástroje)" - -#: src/libslic3r/PrintConfig.cpp:1541 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"PÅ™i výmÄ›nÄ› nástroje se spustí retrakce a filament se zatáhne zpÄ›t o zadané " -"množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Lift Z" -msgstr "Zvednout Z" - -#: src/libslic3r/PrintConfig.cpp:1551 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"Zadáním kladné hodnoty, se Z rychle pÅ™izvedne pÅ™i každém vyvolání retrakce. " -"PÅ™i použití více extruderů bude použito pouze nastavení pro první extruder." - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Above Z" -msgstr "Nad Z" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Only lift Z above" -msgstr "Zvednout Z pouze nad" - -#: src/libslic3r/PrintConfig.cpp:1561 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"Zadáním kladné hodnoty se zdvih Z uskuteÄní pouze nad zadanou absolutní " -"hodnotou Z. Toto nastavení můžete zvolit pro pÅ™eskoÄení pÅ™izvednutí u " -"prvních vrstev." - -#: src/libslic3r/PrintConfig.cpp:1569 -msgid "Below Z" -msgstr "Pod Z" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Only lift Z below" -msgstr "Zvednout Z pouze pod" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"Zadáním kladné hodnoty se zdvih Z uskuteÄní pouze pod zadanou absolutní " -"hodnotou Z. Toto nastavení můžete zvolit pro pÅ™eskoÄení pÅ™izvednutí u " -"prvních vrstev." - -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 -msgid "Extra length on restart" -msgstr "Extra vzdálenost pÅ™i návratu" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"Když je retrakce kompenzována po rychloposunu, extruder vytlaÄuje toto další " -"množství filamentu. Toto nastavení je zřídkakdy potÅ™eba." - -#: src/libslic3r/PrintConfig.cpp:1590 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Když je retrakce kompenzována po zmÄ›nÄ› nástroje, extruder vytlaÄuje toto " -"další množství filamentu." - -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 -msgid "Retraction Speed" -msgstr "Rychlost retrakce" - -#: src/libslic3r/PrintConfig.cpp:1600 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "Rychlost retrakce (toto nastavení platí pouze pro motor extruderu)." - -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 -msgid "Deretraction Speed" -msgstr "Rychlost deretrakce" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" -"Rychlost vtlaÄení filamentu do extruderu po retrakci (vztahuje se pouze na " -"motor extruderu). Pokud je ponecháno na nulu, použije se rychlost retrakce." - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "Seam position" -msgstr "Pozice Å¡vu" - -#: src/libslic3r/PrintConfig.cpp:1619 -msgid "Position of perimeters starting points." -msgstr "Pozice zaÄátku perimetrů." - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1627 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1628 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "Zezadu" - -#: src/libslic3r/PrintConfig.cpp:1636 -msgid "Direction" -msgstr "SmÄ›r" - -#: src/libslic3r/PrintConfig.cpp:1638 -msgid "Preferred direction of the seam" -msgstr "Preferovaný smÄ›r Å¡vu" - -#: src/libslic3r/PrintConfig.cpp:1639 -msgid "Seam preferred direction" -msgstr "Preferovaný smÄ›r Å¡vu" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "Jitter" -msgstr "Rozkmit (Jitter)" - -#: src/libslic3r/PrintConfig.cpp:1649 -msgid "Seam preferred direction jitter" -msgstr "Seam preferred direction jitter" - -#: src/libslic3r/PrintConfig.cpp:1650 -msgid "Preferred direction of the seam - jitter" -msgstr "Preferovaný smÄ›r Å¡vu - rozkmit" - -#: src/libslic3r/PrintConfig.cpp:1661 -msgid "USB/serial port for printer connection." -msgstr "USB/sériový port pro pÅ™ipojení tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Rychlost sériového portu" - -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Rychlost (baud) USB/sériového portu pro pÅ™ipojení tiskárny." - -#: src/libslic3r/PrintConfig.cpp:1679 -msgid "Distance from object" -msgstr "Vzdálenost od objektu" - -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "" -"Vzdálenost mezi obrysem a objektem (objekty). Nastavte tuto hodnotu na nulu, " -"pro slouÄení obrysu s pÅ™edmÄ›tem (pÅ™edmÄ›ty) a tvorbu límce pro dosažení lepší " -"pÅ™ilnavosti." - -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "Skirt height" -msgstr "Výška obrysu" - -#: src/libslic3r/PrintConfig.cpp:1689 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "" -"Výška obrysu vyjádÅ™ená ve vrstvách. Nastavte tuto hodnotu vysokou, pro " -"použití obrysu jako stínÄ›ní proti průvanu." - -#: src/libslic3r/PrintConfig.cpp:1697 -msgid "Loops (minimum)" -msgstr "SmyÄek (minimálnÄ›)" - -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "Skirt Loops" -msgstr "PoÄet obrysových smyÄek" - -#: src/libslic3r/PrintConfig.cpp:1699 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"PoÄet obrysových smyÄek. Je-li nastavena možnost Minimální délka extruze, " -"poÄet obrysových smyÄek může být vÄ›tší než poÄet zde nakonfigurovaných. " -"Nastavte tuto hodnotu na nulu, pro úplné deaktivování." - -#: src/libslic3r/PrintConfig.cpp:1708 -msgid "Slow down if layer print time is below" -msgstr "Zpomalit tisk pokud je doba tisku kratší než" - -#: src/libslic3r/PrintConfig.cpp:1709 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"Pokud je doba tisku vrstvy odhadnuta kratší než tento poÄet sekund, rychlost " -"tisku se zpomalí, aby se prodloužila doba tisku této vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1720 -msgid "Small perimeters" -msgstr "Malé perimetry" - -#: src/libslic3r/PrintConfig.cpp:1722 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Toto oddÄ›lené nastavení ovlivní rychlost perimetrů o polomÄ›ru <= 6,5 mm " -"(obvykle díry). Pokud je vyjádÅ™eno jako procentní podíl (například: 80%), " -"vypoÄte se z výše uvedeného nastavení rychlosti perimetrů. Pro automatické " -"nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:1732 -msgid "Solid infill threshold area" -msgstr "Prahová hodnota plochy pro plnou výplň" - -#: src/libslic3r/PrintConfig.cpp:1734 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "" -"Vynucení plné výplnÄ› pro oblasti, které mají menší plochu, než je stanovená " -"prahová hodnota." - -#: src/libslic3r/PrintConfig.cpp:1735 -msgid "mm²" -msgstr "mm²" - -#: src/libslic3r/PrintConfig.cpp:1742 -msgid "Solid infill extruder" -msgstr "Extruder pro plnou výplň" - -#: src/libslic3r/PrintConfig.cpp:1744 -msgid "The extruder to use when printing solid infill." -msgstr "Extruder který bude použit pÅ™i tisku plných výplní." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "Solid infill every" -msgstr "Plná výplň každou" - -#: src/libslic3r/PrintConfig.cpp:1753 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"Tato funkce umožňuje vynucení plné vrstvy za každý daný poÄet vrstev. Pro " -"vypnutí nastavte nulu. Můžete nastavit libovolnou hodnotu (například 9999); " -"Slic3r automaticky zvolí maximální poÄet vrstev, které se budou kombinovat " -"podle průmÄ›ru trysky a výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" -"Zadejte kladnou hodnotu, chcete-li nastavit manuálnÄ› šířku extruze pro výplň " -"plných povrchů. Pokud je ponechána nula, použije se standardní šířka " -"extruze, pokud je nastavena, jinak se použije průmÄ›r trysky 1,125 x. Pokud " -"je vyjádÅ™ena procenty (například 90%), bude vypoÄtena z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" -"Rychlost tisku plných oblastí (vrchní / spodní / vnitÅ™ní vodorovné stÄ›ny). " -"Může být vyjádÅ™eno procenty (například: 80%) oproti výchozí rychlosti " -"vyplnÄ›ní. Pro automatické nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:1789 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "PoÄet plných vstev generovaných na vrchních a spodních površích." - -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "Spiral vase" -msgstr "Spirálová váza" - -#: src/libslic3r/PrintConfig.cpp:1797 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"Tato funkce zvýší postupnÄ› Z pÅ™i tisku jednovrstvého objektu, aby se " -"odstranil jakýkoli viditelný Å¡ev. Tato volba vyžaduje jediný obvod, žádnou " -"výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále " -"nastavit libovolný poÄet spodních plných vrstev, stejnÄ› jako obrysové " -"smyÄky / límec. PÅ™i tisku více než jednoho objektu nebude toto nastavení " -"fungovat." - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "Temperature variation" -msgstr "Temperature variation" - -#: src/libslic3r/PrintConfig.cpp:1807 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" -"Teplotní rozdíl, který se použije v případÄ›, že extruder není aktivní. " -"Umožňuje “obÄ›tní†obrysy v plné výšce objektu, na kterém jsou trysky " -"periodicky oÄiÅ¡tÄ›ny." - -#: src/libslic3r/PrintConfig.cpp:1818 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Tento spouÅ¡tÄ›cí postup je vložen na zaÄátku, poté, co vyhřívaná tisková " -"podložka dosáhla cílové teploty a extruder se právÄ› zaÄal ohřívat a pÅ™edtím, " -"než dosáhl cílové teploty extruder . Pokud Slic3r detekuje M104 nebo M190 ve " -"vaÅ¡ich vlastních kódech, takové příkazy nebudou automaticky pÅ™edkládány, " -"takže máte možnost upravit poÅ™adí příkazů pro vytápÄ›ní a další vlastní akce. " -"Pro vÅ¡echny nastavení Slic3ru můžete použít zástupné promÄ›nné, takže můžete " -"zadat příkaz “M109 S [first_layer_temperature]†kdekoli chcete." - -#: src/libslic3r/PrintConfig.cpp:1834 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"Tento postup spuÅ¡tÄ›ní je vložen na zaÄátku, po každém spuÅ¡tÄ›ní G-code " -"tiskárny. Toto slouží k pÅ™epsání nastavení pro konkrétní filament. Pokud " -"Slic3r detekuje M104, M109, M140 nebo M190 ve vaÅ¡ich vlastních kódech, " -"takové příkazy nebudou automaticky pÅ™edkládány, takže máte možnost " -"pÅ™izpůsobit poÅ™adí příkazů k ohÅ™evu a další vlastní akce. Pro vÅ¡echny " -"nastavení Slic3ru můžete použít zástupné promÄ›nné, takže můžete zadat příkaz " -"“M109 S [first_layer_temperature]†kdekoli chcete. Pokud máte více " -"extruderů, G-code se zpracovává v poÅ™adí extruderů." - -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Single Extruder Multi Material" -msgstr "MultiMaterial tisk s jedním extrudérem" - -#: src/libslic3r/PrintConfig.cpp:1851 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "Tiskárna pÅ™epíná nÄ›kolik filamentů v jednou hot endu." - -#: src/libslic3r/PrintConfig.cpp:1857 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1858 -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1864 -msgid "Generate support material" -msgstr "Generovat podpory" - -#: src/libslic3r/PrintConfig.cpp:1866 -msgid "Enable support material generation." -msgstr "Zapne generování podpor." - -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1873 -msgid "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1880 -msgid "XY separation between an object and its support" -msgstr "XY vzdálenost mezi objektem a podporami" - -#: src/libslic3r/PrintConfig.cpp:1882 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" -"XY vzdálenost mezi objektem a podporami. Pokud je vyjádÅ™eno procenty " -"(například 50%), bude vypoÄítána z šířky perimetru." - -#: src/libslic3r/PrintConfig.cpp:1893 -msgid "Pattern angle" -msgstr "Úhel vzoru" - -#: src/libslic3r/PrintConfig.cpp:1895 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "Toto nastavení použijte pro horizontální otoÄení vzoru." - -#: src/libslic3r/PrintConfig.cpp:1906 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "" -"Podpory vytvářet pouze v případÄ›, že leží na tiskové podložce. Nevytváří " -"podpory na výtisky." - -#: src/libslic3r/PrintConfig.cpp:1913 -msgid "Contact Z distance" -msgstr "Mezera mezi podporami a objektem v ose Z" - -#: src/libslic3r/PrintConfig.cpp:1915 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"Vertikální vzdálenost mezi objektem a podporami. Nastavením tohoto parametru " -"na hodnotu 0 se také zabrání tomu, aby Slic3r použil parametry průtoku a " -"rychlosti pro mosty pÅ™i tisku první vrstvy objektu." - -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1929 -msgid "Enforce support for the first" -msgstr "Zesílit podpory pro prvních" - -#: src/libslic3r/PrintConfig.cpp:1931 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"Vygeneruje podpory pro zadaný poÄet vrstev poÄítaných od spodního okraje, " -"bez ohledu na to, zda jsou povoleny standartní podpory nebo nikoliv a bez " -"ohledu na jakýkoli prah úhlu. To je užiteÄné pro získání vÄ›tší pÅ™ilnavosti " -"pÅ™edmÄ›tů s velmi tenkou nebo Å¡patnou stopou na tiskové podložce." - -#: src/libslic3r/PrintConfig.cpp:1937 -msgid "Enforce support for the first n layers" -msgstr "Vynucení podpor pro prvních n vrstev" - -#: src/libslic3r/PrintConfig.cpp:1943 -msgid "Support material/raft/skirt extruder" -msgstr "Extruder pro podpory/raft/obrys" - -#: src/libslic3r/PrintConfig.cpp:1945 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" -"Extruder, který se používá pÅ™i tisku podpor, raftu a obrysu (1+, 0 pro " -"použití aktuálního extruderu pro co nejménÄ› zmÄ›n nástroje)." - -#: src/libslic3r/PrintConfig.cpp:1955 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Zadejte kladnou hodnotu, chcete-li nastavit manuálnÄ› šířku extruze pro " -"podpory. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je " -"nastavena, jinak se použije průmÄ›r trysky. Pokud je vyjádÅ™ena procenty " -"(například 90%), bude vypoÄtena z výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:1964 -msgid "Interface loops" -msgstr "Kontaktní smyÄky" - -#: src/libslic3r/PrintConfig.cpp:1966 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Zakrýt smyÄkami horní kontaktní vrstvu podpor. Ve výchozím nastavení " -"zakázáno." - -#: src/libslic3r/PrintConfig.cpp:1972 -msgid "Support material/raft interface extruder" -msgstr "Extruder pro kontaktní podpory/raft" - -#: src/libslic3r/PrintConfig.cpp:1974 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" -"Extruder, který se použije pÅ™i tisku kontaktních vrstev podpor (1+, 0 pro " -"použití aktuálního extruderu, aby se minimalizovaly zmÄ›ny nástroje). To " -"ovlivňuje i raft." - -#: src/libslic3r/PrintConfig.cpp:1982 -msgid "Interface layers" -msgstr "Kontaktní vrstvy" - -#: src/libslic3r/PrintConfig.cpp:1984 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "PoÄet interface vrstev vložených mezi objekt (objekty) a podpory." - -#: src/libslic3r/PrintConfig.cpp:1992 -msgid "Interface pattern spacing" -msgstr "RozteÄ kontaktních vrstev" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "" -"RozteÄ linií kontaktních vrstev. Nastavte nulu pro získání plných " -"kontaktních vrstev." - -#: src/libslic3r/PrintConfig.cpp:2004 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"Rychlost tisku podpůrných interface vrstev. Pokud je vyjádÅ™en procentní " -"podíl (například 50%), vypoÄítá se podle rychlosti tisku podpor." - -#: src/libslic3r/PrintConfig.cpp:2013 -msgid "Pattern" -msgstr "Vzor" - -#: src/libslic3r/PrintConfig.cpp:2015 -msgid "Pattern used to generate support material." -msgstr "Vzor použitý pro generování podpor." - -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2028 -msgid "Pattern spacing" -msgstr "RozteÄ podpor" - -#: src/libslic3r/PrintConfig.cpp:2030 -msgid "Spacing between support material lines." -msgstr "RozteÄ linií podpor." - -#: src/libslic3r/PrintConfig.cpp:2040 -msgid "Speed for printing support material." -msgstr "Rychlost tisku podpor." - -#: src/libslic3r/PrintConfig.cpp:2047 -msgid "Synchronize with object layers" -msgstr "Synchronizovat s vrstvami objektu" - -#: src/libslic3r/PrintConfig.cpp:2049 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" -"Synchronizování vrstev podpor s vrstvami objektu. Toto je velmi užiteÄné u " -"multi-materiálových tiskáren, kde je pÅ™epínání extruderů drahé." - -#: src/libslic3r/PrintConfig.cpp:2056 -msgid "Overhang threshold" -msgstr "Mezní úhel pÅ™evisu" - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" -"Podpory nebudou vytvoÅ™eny pro pÅ™evisy, jejichž úhel sklonu (90° = " -"vertikální) je nad danou prahovou hodnotou. Jinými slovy, tato hodnota " -"pÅ™edstavuje nejvÄ›tší horizontální sklon (měřený od horizontální roviny), " -"který můžete tisknout bez podpůrného materiálu. Nastavte na nulu pro " -"automatickou detekci (doporuÄeno)." - -#: src/libslic3r/PrintConfig.cpp:2071 -msgid "With sheath around the support" -msgstr "S pouzdrem okolo podpor" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" -"PÅ™idá pouzdro (jednu obvodovou Äáru) kolem podpor. Díky tomu je podpora " -"spolehlivÄ›jší, ale také obtížnÄ›jší na odstranÄ›ní." - -#: src/libslic3r/PrintConfig.cpp:2081 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "" -"Teplota extruderu pro následující vrstvy po vrstvÄ› první. Nastavte tuto " -"hodnotu na nulu, abyste zakázali příkazy pro řízení teploty na výstupu." - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "Teplota" - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Detect thin walls" -msgstr "Detekovat tenké zdi" - -#: src/libslic3r/PrintConfig.cpp:2092 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"Detekuje stÄ›ny o tlošťce jedné Äáry (Äásti, kam se dvÄ› Äáry nemohou vejít a " -"je potÅ™eba slouÄit je do Äáry jedné)." - -#: src/libslic3r/PrintConfig.cpp:2099 -msgid "Threads" -msgstr "Vlákna" - -#: src/libslic3r/PrintConfig.cpp:2100 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "" -"Vlákna jsou používána pro paralelizaci ÄasovÄ› nároÄnÄ›jších úloh. Optimální " -"poÄet vláken je mírnÄ› nad poÄtem dostupných jader/procesorů." - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"Tento vlastní kód je vložen tÄ›snÄ› pÅ™ed každou zmÄ›nou extruderu. Můžete " -"použít zástupné promÄ›nné pro vÅ¡echna nastavení Slic3ru, stejnÄ› jako " -"[previous_extruder] a [next_extruder]." - -#: src/libslic3r/PrintConfig.cpp:2125 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" -"Zadejte kladnou hodnotu, chcete-li nastavit manuálnÄ› šířku extruze pro výplň " -"vrchních ploch. Možná budete chtít použít tenÄí extruzi, abyste vyplnili " -"vÅ¡echny úzké oblasti a získali hladší povrch. Pokud je ponechána nula, " -"použije se výchozí šířka extruze, pokud je nastavena, jinak se použije " -"průmÄ›r trysky. Pokud je vyjádÅ™ena procenty (například 90%), bude vypoÄtena z " -"výšky vrstvy." - -#: src/libslic3r/PrintConfig.cpp:2137 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" -"Rychlost tisku vrchních plných vrstev (vztahuje se pouze na nejvyšší horní " -"vrstvy a nikoli na jejich vnitÅ™ní plné vrstvy). Rychlost lze zpomalit, " -"abyste získali hezÄí povrchovou úpravu. Může být vyjádÅ™ena procenty " -"(například: 80%) z rychlosti plné výplnÄ› materiálu výše. Pro automatické " -"nastavení zadejte nulu." - -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Horních" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "Number of solid layers to generate on top surfaces." -msgstr "PoÄet vrchních generovaných plných vrstev." - -#: src/libslic3r/PrintConfig.cpp:2153 -msgid "Top solid layers" -msgstr "Vrchních plných vrstev" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "Rychlost posunů (pÅ™ejezdy mezi body extruze)." - -#: src/libslic3r/PrintConfig.cpp:2168 -msgid "Use firmware retraction" -msgstr "Použít retrakce z firmwaru" - -#: src/libslic3r/PrintConfig.cpp:2169 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware " -"poradil s retrakcí. Toto je podporováno pouze v posledních verzích firmwaru " -"Marlin." - -#: src/libslic3r/PrintConfig.cpp:2176 -msgid "Use relative E distances" -msgstr "Použít relativní E vzdálenosti" - -#: src/libslic3r/PrintConfig.cpp:2177 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "" -"Pokud váš firmware vyžaduje relativní hodnoty E, zaÅ¡krtnÄ›te toto, jinak " -"nechte nezaÅ¡krtnuté. VÄ›tÅ¡ina firmwarů používá absolutní hodnoty." - -#: src/libslic3r/PrintConfig.cpp:2184 -msgid "Use volumetric E" -msgstr "Použít volumetrickou hodnotu E" - -#: src/libslic3r/PrintConfig.cpp:2185 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"Toto experimentální nastavení používá výstupní hodnoty E v kubických " -"milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průmÄ›r " -"(průmÄ›ry) filamentu, můžete v poÄáteÄním G-code zadat příkazy jako “M200 D " -"[filament_diameter_0] T0â€, pro se zapnutí volumetrického režimu a použití " -"průmÄ›ru filamentu pÅ™idruženého k vybranému filamentu ve Slic3ru. Toto je " -"podporováno pouze v posledních verzích firmwaru Marlin." - -#: src/libslic3r/PrintConfig.cpp:2196 -msgid "Enable variable layer height feature" -msgstr "Zapnout variabilní výšku vrstev" - -#: src/libslic3r/PrintConfig.cpp:2197 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" -"NÄ›které tiskárny nebo nastavení tiskárny mohou mít potíže s tiskem s " -"promÄ›nnou výškou vrstvy. Ve výchozím nastavení je zapnuto." - -#: src/libslic3r/PrintConfig.cpp:2204 -msgid "Wipe while retracting" -msgstr "OÄistit pÅ™i retrakci" - -#: src/libslic3r/PrintConfig.cpp:2205 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "" -"Toto nastavení pÅ™emístí trysku pÅ™i retrakci, aby se minimalizovalo možné " -"vytékání materiálu." - -#: src/libslic3r/PrintConfig.cpp:2213 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" -"Multimateriálové tiskárny mohou potÅ™ebovat, aby pÅ™i výmÄ›nÄ› nástrojů " -"vyÄistili extrudery. VytlaÄí pÅ™ebyteÄný materiál do Äistící věže." - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Purging volumes - load/unload volumes" -msgstr "Objemy ÄiÅ¡tÄ›ní - zavádÄ›né / vyjmuté objemy" - -#: src/libslic3r/PrintConfig.cpp:2221 -msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " -msgstr "" -"Tento vektor ukládá potÅ™ebné objemy pro zmÄ›nu z/na každý extruder používaný " -"na Äistící veži. Tyto hodnoty jsou použity pro zjednoduÅ¡ení vytvoÅ™ení " -"celkových objemů ÄiÅ¡tÄ›ní níže. " - -#: src/libslic3r/PrintConfig.cpp:2228 -msgid "Purging volumes - matrix" -msgstr "Objemy ÄiÅ¡tÄ›ní - matice" - -#: src/libslic3r/PrintConfig.cpp:2229 -msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " -msgstr "" -"Tato matice popisuje objemy (v kubických milimetrech) nutné k vyÄiÅ¡tÄ›ní " -"nového filamentu na Äistící věži pro danou dvojici nástrojů. " - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Position X" -msgstr "Pozice X" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "X souÅ™adnice levého pÅ™edního rohu Äistící věže" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Position Y" -msgstr "Pozice Y" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Y souÅ™adnice levého pÅ™edního rohu Äistící věže" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Width of a wipe tower" -msgstr "Šířka Äistící věže" - -#: src/libslic3r/PrintConfig.cpp:2263 -msgid "Wipe tower rotation angle" -msgstr "Úhel natoÄení Äistící věže" - -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Úhel natoÄení Äistící věže s ohledem na osu X " - -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "stupňů" - -#: src/libslic3r/PrintConfig.cpp:2272 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2273 -msgid "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2281 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2289 -msgid "Maximal bridging distance" -msgstr "Maximální vzdálenost pÅ™emostÄ›ní" - -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Maximální vzdálenost mezi podporami u Äástí s řídkou výplní. " - -#: src/libslic3r/PrintConfig.cpp:2297 -msgid "XY Size Compensation" -msgstr "Kompenzace XY rozmÄ›rů" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"Objekt bude roztažen / smrÅ¡tÄ›n v rovinÄ› XY nastavenou hodnotou (negativní = " -"smÄ›rem dovnitÅ™, pozitivní = smÄ›rem ven). To může být užiteÄné pro jemné " -"doladÄ›ní otvorů." - -#: src/libslic3r/PrintConfig.cpp:2308 -msgid "Z offset" -msgstr "Odsazení Z" - -#: src/libslic3r/PrintConfig.cpp:2309 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"Tato hodnota bude pÅ™idána (nebo odeÄtena) ze vÅ¡ech souÅ™adnic Z ve výstupním " -"G-code. Používá se ke kompenzování Å¡patné pozice endstopu Z. Například pokud " -"endstop 0 skuteÄnÄ› ponechá trysku 0,3 mm daleko od tiskové podložky, " -"nastavte hodnotu -0,3 (nebo dolaÄte svůj koncový doraz)." - -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2380 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2381 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2387 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2389 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2396 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2402 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2410 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2411 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2489 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2494 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2496 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2512 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2514 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2521 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2523 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2530 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2531 -msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2540 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2542 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2546 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2548 -msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2557 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2559 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2566 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2568 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2575 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2577 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2584 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2586 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2593 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2595 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2631 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2636 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2645 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2654 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2663 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 -msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "Smíšený" +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:468 +msgid "Height" +msgstr "Výška" #: src/libslic3r/GCode/PreviewData.cpp:396 msgid "Height (mm)" msgstr "Výška (mm)" -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Šířka (mm)" +#: src/libslic3r/PrintConfig.cpp:1618 +msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." +msgstr "Výška obrysu vyjádÅ™ená ve vrstvách. Nastavte tuto hodnotu vysokou, pro použití obrysu jako stínÄ›ní proti průvanu." + +#: src/libslic3r/PrintConfig.cpp:2209 +msgid "Height of the display" +msgstr "Výška displeje" + +#: src/libslic3r/PrintConfig.cpp:225 +msgid "Heights at which a filament change is to occur. " +msgstr "Výšky, pÅ™i kterých má dojít ke zmÄ›nÄ› filamentu." + +#: src/slic3r/GUI/ConfigWizard.cpp:300 +#, possible-c-format +msgid "Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print." +msgstr "Zdravím, vítejte v %s! Tento %s vám pomůže se základní konfigurací; jen nÄ›kolik nastavení a budete pÅ™ipraveni k tisku." + +#: src/slic3r/GUI/ConfigWizard.cpp:290 +#, possible-c-format +msgid "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial configuration; just a few settings and you will be ready to print." +msgstr "Zdravím, vítejte ve Slic3r Prusa Edition! Tento %s vám pomůže se základní konfigurací; jen nÄ›kolik nastavení a budete pÅ™ipraveni k tisku." + +#: src/libslic3r/PrintConfig.cpp:2976 +msgid "Help" +msgstr "NápovÄ›da" + +#: src/libslic3r/PrintConfig.cpp:2982 +msgid "Help (FFF options)" +msgstr "NápovÄ›da (pro FFF)" + +#: src/libslic3r/PrintConfig.cpp:2987 +msgid "Help (SLA options)" +msgstr "NápovÄ›da (pro SLA)" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 +msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." +msgstr "Zde můžete upravit požadovaný objem ÄiÅ¡tÄ›ní (mm³) pro kteroukoliv dvojici extruderů." + +#: src/libslic3r/PrintConfig.cpp:925 +msgid "High extruder current on filament swap" +msgstr "Zvýšený proud do extruderového motoru pÅ™i výmÄ›nÄ› filamentu" + +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 +msgid "Hilbert Curve" +msgstr "Hilbertova kÅ™ivka" + +#: src/slic3r/GUI/Plater.cpp:873 +msgid "Hold Shift to Slice & Export G-code" +msgstr "Stiskni Shift pro Slicování & Export G-codu" + +#: src/libslic3r/PrintConfig.cpp:803 src/libslic3r/PrintConfig.cpp:1924 +msgid "Honeycomb" +msgstr "Plástev" + +#: src/slic3r/GUI/Tab.cpp:1013 +msgid "Horizontal shells" +msgstr "Vodorovné stÄ›ny" + +#: src/libslic3r/PrintConfig.cpp:209 +msgid "Horizontal width of the brim that will be printed around each object on the first layer." +msgstr "Šírka límce který bude vytiÅ¡tÄ›n v první vrstvÄ› okolo každého objektu." + +#: src/libslic3r/PrintConfig.cpp:1267 +msgid "Host Type" +msgstr "Typ tiskového serveru" + +#: src/slic3r/GUI/BonjourDialog.cpp:73 +msgid "Hostname" +msgstr "Název serveru" + +#: src/libslic3r/PrintConfig.cpp:81 +msgid "Hostname, IP or URL" +msgstr "Název serveru, IP nebo URL" + +#: src/slic3r/GUI/Tab.cpp:136 +msgid "Hover the cursor over buttons to find more information \nor click this button." +msgstr "Pro více informací pÅ™ejeÄte kurzorem nad tlaÄítky\nnebo na tlaÄítko kliknÄ›te." + +#: src/libslic3r/PrintConfig.cpp:2380 +msgid "How much the pinhead has to penetrate the model surface" +msgstr "Jak moc hrot podpÄ›ry pronikne do povrchu modelu" + +#: src/libslic3r/PrintConfig.cpp:2491 +msgid "How much the supports should lift up the supported object." +msgstr "O jakou vzdálenost mají podpÄ›ry zvednout objekt." + +#: src/libslic3r/PrintConfig.cpp:95 +msgid "HTTPS CA File" +msgstr "Soubor HTTPS CA" + +#: src/slic3r/GUI/Tab.cpp:1731 +msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." +msgstr "Soubor HTTPS CA je volitelný. Je nutný pouze pokud použijte HTTPS certifikát s vlastním podpisem." + +#: src/slic3r/GUI/Tab.cpp:1773 +#, possible-c-format +msgid "HTTPS CA File:\n \tOn this system, %s uses HTTPS certificates from the system Certificate Store or Keychain.\n \tTo use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Soubor HTTPS CA:\nV tomto systému používá %s certifikáty HTTPS ze systému Certificate Store nebo Keychain. Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate Store / Keychain." + +#: src/slic3r/GUI/Tab.cpp:1725 +msgid "HTTPS CA File:\n\tOn this system, Slic3r uses HTTPS certificates from the system Certificate Store or Keychain.\n\tTo use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Soubor HTTPS CA:\nV tomto systému používá Slic3r certifikáty HTTPS ze systému Certificate Store nebo Keychain. Chcete-li použít vlastní soubor CA, importujte soubor CA do Certificate Store / Keychain." + +#: src/libslic3r/PrintConfig.cpp:1787 +msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." +msgstr "Pokud je zaÅ¡krtnuto, budou podpÄ›ry generovány automaticky na základÄ› prahové hodnoty pÅ™evisu. Pokud není zaÅ¡krtnuto, bude podpÄ›ra generována pouze v místech, kde je umístÄ›n objekt pro \"Vynucení podpÄ›r\"." + +#: src/slic3r/GUI/ConfigWizard.cpp:413 +#, possible-c-format +msgid "If enabled, %s checks for new application versions online. When a new version becomes available, a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." +msgstr "Pokud je povoleno, kontroluje %s novÄ› dostupné verze. V případÄ›, že je nová verze k dispozici, zobrazí se notifikace pÅ™i dalším startu programu (nikdy bÄ›hem užívání aplikace). Tento systém slouží pouze pro upozornÄ›ní uživatele, nedochází k automatické instalaci." + +#: src/slic3r/GUI/ConfigWizard.cpp:423 +#, possible-c-format +msgid "If enabled, %s downloads updates of built-in system presets in the background.These updates are downloaded into a separate temporary location.When a new preset version becomes available it is offered at application startup." +msgstr "Pokud je povoleno, stáhne %s na pozadí aktualizace vestavÄ›ných systémových pÅ™ednastavení. Tyto aktualizace jsou staženy do doÄasného umístÄ›ní. Pokud je k dispozici nové pÅ™ednastavení, zobrazí se upozornÄ›ní pÅ™i startu programu." + +#: src/libslic3r/PrintConfig.cpp:1774 +msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." +msgstr "Pokud je tato možnost povolena, vÅ¡echny tiskové extrudery na zaÄátku tisku vytlaÄí na pÅ™edním okraji podložky malé množství materiálu." + +#: src/slic3r/GUI/Preferences.cpp:63 +msgid "If enabled, Slic3r checks for new versions of " +msgstr "Pokud je povoleno, Slic3r kontroluje dostupnost nové verze" + +#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 +msgid "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." +msgstr "Pokud je povoleno, kontroluje Slic3r novÄ› dostupné verze Slic3r PE. V případÄ›, že je nová verze k dispozici, zobrazí se notifikace pÅ™i dalším startu programu (nikdy bÄ›hem užívání aplikace). Tento systém slouží pouze pro upozornÄ›ní uživatele, nedochází k automatické instalaci." + +#: src/slic3r/GUI/Preferences.cpp:71 +msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." +msgstr "Pokud je povoleno, stáhne Slic3r na pozadí aktualizace vestavÄ›ných systémových pÅ™ednastavení. Tyto aktualizace jsou staženy do doÄasného umístÄ›ní. Pokud je k dispozici nové pÅ™ednastavení, zobrazí se upozornÄ›ní pÅ™i startu programu." + +#: src/slic3r/GUI/Preferences.cpp:105 +msgid "If enabled, the 3D scene will be rendered in Retina resolution. If you are experiencing 3D performance problems, disabling this option may help." +msgstr "Pokud je tato volba povolena, bude 3D scéna vykreslena v rozliÅ¡ení Retina. Pokud dochází k potížím s výkonem, zkuste tuto volbu vypnout." + +#: src/slic3r/GUI/PresetHints.cpp:28 +#, possible-c-format +msgid "If estimated layer time is below ~%ds, fan will run at %d%% and print speed will be reduced so that no less than %ds are spent on that layer (however, speed will never be reduced below %dmm/s)." +msgstr "Pokud je odhadovaný Äas vrstvy nižší než ~% ds, bude ventilátor pracovat na %d%% a rychlost tisku bude snížena tak, aby na tuto vrstvu nebylo použito ménÄ› než %ds (rychlost vÅ¡ak nikdy nebude snížena pod %dmm/s)." + +#: src/libslic3r/PrintConfig.cpp:853 +msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." +msgstr "Pokud je vyjádÅ™ena jako absolutní hodnota v mm / s, bude tato rychlost použita pro vÅ¡echny pohyby tisku první vrstvy bez ohledu na jejich typ. Pokud je hodnota vyjádÅ™ena procenty (například: 40%), zmÄ›ní v závislosti na výchozích rychlostech." + +#: src/libslic3r/PrintConfig.cpp:540 +msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." +msgstr "Pokud je doba tisku vrstvy odhadnuta jako kratší než tato nastavená hodnota ve vteÅ™inách, ventilátor bude aktivován a jeho rychlost bude vypoÄtena interpolací minimální a maximální rychlosti." + +#: src/libslic3r/PrintConfig.cpp:1636 +msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." +msgstr "Pokud je doba tisku vrstvy odhadnuta kratší než tento poÄet sekund, rychlost tisku se zpomalí, aby se prodloužila doba tisku této vrstvy." + +#: src/libslic3r/PrintConfig.cpp:534 +msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." +msgstr "Pokud je tato funkce zapnutá, ventilátor nebude nikdy vypnut a bude udržován v chodu alespoň rychlostí která je nastavena jako minimální rychlost. UžiteÄné pro PLA, Å¡kodlivé pro ABS." + +#: src/slic3r/GUI/Preferences.cpp:46 +msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." +msgstr "Pokud je tato možnost povolena, Slic3r bude automaticky centrovat objekty kolem stÅ™edu tiskové plochy." + +#: src/slic3r/GUI/Preferences.cpp:54 +msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." +msgstr "Pokud je tato možnost povolena, Slic3r pÅ™edprojektuje objekty, jakmile budou naÄteny, aby Å¡etÅ™il Äas pÅ™i exportu G-code." + +#: src/slic3r/GUI/Preferences.cpp:38 +msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." +msgstr "Pokud je tato volba povolena, Slic3r vyvolá poslední výstupní adresář namísto toho, který obsahuje vstupní soubory." + +#: src/slic3r/GUI/Preferences.cpp:95 +msgid "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may try to check this checkbox. This will disable the layer height editing and anti aliasing, so it is likely better to upgrade your graphics driver." +msgstr "Pokud máte problémy s vykreslováním způsobené chybným ovladaÄem OpenGL 2.0, můžete se pokusit zaÅ¡krtnout toto políÄko. Tím se vypnou úpravy výšky hladiny a vyhlazení, takže je lepší upgradovat grafický ovladaÄ." + +#: src/libslic3r/PrintConfig.cpp:1492 +msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." +msgstr "Zadáním kladné hodnoty, se Z rychle pÅ™izvedne pÅ™i každém vyvolání retrakce. PÅ™i použití více extruderů bude použito pouze nastavení pro první extruder." + +#: src/libslic3r/PrintConfig.cpp:1501 +msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." +msgstr "Zadáním kladné hodnoty se zdvih Z uskuteÄní pouze nad zadanou absolutní hodnotou Z. Toto nastavení můžete zvolit pro pÅ™eskoÄení pÅ™izvednutí u prvních vrstev." + +#: src/libslic3r/PrintConfig.cpp:1510 +msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." +msgstr "Zadáním kladné hodnoty se zdvih Z uskuteÄní pouze pod zadanou absolutní hodnotou Z. Toto nastavení můžete zvolit pro pÅ™eskoÄení pÅ™izvednutí u prvních vrstev." + +#: src/libslic3r/PrintConfig.cpp:1384 +msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." +msgstr "Pokud chcete zpracovat výstupní G-code pomocí vlastních skriptů, staÄí zde uvést jejich absolutní cesty. OddÄ›lte více skriptů stÅ™edníkem. Skripty pÅ™edají absolutní cestu k souboru G-code jako první argument a mohou pÅ™istupovat k nastavení konfigurace Slic3ru Ätením promÄ›nných prostÅ™edí." + +#: src/libslic3r/PrintConfig.cpp:498 +msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." +msgstr "Pokud firmware nezpracovává umístÄ›ní extruderu správnÄ›, potÅ™ebujete aby to vzal G-code v úvahu. Toto nastavení umožňuje urÄit odsazení každého extruderu vzhledem k prvnímu. OÄekávají se pozitivní souÅ™adnice (budou odeÄteny od souÅ™adnice XY)." + +#: src/libslic3r/PrintConfig.cpp:2068 +msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." +msgstr "Pokud váš firmware vyžaduje relativní hodnoty E, zaÅ¡krtnÄ›te toto, jinak nechte nezaÅ¡krtnuté. VÄ›tÅ¡ina firmwarů používá absolutní hodnoty." + +#: src/libslic3r/PrintConfig.cpp:3096 +msgid "Ignore non-existent config files" +msgstr "Ignorovat neexistující konfiguraÄní soubory" + +#: src/slic3r/GUI/MainFrame.cpp:352 +msgid "Import &Config" +msgstr "Importovat Konfigura&ci" + +#: src/slic3r/GUI/MainFrame.cpp:357 +msgid "Import Config &Bundle" +msgstr "Importovat KonfiguraÄní &Balík" + +#: src/slic3r/GUI/MainFrame.cpp:354 +msgid "Import Config from &project" +msgstr "NaÄíst konfiguraci z &projektu" + +#: src/slic3r/Utils/FixModelByWin10.cpp:383 +msgid "Import of the repaired 3mf file failed" +msgstr "Import opraveného 3MF souboru selhal" + +#: src/slic3r/GUI/MainFrame.cpp:349 +msgid "Import STL/OBJ/AM&F/3MF" +msgstr "Importovat STL/OBJ/AM&F/3MF" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 +msgid "Import STL/OBJ/AMF/3MF without config, keep bed" +msgstr "Nahrát soubor STL/OBJ/AMF/3MF bez konfigurace (zachová stávající tiskovou plochu)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2416 +#, possible-c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "V tomto režimu můžete vybrat pouze jinou/jiný %s %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:132 +msgid "Incompatible bundles:" +msgstr "Nekompatibilní balíky:" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70 +#, possible-c-format +msgid "Incompatible with this %s" +msgstr "Nekompatibilní s tímto %s" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 +msgid "Incompatible with this Slic3r" +msgstr "Nekompatibilní s tímto Slic3rem" + +#: src/slic3r/GUI/Plater.cpp:2813 src/slic3r/GUI/Plater.cpp:2825 +#: src/slic3r/GUI/Plater.cpp:2897 +msgid "Increase copies" +msgstr "PÅ™idat kopie" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/GUI_ObjectList.cpp:510 src/slic3r/GUI/Plater.cpp:439 +#: src/slic3r/GUI/Tab.cpp:1030 src/slic3r/GUI/Tab.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:167 +#: src/libslic3r/PrintConfig.cpp:389 src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:743 src/libslic3r/PrintConfig.cpp:780 +#: src/libslic3r/PrintConfig.cpp:933 src/libslic3r/PrintConfig.cpp:943 +#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:979 +#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1659 +#: src/libslic3r/PrintConfig.cpp:1676 +msgid "Infill" +msgstr "Výplň" + +#: src/slic3r/GUI/PresetHints.cpp:171 +msgid "infill" +msgstr "výplň" + +#: src/libslic3r/PrintConfig.cpp:972 +msgid "Infill before perimeters" +msgstr "Tisknout výplň pÅ™ed tiskem perimetrů" + +#: src/libslic3r/PrintConfig.cpp:953 +msgid "Infill extruder" +msgstr "Extruder pro výplň" + +#: src/libslic3r/PrintConfig.cpp:987 +msgid "Infill/perimeters overlap" +msgstr "PÅ™esah pro výplň/perimetry" + +#: src/libslic3r/Print.cpp:1476 +msgid "Infilling layers" +msgstr "Generování výplnÄ› vrstev" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2424 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2497 src/slic3r/GUI/Plater.cpp:118 +msgid "Info" +msgstr "Info" + +#: src/libslic3r/PrintConfig.cpp:1008 +msgid "Inherits profile" +msgstr "ZdÄ›dí profil" + +#: src/libslic3r/PrintConfig.cpp:2317 src/libslic3r/PrintConfig.cpp:2318 +msgid "Initial exposure time" +msgstr "Doba poÄáteÄního osvitu" + +#: src/libslic3r/PrintConfig.cpp:2295 src/libslic3r/PrintConfig.cpp:2296 +msgid "Initial layer height" +msgstr "Výška první vrstvy" + +#: src/slic3r/GUI/Field.cpp:155 +msgid "Input value is out of range" +msgstr "Zadaná hodnota je mimo rozsah" + +#: src/slic3r/GUI/GUI_App.cpp:661 +msgid "Inspect / activate configuration snapshots" +msgstr "Zkontrolovat / aktivovat zálohy konfigurace" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1887 +msgid "Instance manipulation" +msgstr "Manipulace s instancí objektu" + +#: src/slic3r/GUI/wxExtensions.cpp:358 +msgid "Instances" +msgstr "Instance" + +#: src/slic3r/GUI/wxExtensions.cpp:365 +#, possible-c-format +msgid "Instance_%d" +msgstr "Instance_%d" + +#: src/libslic3r/PrintConfig.cpp:1886 +msgid "Interface layers" +msgstr "Kontaktní vrstvy" + +#: src/libslic3r/PrintConfig.cpp:1870 +msgid "Interface loops" +msgstr "Kontaktní smyÄky" + +#: src/libslic3r/PrintConfig.cpp:1895 +msgid "Interface pattern spacing" +msgstr "RozteÄ kontaktních vrstev" + +#: src/libslic3r/PrintConfig.cpp:1022 +msgid "Interface shells" +msgstr "Mezilehlé stÄ›ny" + +#: src/libslic3r/Zipper.cpp:87 +msgid "internal error" +msgstr "interní chyba" + +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 +msgid "Internal infill" +msgstr "VnitÅ™ní výplň" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:120 +msgid "Invalid API key" +msgstr "Neplatný API klíÄ" + +#: src/slic3r/GUI/Plater.cpp:2397 +msgid "Invalid data" +msgstr "Neplatná data" + +#: src/libslic3r/Zipper.cpp:83 +msgid "invalid filename" +msgstr "neplatný název souboru" + +#: src/slic3r/GUI/Tab.cpp:3484 +msgid "Invalid Head penetration" +msgstr "Neplatný průnik podpÄ›ry do modelu" + +#: src/libslic3r/Zipper.cpp:51 +msgid "invalid header or archive is corrupted" +msgstr "neplatná hlaviÄka nebo je archiv poÅ¡kozen" + +#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/Field.cpp:173 +msgid "Invalid numeric input." +msgstr "Neplatný Äíselný vstup." + +#: src/libslic3r/Zipper.cpp:81 +msgid "invalid parameter" +msgstr "neplatný parametr" + +#: src/slic3r/GUI/Tab.cpp:3497 +msgid "Invalid pinhead diameter" +msgstr "Neplatný průmÄ›r hrotu" + +#: lib/Slic3r/GUI/Plater.pm:1042 +msgid "Invalid rotation angle entered" +msgstr "Zadán neplatný úhel natoÄení" + +#: lib/Slic3r/GUI/Plater.pm:1133 lib/Slic3r/GUI/Plater.pm:1137 +#: lib/Slic3r/GUI/Plater.pm:1158 lib/Slic3r/GUI/Plater.pm:1163 +msgid "Invalid scaling value entered" +msgstr "Zadána neplatná hodnota pro úpravu rozmÄ›ru" + +#: src/slic3r/GUI/Tab.cpp:2779 +msgid "is not compatible with print profile" +msgstr "není kompatibilní s tiskovým profilem" + +#: src/slic3r/GUI/Tab.cpp:2778 +msgid "is not compatible with printer" +msgstr "není kompatibilní s tiskárnou" + +#: src/slic3r/GUI/MainFrame.cpp:519 +msgid "Iso" +msgstr "Izometrické" + +#: src/slic3r/GUI/MainFrame.cpp:519 +msgid "Iso View" +msgstr "Izometrické zobrazení" + +#: src/slic3r/GUI/Tab.cpp:914 +msgid "It can't be deleted or modified. " +msgstr "Nelze smazat nebo upravit. " + +#: src/libslic3r/PrintConfig.cpp:926 +msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." +msgstr "Může být užiteÄné zvýšit proud motoru extruderu bÄ›hem sekvence výmÄ›ny filamentu, aby se umožnily vysoké rychlosti zavádÄ›ní filamentu a aby se pÅ™ekonal odpor pÅ™i zavádÄ›ní filamentu s oÅ¡klivÄ› tvarovanou Å¡piÄkou." + +#: src/slic3r/GUI/Tab.cpp:907 +msgid "It's a default preset." +msgstr "Je to výchozí pÅ™ednastavení." + +#: src/slic3r/GUI/Tab.cpp:908 +msgid "It's a system preset." +msgstr "Jedná se o systémové pÅ™ednastavení." + +#: src/slic3r/GUI/GUI.cpp:142 src/slic3r/GUI/Tab.cpp:2796 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "SLA technologií nelze tisknout vícedílné objekty." + +#: src/slic3r/GUI/Tab.cpp:2177 +msgid "Jerk limits" +msgstr "Ryv limity" + +#: src/libslic3r/PrintConfig.cpp:1579 +msgid "Jitter" +msgstr "Rozkmit (Jitter)" + +#: src/libslic3r/PrintConfig.cpp:533 +msgid "Keep fan always on" +msgstr "Ventilátor vždy zapnutý" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 +msgid "Keep lower part" +msgstr "Zachovat spodní Äást" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 +msgid "Keep upper part" +msgstr "Zachovat horní Äást" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:566 +msgid "Keyboard Shortcuts" +msgstr "Klávesové zkratky" + +#: src/libslic3r/PrintConfig.cpp:917 +msgid "Label objects" +msgstr "OznaÄování objektů" + +#: src/libslic3r/PrintConfig.cpp:2234 +msgid "Landscape" +msgstr "Orientace na šířku" + +#: src/slic3r/GUI/GUI_App.cpp:524 +msgid "Language" +msgstr "Jazyk" + +#: lib/Slic3r/GUI/Plater.pm:265 +msgid "Layer Editing" +msgstr "Vyhlazení vrstev" + +#: lib/Slic3r/GUI/Plater.pm:280 +msgid "Layer editing" +msgstr "Vyhlazení vrstev" + +#: src/slic3r/GUI/Tab.cpp:998 src/libslic3r/PrintConfig.cpp:55 +msgid "Layer height" +msgstr "Výška vrstvy" + +#: src/libslic3r/Print.cpp:1332 +msgid "Layer height can't be greater than nozzle diameter" +msgstr "Výška vrstvy nemůže být vÄ›tší než je průmÄ›r trysky" + +#: src/slic3r/GUI/Tab.cpp:2260 +msgid "Layer height limits" +msgstr "Výškové limity vrstvy" + +#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:946 +#: src/libslic3r/PrintConfig.cpp:1435 src/libslic3r/PrintConfig.cpp:1620 +#: src/libslic3r/PrintConfig.cpp:1681 src/libslic3r/PrintConfig.cpp:1844 +#: src/libslic3r/PrintConfig.cpp:1889 +msgid "layers" +msgstr "vrstva(y)" + +#: src/slic3r/GUI/Tab.cpp:3302 src/slic3r/GUI/Tab.cpp:3393 +msgid "Layers" +msgstr "Vrstvy" + +#: src/slic3r/GUI/Tab.cpp:997 src/slic3r/GUI/Tab.cpp:3391 +msgid "Layers and perimeters" +msgstr "Vrstvy a perimetry" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68 +#: src/slic3r/GUI/GUI_ObjectList.cpp:509 src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:150 src/libslic3r/PrintConfig.cpp:381 +#: src/libslic3r/PrintConfig.cpp:438 src/libslic3r/PrintConfig.cpp:446 +#: src/libslic3r/PrintConfig.cpp:842 src/libslic3r/PrintConfig.cpp:1026 +#: src/libslic3r/PrintConfig.cpp:1305 src/libslic3r/PrintConfig.cpp:1371 +#: src/libslic3r/PrintConfig.cpp:1552 src/libslic3r/PrintConfig.cpp:1987 +#: src/libslic3r/PrintConfig.cpp:2044 +msgid "Layers and Perimeters" +msgstr "Vrstvy a perimetry" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:189 +msgid "Layers Slider Shortcuts" +msgstr "Posuvníky" + +#. TRN To be shown in Print Settings "Bottom solid layers" +#: rc/libslic3r/PrintConfig.cpp:149 +msgctxt "Layers" +msgid "Bottom" +msgstr "Spodní" + +#. TRN To be shown in Print Settings "Top solid layers" +#: src/libslic3r/PrintConfig.cpp:2043 +msgctxt "Layers" +msgid "Top" +msgstr "Vrchní" + +#: src/slic3r/GUI/MainFrame.cpp:527 +msgid "Left" +msgstr "Zleva" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 +msgid "Left mouse click - add point" +msgstr "Kliknutí levým tlaÄítkem myÅ¡i - pÅ™idání bodu" + +#: src/slic3r/GUI/MainFrame.cpp:527 +msgid "Left View" +msgstr "Pohled zleva" + +#: src/libslic3r/PrintConfig.cpp:1473 src/libslic3r/PrintConfig.cpp:1481 +msgid "Length" +msgstr "Vzdálenost" + +#: src/libslic3r/PrintConfig.cpp:292 +msgid "Length of the cooling tube to limit space for cooling moves inside it " +msgstr "Délka kovové trubiÄky urÄené pro ochlazení a zformování filamentu po vytažení z extruderu " + +#: src/libslic3r/PrintConfig.cpp:1491 +msgid "Lift Z" +msgstr "Zvednout Z" + +#: src/libslic3r/PrintConfig.cpp:801 +msgid "Line" +msgstr "Čára" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1050 +msgid "Load" +msgstr "NaÄíst" + +#: src/slic3r/GUI/MainFrame.cpp:349 +msgid "Load a model" +msgstr "NaÄíst model" + +#: src/libslic3r/PrintConfig.cpp:3116 +msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." +msgstr "NaÄtÄ›te a uložte nastavení z/do daného adresáře. To je užiteÄné pro udržování různých profilů nebo konfigurací ze síťového úložiÅ¡tÄ›." + +#: src/libslic3r/PrintConfig.cpp:3100 +msgid "Load config file" +msgstr "NaÄíst konfiguraÄní soubor" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 +msgid "Load Config from .ini/amf/3mf/gcode" +msgstr "NaÄíst konfiguraci z .ini/amf/3mf/gcode" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 +msgid "Load Config from .ini/amf/3mf/gcode and merge" +msgstr "NaÄíst konfiguraci z .ini/amf/3mf/gcode a slouÄit" + +#: src/slic3r/GUI/MainFrame.cpp:354 +msgid "Load configuration from project file" +msgstr "NaÄíst konfiguraci z projektu" + +#: src/libslic3r/PrintConfig.cpp:3101 +msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." +msgstr "NaÄíst konfiguraci ze zadaného souboru. Může být použito vícekrát než jednou pro naÄtení z více souborů." + +#: src/slic3r/GUI/MainFrame.cpp:352 +msgid "Load exported configuration file" +msgstr "NaÄíst exportovaný konfiguraÄní soubor" + +#: src/slic3r/GUI/MainFrame.cpp:357 +msgid "Load presets from a bundle" +msgstr "NaÄíst pÅ™ednastavení z balíku" + +#: src/slic3r/GUI/BedShapeDialog.cpp:97 +msgid "Load shape from STL..." +msgstr "NaÄíst tvar ze souboru STL…" + +#: lib/Slic3r/GUI/Plater.pm:779 +msgid "Loaded " +msgstr "NaÄteno " + +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 +msgid "loaded" +msgstr "zavádÄ›n" + +#: src/slic3r/GUI/Plater.cpp:1782 +msgid "Loaded" +msgstr "NaÄteno" + +#: src/slic3r/GUI/Plater.cpp:1590 +msgid "Loading" +msgstr "NaÄítání" + +#: src/slic3r/GUI/GUI_App.cpp:339 +msgid "Loading of a current presets" +msgstr "NaÄítání aktuálních pÅ™edvoleb" + +#: src/slic3r/GUI/GUI_App.cpp:407 +msgid "Loading of a mode view" +msgstr "NaÄítání režimu zobrazení" + +#: src/slic3r/GUI/GUI_App.cpp:399 +msgid "Loading of current presets" +msgstr "NaÄítání aktuálních pÅ™edvoleb" + +#: src/slic3r/Utils/FixModelByWin10.cpp:251 +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" +msgstr "NaÄítaní opraveného modelu" + +#: src/libslic3r/PrintConfig.cpp:575 +msgid "Loading speed" +msgstr "Rychlost zavádÄ›ní" + +#: src/libslic3r/PrintConfig.cpp:583 +msgid "Loading speed at the start" +msgstr "PoÄáteÄní rychlost zavádÄ›ní" + +#: lib/Slic3r/GUI/Plater.pm:713 +msgid "Loading…" +msgstr "NaÄítání…" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:851 +msgid "Lock supports under new islands" +msgstr "Ukotvi podpÄ›ry pod novými ostrůvky" + +#: src/slic3r/GUI/Tab.cpp:3103 +msgid "LOCKED LOCK icon indicates that the settings are the same as the system values for the current option group" +msgstr "Ikona ZAMKNUTÉHO ZÃMKU indikuje, že nastavení jsou stejná jako systémové hodnoty pro aktuální skupinu nastavení" + +#: src/slic3r/GUI/Tab.cpp:3119 +msgid "LOCKED LOCK icon indicates that the value is the same as the system value." +msgstr "Ikona ZAMKNUTÉHO ZÃMKU indikuje, že hodnota je shodná se systémovou hodnotou." + +#: src/slic3r/GUI/Tab.cpp:3064 +msgid "LOCKED LOCK;indicates that the settings are the same as the system values for the current option group" +msgstr "ZAMKNUTà ZÃMEK; indikuje, že nastavení jsou stejná jako systémové hodnoty pro aktuální skupinu nastavení" + +#: src/libslic3r/PrintConfig.cpp:3119 +msgid "Logging level" +msgstr "Úroveň logování" + +#: src/libslic3r/PrintConfig.cpp:1625 +msgid "Loops (minimum)" +msgstr "SmyÄek (minimálnÄ›)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:172 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:174 +msgid "Lower Layer" +msgstr "Nižší vrstva" + +#: src/slic3r/GUI/Tab.cpp:2136 src/slic3r/GUI/Tab.cpp:2209 +#: src/libslic3r/PrintConfig.cpp:1077 src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1097 src/libslic3r/PrintConfig.cpp:1110 +#: src/libslic3r/PrintConfig.cpp:1121 src/libslic3r/PrintConfig.cpp:1132 +#: src/libslic3r/PrintConfig.cpp:1143 +msgid "Machine limits" +msgstr "Limity stroje" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:129 +msgid "Main Shortcuts" +msgstr "Hlavní" + +#: src/slic3r/GUI/Plater.cpp:143 +msgid "Manifold" +msgstr "Model OK" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:908 +msgid "Manual editing" +msgstr "Manuální úprava" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 +msgid "Manual editing [M]" +msgstr "RuÄní úprava [M]" + +#: src/slic3r/GUI/MainFrame.cpp:604 +msgid "Mate&rial Settings Tab" +msgstr "Panel nastavení mate&riálu" + +#: src/slic3r/GUI/Tab.cpp:3300 +msgid "Material" +msgstr "Materiál" + +#: src/slic3r/GUI/Tab.hpp:391 +msgid "Material Settings" +msgstr "Nastavení materiálu" + +#: src/slic3r/GUI/Plater.cpp:140 +msgid "Materials" +msgstr "Materiálů" + +#: src/libslic3r/PrintConfig.cpp:1152 src/libslic3r/PrintConfig.cpp:1161 +msgid "Max" +msgstr "Maximum" + +#: src/libslic3r/PrintConfig.cpp:2470 +msgid "Max bridge length" +msgstr "Maximální délka mostu" + +#: src/libslic3r/PrintConfig.cpp:2546 +msgid "Max merge distance" +msgstr "Maximální vzdálenost pro slouÄení" + +#: src/libslic3r/PrintConfig.cpp:2479 +msgid "Max pillar linking distance" +msgstr "Max. vzdálenost propojení podpÄ›r" + +#: src/libslic3r/PrintConfig.cpp:64 +msgid "Max print height" +msgstr "Maximální výška tisku" + +#: src/libslic3r/PrintConfig.cpp:1172 +msgid "Max print speed" +msgstr "Maximální rychlost tisku" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 +msgid "max slic3r version" +msgstr "max verze slic3ru" + +#: src/libslic3r/PrintConfig.cpp:1203 +msgid "Max volumetric slope negative" +msgstr "Maximální negativní objemový sklon" + +#: src/libslic3r/PrintConfig.cpp:1192 +msgid "Max volumetric slope positive" +msgstr "Maximální pozitivní objemový sklon" + +#: src/libslic3r/PrintConfig.cpp:565 src/libslic3r/PrintConfig.cpp:1182 +msgid "Max volumetric speed" +msgstr "Maximální objemová rychlost" + +#: src/libslic3r/PrintConfig.cpp:2167 +msgid "Maximal bridging distance" +msgstr "Maximální vzdálenost pÅ™emostÄ›ní" + +#: src/libslic3r/PrintConfig.cpp:2168 +msgid "Maximal distance between supports on sparse infill sections. " +msgstr "Maximální vzdálenost mezi podpÄ›rami u Äástí s řídkou výplní. " + +#: src/libslic3r/PrintConfig.cpp:1086 +msgid "Maximum acceleration %1%" +msgstr "Maximální zrychlení %1%" + +#: src/libslic3r/PrintConfig.cpp:1088 +msgid "Maximum acceleration of the %1% axis" +msgstr "Maximální zrychlení osy %1%" + +#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +msgid "Maximum acceleration when extruding" +msgstr "Maximální zrychlení pÅ™i extruzi" + +#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +msgid "Maximum acceleration when retracting" +msgstr "Maximální zrychlení pÅ™i retrakci" + +#: src/slic3r/GUI/Tab.cpp:2170 +msgid "Maximum accelerations" +msgstr "Maximální zrychlení" + +#: src/libslic3r/PrintConfig.cpp:1076 +msgid "Maximum feedrate %1%" +msgstr "Maximální rychlost posuvu %1%" + +#: src/libslic3r/PrintConfig.cpp:1078 +msgid "Maximum feedrate of the %1% axis" +msgstr "Maximální rychlost posuvu osy %1%" + +#: src/slic3r/GUI/Tab.cpp:2165 +msgid "Maximum feedrates" +msgstr "Maximální rychlosti posuvu" + +#: src/libslic3r/PrintConfig.cpp:1096 +msgid "Maximum jerk %1%" +msgstr "Maximální ryv (jerk) %1%" + +#: src/libslic3r/PrintConfig.cpp:1098 +msgid "Maximum jerk of the %1% axis" +msgstr "Maximální ryv (jerk) osy %1%" + +#: src/libslic3r/PrintConfig.cpp:566 +msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." +msgstr "Maximální povolený objem průtoku pro tento filament. Omezuje maximální rychlost průtoku pro tisk až na minimální rychlost průtoku pro tisk a filament. Zadejte nulu pro nastavení bez omezení." + +#: src/libslic3r/PrintConfig.cpp:3053 +msgid "Merge" +msgstr "SlouÄit" + +#: src/libslic3r/PrintConfig.cpp:2432 +msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." +msgstr "SlouÄení mostů nebo podpÄ›r do jiných podpÄ›r může zvýšit polomÄ›r. Hodnota 0 znamená žádné zvýšení, hodnota 1 znamená maximální zvýšení." + +#: src/libslic3r/SLAPrint.cpp:71 +msgid "Merging slices and calculating statistics" +msgstr "SluÄování tiskových vrstev a výpoÄet statistik" + +#: src/slic3r/Utils/FixModelByWin10.cpp:248 +msgid "Mesh repair failed." +msgstr "Oprava meshe selhala." + +#: src/libslic3r/PrintConfig.cpp:3120 +msgid "Messages with severity lower or eqal to the loglevel will be printed out. 0:trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +msgstr "Zprávy se závažností nižší nebo rovnou úrovni logování budou vypsány. 0: trace, 1: debug, 2: info, 3: warning, 4: error, 5: fatal" + +#: src/libslic3r/PrintConfig.cpp:1215 src/libslic3r/PrintConfig.cpp:1224 +msgid "Min" +msgstr "Minimum" + +#: src/libslic3r/PrintConfig.cpp:1233 +msgid "Min print speed" +msgstr "Minimální rychlost tisku" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +msgid "min slic3r version" +msgstr "min verze slic3ru" + +#: src/libslic3r/PrintConfig.cpp:2507 +msgid "Minimal distance of the support points" +msgstr "Minimální vzdálenost podpÄ›rných bodů" + +#: src/libslic3r/PrintConfig.cpp:1241 +msgid "Minimal filament extrusion length" +msgstr "Minimální délka extruze filamentu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:877 +msgid "Minimal points distance: " +msgstr "Minimální vzdálenost bodů:" + +#: src/libslic3r/PrintConfig.cpp:635 +msgid "Minimal purge on wipe tower" +msgstr "Minimální vytlaÄený objem na Äistící věži" + +#: src/libslic3r/PrintConfig.cpp:1442 +msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." +msgstr "Minimální rozliÅ¡ení detailů, které se používají pro zjednoduÅ¡ení vstupního souboru pro urychlení slicovací úlohy a snížení využití pamÄ›ti. Modely s vysokým rozliÅ¡ením Äasto obsahují více detailů než tiskárny dokážou vykreslit. Nastavte na nulu, chcete-li zakázat jakékoli zjednoduÅ¡ení a použít vstup v plném rozliÅ¡ení." + +#: src/libslic3r/PrintConfig.cpp:1109 src/libslic3r/PrintConfig.cpp:1111 +msgid "Minimum feedrate when extruding" +msgstr "Minimální rychlosti posuvu bÄ›hem extruze" + +#: src/slic3r/GUI/Tab.cpp:2182 +msgid "Minimum feedrates" +msgstr "Minimální rychlosti posuvu" + +#: src/libslic3r/PrintConfig.cpp:1452 +msgid "Minimum travel after retraction" +msgstr "Minimální dráha extruderu po retrakci" + +#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +msgid "Minimum travel feedrate" +msgstr "Minimální rychlost pÅ™i pÅ™esunu" + +#: src/slic3r/GUI/Plater.cpp:2946 +msgid "Mirror" +msgstr "Zrcadlit" + +#: src/slic3r/GUI/Plater.cpp:2946 +msgid "Mirror the selected object" +msgstr "Zrcadlit vybraný objekt" + +#: src/slic3r/GUI/Plater.cpp:2939 +msgid "Mirror the selected object along the X axis" +msgstr "Zrcadlit rozmÄ›r vybraného objektu podél osy X" + +#: src/slic3r/GUI/Plater.cpp:2941 +msgid "Mirror the selected object along the Y axis" +msgstr "Zrcadlit rozmÄ›r vybraného objektu podél osy Y" + +#: src/slic3r/GUI/Plater.cpp:2943 +msgid "Mirror the selected object along the Z axis" +msgstr "Zrcadlit rozmÄ›r vybraného objektu podél osy Z" + +#: src/slic3r/Utils/OctoPrint.cpp:69 +#, possible-c-format +msgid "Mismatched type of print host: %s" +msgstr "Nesprávný typ tiskového serveru: % s" + +#: src/libslic3r/GCode/PreviewData.cpp:176 +msgid "Mixed" +msgstr "Smíšený" + +#: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118 +#: src/slic3r/GUI/ConfigWizard.cpp:561 src/slic3r/GUI/ConfigWizard.cpp:575 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 +#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 +#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:210 +#: src/libslic3r/PrintConfig.cpp:285 src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:343 src/libslic3r/PrintConfig.cpp:353 +#: src/libslic3r/PrintConfig.cpp:473 src/libslic3r/PrintConfig.cpp:484 +#: src/libslic3r/PrintConfig.cpp:502 src/libslic3r/PrintConfig.cpp:680 +#: src/libslic3r/PrintConfig.cpp:1166 src/libslic3r/PrintConfig.cpp:1227 +#: src/libslic3r/PrintConfig.cpp:1245 src/libslic3r/PrintConfig.cpp:1263 +#: src/libslic3r/PrintConfig.cpp:1315 src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1446 src/libslic3r/PrintConfig.cpp:1454 +#: src/libslic3r/PrintConfig.cpp:1495 src/libslic3r/PrintConfig.cpp:1503 +#: src/libslic3r/PrintConfig.cpp:1513 src/libslic3r/PrintConfig.cpp:1521 +#: src/libslic3r/PrintConfig.cpp:1529 src/libslic3r/PrintConfig.cpp:1612 +#: src/libslic3r/PrintConfig.cpp:1828 src/libslic3r/PrintConfig.cpp:1898 +#: src/libslic3r/PrintConfig.cpp:1932 src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2132 src/libslic3r/PrintConfig.cpp:2139 +#: src/libslic3r/PrintConfig.cpp:2169 src/libslic3r/PrintConfig.cpp:2179 +#: src/libslic3r/PrintConfig.cpp:2189 src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2372 src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2390 src/libslic3r/PrintConfig.cpp:2400 +#: src/libslic3r/PrintConfig.cpp:2444 src/libslic3r/PrintConfig.cpp:2454 +#: src/libslic3r/PrintConfig.cpp:2473 src/libslic3r/PrintConfig.cpp:2483 +#: src/libslic3r/PrintConfig.cpp:2492 src/libslic3r/PrintConfig.cpp:2510 +#: src/libslic3r/PrintConfig.cpp:2525 src/libslic3r/PrintConfig.cpp:2539 +#: src/libslic3r/PrintConfig.cpp:2552 src/libslic3r/PrintConfig.cpp:2562 +msgid "mm" +msgstr "mm" + +#: src/libslic3r/PrintConfig.cpp:1477 src/libslic3r/PrintConfig.cpp:1486 +msgid "mm (zero to disable)" +msgstr "mm (nula pro vypnutí)" + +#: src/libslic3r/PrintConfig.cpp:847 src/libslic3r/PrintConfig.cpp:992 +#: src/libslic3r/PrintConfig.cpp:1797 +msgid "mm or %" +msgstr "mm nebo %" + +#: src/libslic3r/PrintConfig.cpp:528 +msgid "mm or % (leave 0 for auto)" +msgstr "mm nebo % (pro automatické ponechte 0)" + +#: src/libslic3r/PrintConfig.cpp:420 src/libslic3r/PrintConfig.cpp:835 +#: src/libslic3r/PrintConfig.cpp:967 src/libslic3r/PrintConfig.cpp:1354 +#: src/libslic3r/PrintConfig.cpp:1692 src/libslic3r/PrintConfig.cpp:1865 +#: src/libslic3r/PrintConfig.cpp:2023 +msgid "mm or % (leave 0 for default)" +msgstr "mm nebo % (ponechte 0 jako výchozí)" + +#: src/libslic3r/PrintConfig.cpp:201 src/libslic3r/PrintConfig.cpp:577 +#: src/libslic3r/PrintConfig.cpp:585 src/libslic3r/PrintConfig.cpp:594 +#: src/libslic3r/PrintConfig.cpp:602 src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:648 src/libslic3r/PrintConfig.cpp:874 +#: src/libslic3r/PrintConfig.cpp:1001 src/libslic3r/PrintConfig.cpp:1079 +#: src/libslic3r/PrintConfig.cpp:1099 src/libslic3r/PrintConfig.cpp:1112 +#: src/libslic3r/PrintConfig.cpp:1123 src/libslic3r/PrintConfig.cpp:1176 +#: src/libslic3r/PrintConfig.cpp:1235 src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1537 src/libslic3r/PrintConfig.cpp:1546 +#: src/libslic3r/PrintConfig.cpp:1941 src/libslic3r/PrintConfig.cpp:2053 +msgid "mm/s" +msgstr "mm/s" + +#: src/libslic3r/PrintConfig.cpp:430 src/libslic3r/PrintConfig.cpp:856 +#: src/libslic3r/PrintConfig.cpp:1651 src/libslic3r/PrintConfig.cpp:1702 +#: src/libslic3r/PrintConfig.cpp:1908 src/libslic3r/PrintConfig.cpp:2035 +msgid "mm/s or %" +msgstr "mm/s nebo %" + +#: src/libslic3r/PrintConfig.cpp:160 src/libslic3r/PrintConfig.cpp:303 +#: src/libslic3r/PrintConfig.cpp:815 src/libslic3r/PrintConfig.cpp:936 +#: src/libslic3r/PrintConfig.cpp:1089 src/libslic3r/PrintConfig.cpp:1134 +#: src/libslic3r/PrintConfig.cpp:1145 src/libslic3r/PrintConfig.cpp:1334 +msgid "mm/s²" +msgstr "mm/s²" + +#: src/libslic3r/PrintConfig.cpp:1661 +msgid "mm²" +msgstr "mm²" + +#: src/libslic3r/PrintConfig.cpp:640 +msgid "mm³" +msgstr "mm³" + +#: src/libslic3r/PrintConfig.cpp:569 src/libslic3r/PrintConfig.cpp:1185 +msgid "mm³/s" +msgstr "mm³/s" + +#: src/libslic3r/PrintConfig.cpp:1197 src/libslic3r/PrintConfig.cpp:1208 +msgid "mm³/s²" +msgstr "mm³/s²" + +#: src/slic3r/GUI/GUI_App.cpp:681 +msgid "Mode" +msgstr "Režim" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "model" +msgstr "model" + +#: src/slic3r/Utils/FixModelByWin10.cpp:340 +msgid "Model fixing" +msgstr "Opravování modelu" + +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 +msgid "Model Repair by the Netfabb service" +msgstr "Oprava modelu službou Netfabb" + +#: src/slic3r/Utils/FixModelByWin10.cpp:406 +msgid "Model repair canceled" +msgstr "Oprava modelu byla zruÅ¡ena" + +#: src/slic3r/Utils/FixModelByWin10.cpp:426 +msgid "Model repair failed: \n" +msgstr "Oprava modelu selhala:\n" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 +msgid "Model repair finished" +msgstr "Oprava modelu byla dokonÄena" + +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +msgid "Model repaired successfully" +msgstr "Model byl úspěšnÄ› opraven" + +#: src/slic3r/GUI/Preset.cpp:207 +msgid "modified" +msgstr "upraveno" + +#: src/slic3r/GUI/Tab.cpp:1100 +msgid "Modifiers" +msgstr "Modifikátory" + +#: src/libslic3r/PrintConfig.cpp:719 +msgid "money/kg" +msgstr "korun/kg" + +#: lib/Slic3r/GUI/Plater.pm:255 +msgid "More" +msgstr "Více" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1238 +msgid "Move clipping plane" +msgstr "Posunout Å™ezovou rovinu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:183 +msgid "Move current slider thumb Down" +msgstr "Posunout aktivní posuvník dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Move current slider thumb Up" +msgstr "Posunout aktivní posuvník nahoru" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Move current slider thump Down" +msgstr "Posunout aktivní posuvník dolů" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +msgid "Move current slider thump Up" +msgstr "Posunout aktivní posuvník nahoru" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1231 +msgid "Move point" +msgstr "Posunout bod" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 +msgid "Move [M]" +msgstr "PÅ™esunout [M]" + +#: src/libslic3r/PrintConfig.cpp:2100 +msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." +msgstr "Multimateriálové tiskárny mohou potÅ™ebovat, aby pÅ™i výmÄ›nÄ› nástrojů vyÄistili extrudery. VytlaÄí pÅ™ebyteÄný materiál do Äistící věže." + +#: src/slic3r/GUI/Plater.cpp:1661 src/slic3r/GUI/Plater.cpp:1769 +msgid "Multi-part object detected" +msgstr "Detekován objekt obsahující více Äástí" + +#: src/slic3r/GUI/FirmwareDialog.cpp:400 src/slic3r/GUI/FirmwareDialog.cpp:436 +#, possible-c-format +msgid "Multiple %s devices found. Please only connect one at a time for flashing." +msgstr "Bylo nalezeno více zařízení %s . BÄ›hem flashování mÄ›jte pÅ™ipojené pouze jedno." + +#: src/slic3r/GUI/Tab.cpp:1118 +msgid "Multiple Extruders" +msgstr "Více Extruderů" + +#: src/slic3r/GUI/Plater.cpp:1766 +msgid "Multiple objects were loaded for a multi-material printer.\nInstead of considering them as multiple objects, should I consider\nthese files to represent a single object having multiple parts?\n" +msgstr "Bylo nahráno více objektů pro multi materiálovou tiskárnu.\nMají být vloženy jako jeden objekt obsahující více Äástí, \nnamísto vložení nÄ›kolika objektů?\n" + +#: src/libslic3r/PrintConfig.cpp:3050 +msgid "Multiply copies by creating a grid." +msgstr "Vynásobí kopie vytvoÅ™ením mřížky." + +#: src/libslic3r/PrintConfig.cpp:3045 +msgid "Multiply copies by this factor." +msgstr "Vynásobí kopie tímto Äíslem." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:176 +msgid "Name" +msgstr "Název" + +#: src/libslic3r/PrintConfig.cpp:1418 +msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." +msgstr "Název varianty tiskárny. Varianty tiskárny mohou být například rozliÅ¡eny podle průmÄ›ru trysky." + +#: src/libslic3r/PrintConfig.cpp:1412 +msgid "Name of the printer vendor." +msgstr "Název prodejce tiskárny." + +#: src/libslic3r/PrintConfig.cpp:1009 +msgid "Name of the profile, from which this profile inherits." +msgstr "Název profilu, ze kterého tento profil zdÄ›dí." + +#: src/libslic3r/PrintConfig.cpp:1560 +msgid "Nearest" +msgstr "Nejbližší" + +#: src/slic3r/GUI/BonjourDialog.cpp:55 +msgid "Network lookup" +msgstr "Hledání v síti" + +#: src/slic3r/GUI/UpdateDialogs.cpp:30 +#, possible-c-format +msgid "New version of %s is available" +msgstr "Je dostupná nová verze %s" + +#: src/slic3r/GUI/UpdateDialogs.cpp:29 +msgid "New version of Slic3r PE is available" +msgstr "Je dostupná nová verze Slic3r PE" + +#: src/slic3r/GUI/UpdateDialogs.cpp:47 +msgid "New version:" +msgstr "Nová verze:" + +#: src/libslic3r/PrintConfig.cpp:912 +msgid "No extrusion" +msgstr "Žádná extruze" + +#: src/slic3r/GUI/MainFrame.cpp:635 +msgid "No previously sliced file." +msgstr "Žádné dříve slicované soubory." + +#: src/slic3r/GUI/RammingChart.cpp:23 +msgid "NO RAMMING AT ALL" +msgstr "ŽÃDNà RAPIDNà EXTRUZE" + +#: src/libslic3r/PrintConfig.cpp:2509 +msgid "No support points will be placed closer than this threshold." +msgstr "Žádné podpůrné body nebudou umístÄ›ny blíže než je tento práh." + +#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:422 +#: src/libslic3r/GCode/PreviewData.cpp:162 +msgid "None" +msgstr "Žádné" + +#: src/slic3r/GUI/Plater.cpp:1073 +msgid "normal mode" +msgstr "normální režim" + +#: src/libslic3r/Zipper.cpp:49 +msgid "not a ZIP archive" +msgstr "není ZIP archiv" + +#: src/slic3r/Utils/OctoPrint.cpp:90 +msgid "Note: OctoPrint version at least 1.1.0 is required." +msgstr "Poznámka: Je vyžadován OctoPrint ve verzi alespoň 1.1.0." + +#: src/slic3r/GUI/Tab.cpp:1193 src/slic3r/GUI/Tab.cpp:1194 +#: src/slic3r/GUI/Tab.cpp:1576 src/slic3r/GUI/Tab.cpp:1577 +#: src/slic3r/GUI/Tab.cpp:1985 src/slic3r/GUI/Tab.cpp:1986 +#: src/slic3r/GUI/Tab.cpp:2079 src/slic3r/GUI/Tab.cpp:2080 +#: src/slic3r/GUI/Tab.cpp:3328 src/slic3r/GUI/Tab.cpp:3329 +msgid "Notes" +msgstr "Poznámky" + +#: src/slic3r/GUI/GUI.cpp:277 +msgid "Notice" +msgstr "Oznámení" + +#: src/slic3r/GUI/ConfigWizard.cpp:118 +msgid "nozzle" +msgstr "tryska" + +#: src/libslic3r/PrintConfig.cpp:1261 +msgid "Nozzle diameter" +msgstr "PrůmÄ›r trysky" + +#: src/slic3r/GUI/ConfigWizard.cpp:560 +msgid "Nozzle Diameter:" +msgstr "PrůmÄ›r trysky:" + +#: src/libslic3r/PrintConfig.cpp:618 +msgid "Number of cooling moves" +msgstr "PoÄet chladících pohybů" + +#: src/slic3r/GUI/Tab.cpp:1845 +msgid "Number of extruders of the printer." +msgstr "PoÄet extrudérů tiskárny." + +#: src/libslic3r/PrintConfig.cpp:1888 +msgid "Number of interface layers to insert between the object(s) and support material." +msgstr "PoÄet interface vrstev vložených mezi objekt (objekty) a podpÄ›ry." + +#: src/libslic3r/PrintConfig.cpp:1627 +msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." +msgstr "PoÄet obrysových smyÄek. Je-li nastavena možnost Minimální délka extruze, poÄet obrysových smyÄek může být vÄ›tší než poÄet zde nakonfigurovaných. Nastavte tuto hodnotu na nulu, pro úplné deaktivování." + +#: src/libslic3r/PrintConfig.cpp:2214 +msgid "Number of pixels in" +msgstr "PoÄet pixelů v ose" + +#: src/libslic3r/PrintConfig.cpp:2216 +msgid "Number of pixels in X" +msgstr "PoÄet pixelů v ose X" + +#: src/libslic3r/PrintConfig.cpp:2222 +msgid "Number of pixels in Y" +msgstr "PoÄet pixelů v ose Y" + +#: src/libslic3r/PrintConfig.cpp:151 +msgid "Number of solid layers to generate on bottom surfaces." +msgstr "PoÄet plných vrstev." + +#: src/libslic3r/PrintConfig.cpp:1711 +msgid "Number of solid layers to generate on top and bottom surfaces." +msgstr "PoÄet plných vrstev generovaných na vrchních a spodních površích." + +#: src/libslic3r/PrintConfig.cpp:2045 +msgid "Number of solid layers to generate on top surfaces." +msgstr "PoÄet vrchních generovaných plných vrstev." + +#: src/libslic3r/PrintConfig.cpp:2303 +msgid "Number of the layers needed for the exposure time fade from initial exposure time to the exposure time" +msgstr "PoÄet vrstev potÅ™ebných pro pÅ™echod z poÄáteÄní doby osvitu na dobu osvitu." + +#: src/slic3r/GUI/Plater.cpp:218 +msgid "Number of tool changes" +msgstr "PoÄet zmÄ›n nástroje" + +#: src/libslic3r/PrintConfig.cpp:2489 +msgid "Object elevation" +msgstr "Nadzvednutí objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1858 +msgid "Object manipulation" +msgstr "Manipulace s objektem" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:27 +msgid "Object Manipulation" +msgstr "Manipulace s objektem" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:78 +msgid "Object name" +msgstr "Jméno objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +msgid "Object or Instance" +msgstr "Objekt nebo Instanci" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1868 +msgid "Object Settings to modify" +msgstr "ZmÄ›na nastavení objektu" + +#: src/slic3r/GUI/Plater.cpp:1875 +msgid "Object too large?" +msgstr "Objekt moc velký?" + +#: src/libslic3r/PrintConfig.cpp:2161 +msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." +msgstr "Objekty budou použity k vyÄiÅ¡tÄ›ní barvy filamentu v trysce po zmÄ›nÄ› extruderu, aby se uÅ¡etÅ™il materiál, který by jinak skonÄil v Äistící věži. Výsledkem budou objekty s náhodnÄ› mixovanými barvami." + +#: src/slic3r/GUI/Plater.cpp:1018 +msgid "object(s)" +msgstr "objekt(y)" + +#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 +msgid "objects" +msgstr "objekty" + +#: xs/src/libslic3r/PrintConfig.cpp:2006 +msgid "Objects will be used to wipe the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." +msgstr "Objekty budou použity k vyÄiÅ¡tÄ›ní barvy filamentu v trysce po zmÄ›nÄ› extruderu, aby se uÅ¡etÅ™il materiál, který by jinak skonÄil v Äistící věži. Výsledkem budou objekty s náhodnÄ› mixovanými barvami." + +#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:808 +msgid "Octagram Spiral" +msgstr "Octagram Spiral" + +#: xs/src/slic3r/GUI/Tab.cpp:1520 xs/src/slic3r/Utils/OctoPrint.cpp:110 +msgid "OctoPrint upload" +msgstr "OctoPrint nahrávání" + +#: lib/Slic3r/GUI/Plater.pm:1576 +msgid "OctoPrint upload finished." +msgstr "Nahrávání do OctoPrintu dokonÄeno." + +#: src/slic3r/GUI/BonjourDialog.cpp:76 +msgid "OctoPrint version" +msgstr "Verze OctoPrintu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2419 +msgid "of a current Object" +msgstr "souÄasného Objektu" + +#: src/libslic3r/Print.cpp:1285 +msgid "One or more object were assigned an extruder that the printer does not have." +msgstr "Jeden nebo více objektů bylo pÅ™iÅ™azeno extruderu, který tiskárna nemá." + +#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:2425 +msgid "Only create support if it lies on a build plate. Don't create support on a print." +msgstr "PodpÄ›ry vytvářet pouze v případÄ›, že leží na tiskové podložce. Nevytváří podpÄ›ry na výtisky." + +#: src/libslic3r/PrintConfig.cpp:978 +msgid "Only infill where needed" +msgstr "Výplň pouze kde je potÅ™eba" + +#: src/slic3r/GUI/Tab.cpp:2271 +msgid "Only lift Z" +msgstr "Pouze zvednout Z" + +#: src/libslic3r/PrintConfig.cpp:1500 +msgid "Only lift Z above" +msgstr "Zvednout Z pouze nad" + +#: src/libslic3r/PrintConfig.cpp:1509 +msgid "Only lift Z below" +msgstr "Zvednout Z pouze pod" + +#: src/libslic3r/PrintConfig.cpp:1279 +msgid "Only retract when crossing perimeters" +msgstr "Provést retrakci pouze pÅ™i pÅ™ejíždÄ›ní perimetrů" + +#: src/slic3r/GUI/Tab.cpp:1126 +msgid "Ooze prevention" +msgstr "Prevence odkapávání" + +#: lib/Slic3r/GUI/MainFrame.pm:215 +msgid "Open a model" +msgstr "Otevřít model" + +#: src/slic3r/GUI/MainFrame.cpp:339 +msgid "Open a project file" +msgstr "Otevřít soubor s projektem" + +#: src/slic3r/GUI/Tab.cpp:1745 +msgid "Open CA certificate file" +msgstr "Otevřít soubor s certifikátem CA" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 +msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" +msgstr "Otevřít soubor STL/OBJ/AMF/3MF s konfigurací (smaže tiskovou plochu)" + +#: lib/Slic3r/GUI/MainFrame.pm:215 +msgid "Open STL/OBJ/AMF/3MF…\tCtrl+O" +msgstr "Otevřít STL/OBJ/AMF/3MF… Ctrl+O" + +#: src/slic3r/GUI/MainFrame.cpp:554 +#, possible-c-format +msgid "Open the %s manual in your browser" +msgstr "Otevřít návod k %s v prohlížeÄi" + +#: src/slic3r/GUI/MainFrame.cpp:551 +#, possible-c-format +msgid "Open the %s website in your browser" +msgstr "Otevřít webovou stránku %s v prohlížeÄi" + +#: lib/Slic3r/GUI/Plater.pm:2296 +msgid "Open the 3D cutting tool" +msgstr "OtevÅ™ete nástroj 3D Å™ezání" + +#: lib/Slic3r/GUI/Plater.pm:2300 +msgid "Open the object editor dialog" +msgstr "OtevÅ™e dialogové okno editoru objektů" + +#: src/slic3r/GUI/MainFrame.cpp:544 +msgid "Open the Prusa Edition releases page in your browser" +msgstr "Otevřít stránku vydání Prusa Edice ve vaÅ¡em prohlížeÄi" + +#: src/slic3r/GUI/MainFrame.cpp:542 +msgid "Open the Prusa3D drivers download page in your browser" +msgstr "Otevřít stránku pro stahování Prusa 3D ovladaÄů ve vaÅ¡em prohlížeÄi" + +#: src/slic3r/GUI/MainFrame.cpp:470 +msgid "Open the Slic3r manual in your browser" +msgstr "Otevřít Slic3r návod ve vaÅ¡em prohlížeÄi" + +#: src/slic3r/GUI/MainFrame.cpp:468 +msgid "Open the Slic3r website in your browser" +msgstr "Otevřít webovou stránku Slic3ru ve vaÅ¡em prohlížeÄi" + +#: src/slic3r/GUI/Plater.cpp:2994 +msgid "Optimize orientation" +msgstr "Optimalizovat orientaci" + +#: src/slic3r/GUI/Plater.cpp:2994 +msgid "Optimize the rotation of the object for better print results." +msgstr "Optimalizujte rotaci objektu pro lepší výsledky tisku." + +#: src/libslic3r/PrintConfig.cpp:112 +msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." +msgstr "Optimalizovat rychloposuny do poÅ™adí aby se minimalizovalo pÅ™ejíždÄ›ní perimetrů. Nejvíce užiteÄné u Bowdenových extruderů které trpí na vytékání filamentu. Toto nastavení zpomaluje tisk i generování G-code." + +#: src/slic3r/GUI/Tab.cpp:1070 +msgid "Options for support material and raft" +msgstr "Volby pro podpÄ›ry a raft" + +#: src/slic3r/GUI/Plater.cpp:2251 +msgid "Orientation found." +msgstr "Orientace nalezena." + +#: src/slic3r/GUI/Plater.cpp:2185 +msgid "Orientation search canceled" +msgstr "Hledávání optimální orientace bylo zruÅ¡eno" + +#: src/slic3r/GUI/BedShapeDialog.cpp:79 +msgid "Origin" +msgstr "PoÄátek" + +#: src/slic3r/GUI/Tab.cpp:1165 +msgid "Other" +msgstr "Ostatní" + +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1977 +msgid "Other layers" +msgstr "Ostatní vrstvy" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:252 +msgid "Other vendors" +msgstr "Ostatní výrobci" + +#: src/slic3r/GUI/ConfigWizard.cpp:438 +msgid "Other Vendors" +msgstr "Ostatní výrobci" + +#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:3440 +msgid "Output file" +msgstr "Výstupní soubor" + +#: src/libslic3r/PrintConfig.cpp:3104 +msgid "Output File" +msgstr "Výstupní soubor" + +#: src/libslic3r/PrintConfig.cpp:1294 +msgid "Output filename format" +msgstr "Formát názvu výstupního souboru" + +#: src/libslic3r/PrintConfig.cpp:2992 +msgid "Output Model Info" +msgstr "Info o výstupním modelu" + +#: src/slic3r/GUI/Tab.cpp:1168 src/slic3r/GUI/Tab.cpp:3439 +msgid "Output options" +msgstr "Možnosti výstupu" + +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 +msgid "Overhang perimeter" +msgstr "Perimetr pÅ™evisu" + +#: src/libslic3r/PrintConfig.cpp:1955 +msgid "Overhang threshold" +msgstr "Mezní úhel pÅ™evisu" + +#: src/slic3r/GUI/Tab.cpp:1153 +msgid "Overlap" +msgstr "PÅ™ekrytí" + +#: src/slic3r/GUI/MainFrame.cpp:478 +msgid "P&rint Settings Tab" +msgstr "Panel nastavení tisku" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:520 +#: src/slic3r/GUI/Tab.cpp:3425 src/slic3r/GUI/Tab.cpp:3426 +#: src/libslic3r/PrintConfig.cpp:2516 src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2537 src/libslic3r/PrintConfig.cpp:2547 +#: src/libslic3r/PrintConfig.cpp:2560 src/libslic3r/PrintConfig.cpp:2569 +msgid "Pad" +msgstr "Podložka" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 +msgid "Pad and Support" +msgstr "Podložka a PodppÄ›ry" + +#: src/libslic3r/PrintConfig.cpp:2559 +msgid "Pad edge radius" +msgstr "PolomÄ›r hrany podložky" + +#: src/libslic3r/PrintConfig.cpp:2532 +msgid "Pad wall height" +msgstr "Výška boÄnice podložky" + +#: src/libslic3r/PrintConfig.cpp:2568 +msgid "Pad wall slope" +msgstr "Sklon boÄnice podložky" + +#: src/libslic3r/PrintConfig.cpp:2522 +msgid "Pad wall thickness" +msgstr "Tloušťka stÄ›ny podložky" + +#: src/slic3r/GUI/Field.cpp:108 +msgid "parameter name" +msgstr "název parametru" + +#: src/slic3r/GUI/Field.cpp:184 +msgid "Parameter validation" +msgstr "Validace parametru" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2412 +msgid "Part" +msgstr "Část" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1881 +msgid "Part manipulation" +msgstr "Manipulace s Äástmi" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1872 +msgid "Part Settings to modify" +msgstr "ZmÄ›na nastavení Äásti" + +#: src/slic3r/GUI/MainFrame.cpp:456 +msgid "Paste clipboard" +msgstr "Vložit ze schránky" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +msgid "Paste from clipboard" +msgstr "Vložit ze schránky" + +#: src/libslic3r/PrintConfig.cpp:1915 +msgid "Pattern" +msgstr "Vzor" + +#: src/libslic3r/PrintConfig.cpp:1805 +msgid "Pattern angle" +msgstr "Úhel vzoru" + +#: src/libslic3r/PrintConfig.cpp:1929 +msgid "Pattern spacing" +msgstr "RozteÄ podpÄ›r" + +#: src/libslic3r/PrintConfig.cpp:1917 +msgid "Pattern used to generate support material." +msgstr "Vzor použitý pro generování podpÄ›r." + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 +msgid "Perform cut" +msgstr "Provést Å™ez" + +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 +msgid "Perimeter" +msgstr "Perimetr" + +#: src/libslic3r/PrintConfig.cpp:1339 +msgid "Perimeter extruder" +msgstr "Extruder pro perimetry" + +#: src/slic3r/GUI/PresetHints.cpp:162 +msgid "perimeters" +msgstr "perimetry" + +#: src/libslic3r/PrintConfig.cpp:1330 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1370 +msgid "Perimeters" +msgstr "Perimetry" + +#: src/slic3r/GUI/ConfigWizard.cpp:440 +#, possible-c-format +msgid "Pick another vendor supported by %s:" +msgstr "Vyberte si jiného prodejce podporovaného v %s:" + +#: src/slic3r/GUI/ConfigWizard.cpp:423 +msgid "Pick another vendor supported by Slic3r PE:" +msgstr "Vyberte si jiného prodejce podporovaného v Slic3r PE:" + +#: src/libslic3r/PrintConfig.cpp:2430 +msgid "Pillar widening factor" +msgstr "Koeficient rozÅ¡iÅ™ování podpÄ›ry" + +#: src/slic3r/GUI/Tab.cpp:3496 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "PrůmÄ›r hrotu by mÄ›l být menší než průmÄ›r podpÄ›ry." + +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 +msgid "Place on face [F]" +msgstr "Umístit plochou na podložku [F]" + +#: src/slic3r/GUI/Plater.cpp:2897 +msgid "Place one more copy of the selected object" +msgstr "PÅ™idá jednu kopii vybraného objektu" + +#: src/slic3r/GUI/MainFrame.cpp:161 +msgid "Plater" +msgstr "Podložka" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +msgid "Plater Shortcuts" +msgstr "Podložka" + +#: src/slic3r/GUI/GUI.cpp:143 +msgid "Please check and fix your object list." +msgstr "Zkontrolujte a opravte seznam objektů." + +#: src/slic3r/GUI/Tab.cpp:2797 +msgid "Please check your object list before preset changing." +msgstr "PÅ™ed zmÄ›nou nastavení zkontrolujte prosím seznam objektů." + +#: lib/Slic3r/GUI/Plater.pm:1897 +msgid "Please install the OpenGL modules to use this feature (see build instructions)." +msgstr "Pro použití této funkce prosím nainstalujte OpenGL moduly (viz instrukce vlastního sestavení)." + +#: src/slic3r/GUI/GUI_App.cpp:742 +msgid "Please, check your changes before." +msgstr "Prosím, nejdříve zkontrolujte provedené zmÄ›ny." + +#: src/libslic3r/PrintConfig.cpp:2235 +msgid "Portrait" +msgstr "Orientace na výšku" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:150 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:193 +msgid "Position" +msgstr "Pozice" + +#: src/slic3r/GUI/Tab.cpp:2265 +msgid "Position (for multi-extruder printers)" +msgstr "Pozice (pro tiskárny s více extrudery)" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177 +msgid "Position (mm)" +msgstr "Pozice (mm)" + +#: src/libslic3r/PrintConfig.cpp:1553 +msgid "Position of perimeters starting points." +msgstr "Pozice zaÄátku perimetrů." + +#: src/libslic3r/PrintConfig.cpp:2123 +msgid "Position X" +msgstr "Pozice X" + +#: src/libslic3r/PrintConfig.cpp:2130 +msgid "Position Y" +msgstr "Pozice Y" + +#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1383 +msgid "Post-processing scripts" +msgstr "PostprodukÄní skripty" + +#: src/slic3r/GUI/MainFrame.cpp:489 +msgid "Pre&view" +msgstr "Náhled" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 src/slic3r/GUI/Preferences.cpp:10 +msgid "Preferences" +msgstr "Nastavení" + +#: src/libslic3r/PrintConfig.cpp:1571 +msgid "Preferred direction of the seam" +msgstr "Preferovaný smÄ›r Å¡vu" + +#: src/libslic3r/PrintConfig.cpp:1582 +msgid "Preferred direction of the seam - jitter" +msgstr "Preferovaný smÄ›r Å¡vu - rozkmit" + +#: src/slic3r/GUI/Tab.cpp:2758 +#, possible-c-format +msgid "Preset (%s)" +msgstr "PÅ™ednastavení (%s)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:148 +msgid "Press to scale or rotate selected objects\naround their own center" +msgstr "Stisknutím zmÄ›níte velikost nebo otoÄíte vybranými objekty kolem vlastního stÅ™edu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Press to select multiple object or move multiple object with mouse" +msgstr "Stisknutím vyberte více objektů nebo pÅ™esuňte více objektů pomocí myÅ¡i" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 +#, no-c-format +msgid "Press to snap by 5% in Gizmo scale\nor by 1mm in Gizmo move" +msgstr "StisknÄ›te pro zmÄ›nu velikosti s krokem 5%\nnebo pro posun s krokem 1mm" + +#: src/slic3r/GUI/Tab.cpp:2288 +msgid "Preview" +msgstr "Náhled" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Preview Shortcuts" +msgstr "Náhled" + +#: src/slic3r/GUI/MainFrame.cpp:641 +msgid "Previously sliced file (" +msgstr "Dříve slicovaný soubor (" + +#: src/libslic3r/PrintConfig.cpp:1773 +msgid "Prime all printing extruders" +msgstr "Příprava vÅ¡ech tiskových extruderů" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1274 +msgid "print" +msgstr "tisk" + +#: src/slic3r/GUI/MainFrame.cpp:510 +msgid "Print &Host Upload Queue" +msgstr "Fronta na&hrávání do tiskového serveru" + +#: src/libslic3r/PrintConfig.cpp:439 +msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." +msgstr "Tisk obrysových perimetrů od vnÄ›jších po vnitÅ™ní namísto opaÄného výchozího poÅ™adí." + +#: src/slic3r/GUI/ConfigWizard.cpp:541 +msgid "Print Diameters" +msgstr "PrůmÄ›ry tisku" + +#: src/slic3r/GUI/Tab.cpp:1917 src/slic3r/GUI/Tab.cpp:2074 +msgid "Print Host upload" +msgstr "Nahrání do tiskového serveru" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +#: src/slic3r/GUI/PrintHostDialogs.cpp:135 +msgid "Print host upload queue" +msgstr "Fronta nahrávaní do tiskového serveru" + +#: src/slic3r/GUI/Tab.hpp:317 src/slic3r/GUI/Tab.hpp:405 +msgid "Print Settings" +msgstr "Nastavení tisku" + +#: src/slic3r/GUI/Plater.cpp:681 +msgid "Print settings" +msgstr "Nastavení tisku" + +#: src/slic3r/GUI/Tab.cpp:1520 +msgid "Print speed override" +msgstr "PÅ™epsání rychlosti tisku" + +#: src/slic3r/GUI/MainFrame.cpp:483 +msgid "Print&er Settings Tab" +msgstr "Panel nastavení tiskárny" + +#: src/slic3r/GUI/Plater.cpp:685 +msgid "Printer" +msgstr "Tiskárna" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1278 +msgid "printer" +msgstr "tiskárna" + +#: src/libslic3r/PrintConfig.cpp:2274 src/libslic3r/PrintConfig.cpp:2275 +msgid "Printer absolute correction" +msgstr "Absolutní korekce tiskárny" + +#: src/libslic3r/PrintConfig.cpp:2282 src/libslic3r/PrintConfig.cpp:2283 +msgid "Printer gamma correction" +msgstr "Gamma korekce tiskárny" + +#: src/slic3r/GUI/Tab.cpp:926 +msgid "printer model" +msgstr "model tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1402 +msgid "Printer notes" +msgstr "Poznámky o tiskárnÄ›" + +#: src/libslic3r/PrintConfig.cpp:2266 src/libslic3r/PrintConfig.cpp:2267 +#: src/libslic3r/PrintConfig.cpp:2268 +msgid "Printer scaling correction" +msgstr "Korekce měřítka tisku" + +#: src/slic3r/GUI/Tab.hpp:368 +msgid "Printer Settings" +msgstr "Nastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 +msgid "Printer technology" +msgstr "Technologie tisku" + +#: src/libslic3r/PrintConfig.cpp:1396 +msgid "Printer type" +msgstr "Typ tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1417 +msgid "Printer variant" +msgstr "Varianta tiskárny" + +#: src/libslic3r/PrintConfig.cpp:1411 +msgid "Printer vendor" +msgstr "Prodejce tiskárny" + +#: src/libslic3r/Print.cpp:1294 +msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." +msgstr "Tisk s více extrudery různých průmÄ›rů trysek. Má-li být podpÄ›ra tisknuta aktuálním extruderem (support_material_extruder == 0 nebo support_material_interface_extruder == 0), musí mít vÅ¡echny trysky stejný průmÄ›r." + +#: lib/Slic3r/GUI/Plater.pm:324 +msgid "Print…" +msgstr "Tisk…" + +#: src/slic3r/GUI/MainFrame.cpp:704 +msgid "Processing " +msgstr "Zpracovávám " + +#: lib/Slic3r/GUI/Plater.pm:713 lib/Slic3r/GUI/Plater.pm:727 +msgid "Processing input file\n" +msgstr "Zpracovávám vstupní soubor\n" + +#: src/slic3r/GUI/Plater.cpp:1600 +#, possible-c-format +msgid "Processing input file %s\n" +msgstr "Zpracovávám vstupní soubor %s\n" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2160 +msgid "Processing small holes" +msgstr "Zpracování malých otvorů" + +#: src/slic3r/GUI/Tab.cpp:1201 src/slic3r/GUI/Tab.cpp:1585 +#: src/slic3r/GUI/Tab.cpp:1993 src/slic3r/GUI/Tab.cpp:2087 +#: src/slic3r/GUI/Tab.cpp:3337 src/slic3r/GUI/Tab.cpp:3446 +msgid "Profile dependencies" +msgstr "Profilové závislosti" + +#: src/slic3r/GUI/FirmwareDialog.cpp:779 +msgid "Progress:" +msgstr "PrůbÄ›h:" + +#: src/slic3r/GUI/MainFrame.cpp:542 +msgid "Prusa 3D &Drivers" +msgstr "Prusa 3&D OvladaÄe" + +#: lib/Slic3r/GUI/MainFrame.pm:338 +msgid "Prusa 3D Drivers" +msgstr "Prusa 3D OvladaÄe" + +#: src/slic3r/GUI/MainFrame.cpp:544 +msgid "Prusa Edition &Releases" +msgstr "Vydání P&rusa Edice" + +#: lib/Slic3r/GUI/MainFrame.pm:341 +msgid "Prusa Edition Releases" +msgstr "Vydání Prusa Edice" + +#: src/slic3r/GUI/ConfigWizard.cpp:1109 +msgid "Prusa FFF Technology Printers" +msgstr "Prusa tiskárny technologie FFF" + +#: src/slic3r/GUI/ConfigWizard.cpp:1112 +msgid "Prusa MSLA Technology Printers" +msgstr "Prusa tiskárny technologie MSLA" + +#: src/libslic3r/PrintConfig.cpp:2153 +msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." +msgstr "VyÄiÅ¡tÄ›ní trysky po výmÄ›nÄ› filamentu se provede uvnitÅ™ výplní tohoto objektu. Tím se snižuje množství odpadu, ale může to mít za následek delší dobu tisku v důsledku dodateÄných pohybů." + +#: xs/src/libslic3r/PrintConfig.cpp:1996 +msgid "Purging into infill" +msgstr "ÄŒiÅ¡tÄ›ní do výplnÄ›" + +#: xs/src/libslic3r/PrintConfig.cpp:2005 +msgid "Purging into objects" +msgstr "ÄŒiÅ¡tÄ›ní do objektů" + +#: src/slic3r/GUI/Plater.cpp:456 +msgid "Purging volumes" +msgstr "Objemy ÄiÅ¡tÄ›ní" + +#: src/libslic3r/PrintConfig.cpp:2106 +msgid "Purging volumes - load/unload volumes" +msgstr "Objemy ÄiÅ¡tÄ›ní - zavádÄ›né / vyjmuté objemy" + +#: src/libslic3r/PrintConfig.cpp:2113 +msgid "Purging volumes - matrix" +msgstr "Objemy ÄiÅ¡tÄ›ní - matice" + +#: lib/Slic3r/GUI/MainFrame.pm:232 +msgid "Q&uick Slice…\tCtrl+U" +msgstr "R&ychlé Slicování…\tCtrl+U" + +#: src/slic3r/GUI/Tab.cpp:1019 +msgid "Quality (slower slicing)" +msgstr "Kvalita (pomalejší slicing)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:854 src/slic3r/GUI/GUI_ObjectList.cpp:1139 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1377 +#, possible-c-format +msgid "Quick Add Settings (%s)" +msgstr "Rychlé pÅ™idání nastavení (%s)" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +msgid "Quick slice" +msgstr "Rychlé slicování" + +#: src/slic3r/GUI/MainFrame.cpp:383 +msgid "Quick Slice" +msgstr "Rychlé Slicování" + +#: lib/Slic3r/GUI/MainFrame.pm:238 +msgid "Quick Slice and Save &As…\tCtrl+Alt+U" +msgstr "Rychlé Slicování a Uložit &jako…\tCtrl+Alt+U" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +msgid "Quick slice and Save as" +msgstr "Rychlé Slicování a Uložit jako" + +#: src/slic3r/GUI/MainFrame.cpp:389 +msgid "Quick Slice and Save As" +msgstr "Rychlé Slicování a Uložit jako" + +#: src/slic3r/GUI/MainFrame.cpp:409 +#, possible-c-format +msgid "Quit %s" +msgstr "UkonÄit %s" + +#: src/slic3r/GUI/MainFrame.cpp:340 +msgid "Quit Slic3r" +msgstr "UkonÄit Slic3r" + +#: src/libslic3r/PrintConfig.cpp:479 +msgid "Radius" +msgstr "Rádius" + +#: src/slic3r/GUI/Tab.cpp:1066 +msgid "Raft" +msgstr "Raft" + +#: src/libslic3r/PrintConfig.cpp:1431 +msgid "Raft layers" +msgstr "Vrstev raftu" + +#: xs/src/slic3r/GUI/Tab.cpp:1299 +msgid "Ramming" +msgstr "Rapidní extruze" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 +msgid "Ramming customization" +msgstr "PÅ™izpůsobení rapidní extruze" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 +msgid "Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n\nThis is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." +msgstr "Rapidní extruze oznaÄuje rychlé vytlaÄení filamentu tÄ›snÄ› pÅ™ed jeho výmÄ›nou za jiný v multi material tiskárnÄ› s jedním extruderem. ÚÄelem je správnÄ› vytvarovat konec vysouvaného filamentu tak, aby neblokoval zasunutí nového filamentu a také mohl být sám pozdÄ›ji opÄ›tovnÄ› zasunut. Tento proces je důležitý a rozdílné materiály mohou pro získání optimálního tvaru vyžadovat různé rychlosti extruze. Z tohoto důvodu jsou objemové průtoky pÅ™i rapidní extruzi uživatelsky upravitelné.\n\nToto nastavení je urÄeno pro pokroÄilé uživatele, nesprávné nastavení velmi pravdÄ›podobnÄ› povede k zaseknutí filamentu, vybrouÅ¡ení filamentu podávacím koleÄkem, atd." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 +msgid "Ramming line spacing" +msgstr "Rozestup linek pÅ™i rapidní extruzi" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 +msgid "Ramming line width" +msgstr "Šířka linky pÅ™i rapidní extruzi" + +#: src/libslic3r/PrintConfig.cpp:662 +msgid "Ramming parameters" +msgstr "Parametry rapidní extruze" + +#: src/slic3r/GUI/Tab.cpp:1545 +msgid "Ramming settings" +msgstr "Nastavení rapidní extruze" + +#: src/libslic3r/PrintConfig.cpp:1559 +msgid "Random" +msgstr "Náhodný" + +#: src/libslic3r/SLAPrint.cpp:72 +msgid "Rasterizing layers" +msgstr "Rasterizace vrstev" + +#: src/slic3r/GUI/UpdateDialogs.cpp:151 +msgid "Re-configure" +msgstr "PÅ™enastavit" + +#: src/slic3r/GUI/FirmwareDialog.cpp:783 +msgid "Ready" +msgstr "PÅ™ipraveno" + +#: src/slic3r/GUI/Plater.cpp:2406 +msgid "Ready to slice" +msgstr "PÅ™ipraven ke slicování" + +#: src/slic3r/GUI/MainFrame.cpp:526 src/libslic3r/PrintConfig.cpp:1562 +msgid "Rear" +msgstr "Zezadu" + +#: src/slic3r/GUI/MainFrame.cpp:526 +msgid "Rear View" +msgstr "Pohled zezadu" + +#: src/slic3r/GUI/PresetHints.cpp:264 +#, possible-c-format +msgid "Recommended object thin wall thickness for layer height %.2f and " +msgstr "DoporuÄená tloušťka stÄ›ny objektu pro výšku vrstvy %.2f a" + +#: src/slic3r/GUI/PresetHints.cpp:247 +msgid "Recommended object thin wall thickness: Not available due to invalid layer height." +msgstr "DoporuÄená tloušťka stÄ›ny objektu: Není k dispozici kvůli neplatné výšce vrstvy." + +#: src/slic3r/GUI/GUI_App.cpp:386 src/slic3r/GUI/GUI_App.cpp:395 +msgid "Recreating" +msgstr "Obnovení" + +#: src/slic3r/GUI/BedShapeDialog.cpp:68 +msgid "Rectangular" +msgstr "Obdélníkový" + +#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:796 +#: src/libslic3r/PrintConfig.cpp:1922 +msgid "Rectilinear" +msgstr "PřímoÄará" + +#: src/libslic3r/PrintConfig.cpp:1923 +msgid "Rectilinear grid" +msgstr "PřímoÄará mřížka" + +#: src/slic3r/GUI/Tab.cpp:1037 +msgid "Reducing printing time" +msgstr "Zkracování tiskového Äasu" + +#: src/slic3r/GUI/Plater.cpp:2924 +msgid "Reload from Disk" +msgstr "Znovu naÄíst z Disku" + +#: src/slic3r/GUI/Plater.cpp:2924 +msgid "Reload the selected file from Disk" +msgstr "Znovu naÄíst vybraný objekt z Disku" + +#: src/slic3r/GUI/Preferences.cpp:36 +msgid "Remember output directory" +msgstr "Pamatovat si výstupní složku" + +#: src/slic3r/GUI/Tab.cpp:2935 +msgid "remove" +msgstr "odebrat" + +#: src/slic3r/GUI/Tab.cpp:2937 +msgid "Remove" +msgstr "Odebrat" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:859 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:912 +msgid "Remove all points" +msgstr "Odebrat vÅ¡echny body" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:125 +msgid "Remove Instance from selected object" +msgstr "Odebrat instanci vybraného objektu" + +#: src/slic3r/GUI/Plater.cpp:2899 +msgid "Remove one copy of the selected object" +msgstr "Odstraní jednu kopii vybraného objektu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1230 +msgid "Remove point" +msgstr "Odebrat bod" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1233 +msgid "Remove point from selection" +msgstr "Odebrat bod z výbÄ›ru" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:855 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1237 +msgid "Remove selected points" +msgstr "Odebrat oznaÄené body" + +#: src/slic3r/GUI/Plater.cpp:2891 src/slic3r/GUI/Plater.cpp:2909 +msgid "Remove the selected object" +msgstr "Odstranit vybraný objekt" + +#: src/slic3r/GUI/ConfigWizard.cpp:305 +msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)" +msgstr "Odstranit uživatelské profily - Äistá instalace (nejprve bude provedena záloha)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1200 +msgid "Rename" +msgstr "PÅ™ejmenovat" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2709 +msgid "Renaming" +msgstr "PÅ™ejmenování" + +#: src/libslic3r/PrintConfig.cpp:3125 +msgid "Render with a software renderer" +msgstr "Vykreslení pomocí softwaru" + +#: src/libslic3r/PrintConfig.cpp:3126 +msgid "Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver." +msgstr "Vykreslení pomocí softwaru. Namísto výchozího ovladaÄe OpenGL je naÄten dodaný softwarový renderer MESA." + +#: src/slic3r/GUI/MainFrame.cpp:772 src/libslic3r/PrintConfig.cpp:3058 +msgid "Repair" +msgstr "Oprava" + +#: lib/Slic3r/GUI/MainFrame.pm:258 +msgid "Repair STL file…" +msgstr "Opravit soubor STL…" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "Opravený soubor 3MF obsahuje více než jeden objekt." + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "Opravený soubor 3MF obsahuje více než jedno tÄ›leso." + +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "Opravený soubor 3MF neobsahuje žádný objekt" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "Opravený soubor 3MF neobsahuje žádný objemové tÄ›leso" + +#: src/slic3r/Utils/FixModelByWin10.cpp:242 +msgid "Repairing model by the Netfabb service" +msgstr "Opravování modelu službou Netfabb" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:395 +msgid "Repeat last quick slice" +msgstr "Opakovat poslední rychlé slicování" + +#: src/slic3r/GUI/MainFrame.cpp:395 +msgid "Repeat Last Quick Slice" +msgstr "Opakovat poslední rychlé slicování" + +#: src/slic3r/GUI/MainFrame.cpp:561 +msgid "Report an I&ssue" +msgstr "Nahlá&sit chybu" + +#: lib/Slic3r/GUI/MainFrame.pm:361 +msgid "Report an Issue" +msgstr "Nahlásit chybu" + +#: src/slic3r/GUI/MainFrame.cpp:561 +#, possible-c-format +msgid "Report an issue on %s" +msgstr "Nahlásit chybu v programu %s" + +#: src/slic3r/GUI/MainFrame.cpp:477 +msgid "Report an issue on the Slic3r Prusa Edition" +msgstr "Nahlásit chybu ve Slic3eru Prusa Edice" + +#: src/slic3r/Utils/PresetUpdater.cpp:590 +#, possible-c-format +msgid "requires max. %s" +msgstr "vyžaduje max. %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:588 +#, possible-c-format +msgid "requires min. %s" +msgstr "vyžaduje min. %s" + +#: src/slic3r/Utils/PresetUpdater.cpp:583 +#, possible-c-format +msgid "requires min. %s and max. %s" +msgstr "vyžaduje min. %s a max. %s" + +#: src/slic3r/GUI/FirmwareDialog.cpp:772 +msgid "Rescan" +msgstr "Skenovat" + +#: src/slic3r/GUI/Tab.cpp:1879 +msgid "Rescan serial ports" +msgstr "Znovu prohledat sériové porty" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1239 +msgid "Reset clipping plane" +msgstr "Obnovit Å™ezovou rovinu" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:928 +msgid "Reset direction" +msgstr "Resetovat smÄ›r" + +#: src/libslic3r/PrintConfig.cpp:1441 +msgid "Resolution" +msgstr "RozliÅ¡ení" + +#: src/libslic3r/PrintConfig.cpp:1459 +msgid "Retract amount before wipe" +msgstr "Délka retrakce pÅ™ed oÄiÅ¡tÄ›ním" + +#: src/libslic3r/PrintConfig.cpp:1467 +msgid "Retract on layer change" +msgstr "Retrakce pÅ™i zmÄ›nÄ› vrstvy" + +#: src/slic3r/GUI/Tab.cpp:2268 +msgid "Retraction" +msgstr "Retrakce" + +#: src/libslic3r/PrintConfig.cpp:1453 +msgid "Retraction is not triggered when travel moves are shorter than this length." +msgstr "Retrakce není spuÅ¡tÄ›na, pokud jsou rychloposuny pojezdu kratší než tato délka." + +#: src/libslic3r/PrintConfig.cpp:1474 +msgid "Retraction Length" +msgstr "Vzdálenost retrakce" + +#: src/libslic3r/PrintConfig.cpp:1482 +msgid "Retraction Length (Toolchange)" +msgstr "Vzdálenost retrakce (pÅ™i zmÄ›nÄ› extruderu)" + +#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1535 +msgid "Retraction Speed" +msgstr "Rychlost retrakce" + +#: src/slic3r/GUI/Tab.cpp:2284 +msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" +msgstr "Retrakce pro neaktivní extruder (pokroÄilé nastavení pro tiskárny typu MultiMaterial)" + +#: src/slic3r/GUI/GUI_Preview.cpp:244 +msgid "Retractions" +msgstr "Retrakce" + +#: src/slic3r/GUI/MainFrame.cpp:528 +msgid "Right" +msgstr "Zprava" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:279 +msgid "Right button click the icon to change the object settings" +msgstr "Klepnutím pravým tlaÄítkem myÅ¡i na ikonu zmÄ›níte nastavení objektu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:250 +msgid "Right button click the icon to fix STL through Netfabb" +msgstr "Klepnutím pravým tlaÄítkem myÅ¡i se spustí oprava STL souboru pomocí služby Netfabb" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 +msgid "Right mouse click - remove point" +msgstr "Kliknutí pravým tlaÄítkem myÅ¡i - odebrání bodu" + +#: src/slic3r/GUI/MainFrame.cpp:528 +msgid "Right View" +msgstr "Pohled zprava" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:233 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/libslic3r/PrintConfig.cpp:3062 +msgid "Rotate" +msgstr "OtoÄit" + +#: lib/Slic3r/GUI/Plater.pm:2228 +msgid "Rotate 45° clockwise" +msgstr "OtoÄit o 45° ve smÄ›ru hodinových ruÄiÄek" + +#: lib/Slic3r/GUI/Plater.pm:2231 +msgid "Rotate 45° counter-clockwise" +msgstr "OtoÄit o 45° proti smÄ›ru hodinových ruÄiÄek" + +#: lib/Slic3r/GUI/Plater.pm:1042 +msgid "Rotate around " +msgstr "OtoÄit okolo" + +#: src/libslic3r/PrintConfig.cpp:3067 +msgid "Rotate around X" +msgstr "OtoÄit okolo osy X" + +#: src/libslic3r/PrintConfig.cpp:3072 +msgid "Rotate around Y" +msgstr "OtoÄit okolo osy Y" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 +msgid "Rotate lower part upwards" +msgstr "OtoÄit spodní Äást Å™ezem dolů" + +#: lib/Slic3r/GUI/Plater.pm:2228 +msgid "Rotate the selected object by 45° clockwise" +msgstr "OtoÄit vybraný objekt o 45° ve smÄ›ru hodinových ruÄiÄek" + +#: lib/Slic3r/GUI/Plater.pm:2231 +msgid "Rotate the selected object by 45° counter-clockwise" +msgstr "OtoÄit vybraný objekt o 45° proti smÄ›ru hodinových ruÄiÄek" + +#: lib/Slic3r/GUI/Plater.pm:2236 +msgid "Rotate the selected object by an arbitrary angle" +msgstr "OtoÄit vybraným objektem o libovolný úhel" + +#: lib/Slic3r/GUI/Plater.pm:2238 +msgid "Rotate the selected object by an arbitrary angle around X axis" +msgstr "OtoÄit vybraným objektem o libovolný úhel kolem osy X" + +#: lib/Slic3r/GUI/Plater.pm:2241 +msgid "Rotate the selected object by an arbitrary angle around Y axis" +msgstr "OtoÄit vybraným objektem o libovolný úhel kolem osy Y" + +#: lib/Slic3r/GUI/Plater.pm:2244 +msgid "Rotate the selected object by an arbitrary angle around Z axis" +msgstr "OtoÄit vybraným objektem o libovolný úhel kolem osy Z" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 +msgid "Rotate [R]" +msgstr "OtoÄit [R]" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:151 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:194 +msgid "Rotation" +msgstr "OtáÄení" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 +msgid "Rotation (deg)" +msgstr "OtáÄení (stupnÄ›)" + +#: src/libslic3r/PrintConfig.cpp:3068 +msgid "Rotation angle around the X axis in degrees." +msgstr "Úhel otoÄení kolem osy X ve stupních." + +#: src/libslic3r/PrintConfig.cpp:3073 +msgid "Rotation angle around the Y axis in degrees." +msgstr "Úhel otoÄení kolem osy Y ve stupních." + +#: src/libslic3r/PrintConfig.cpp:3063 +msgid "Rotation angle around the Z axis in degrees." +msgstr "Úhel otoÄení kolem osy Z ve stupních." + +#: src/libslic3r/SLA/SLASupportTree.cpp:2158 +msgid "Routing supports to model surface" +msgstr "SmÄ›rování podpÄ›r k povrchu modelu" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2157 +msgid "Routing to ground" +msgstr "SmÄ›rování k zemi" + +#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:658 +#, possible-c-format +msgid "Run %s" +msgstr "Spustit %s" + +#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:612 +#: src/libslic3r/PrintConfig.cpp:656 src/libslic3r/PrintConfig.cpp:671 +#: src/libslic3r/PrintConfig.cpp:2243 src/libslic3r/PrintConfig.cpp:2252 +#: src/libslic3r/PrintConfig.cpp:2312 src/libslic3r/PrintConfig.cpp:2319 +msgid "s" +msgstr "s" + +#: src/slic3r/GUI/MainFrame.cpp:677 src/slic3r/GUI/Tab.cpp:3239 +msgid "Save " +msgstr "Uložit " + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1023 +msgid "Save changes?" +msgstr "Uložit zmÄ›ny?" + +#: src/libslic3r/PrintConfig.cpp:2997 +msgid "Save config file" +msgstr "Uložit konfiguraÄní soubor" + +#: src/slic3r/GUI/MainFrame.cpp:786 +msgid "Save configuration as:" +msgstr "Uložit konfiguraci jako:" + +#: src/libslic3r/PrintConfig.cpp:2998 +msgid "Save configuration to the specified file." +msgstr "Uložit konfiguraci do zadaného souboru." + +#: src/slic3r/GUI/Tab.cpp:130 +msgid "Save current " +msgstr "Uložit stávající " + +#: src/slic3r/GUI/MainFrame.cpp:341 +msgid "Save current project file" +msgstr "Uložit stávající projekt" + +#: src/slic3r/GUI/MainFrame.cpp:343 +msgid "Save current project file as" +msgstr "Uložit stávající projekt jako" + +#: src/slic3r/GUI/Plater.cpp:1938 +msgid "Save file as:" +msgstr "Uložit soubor jako:" + +#: src/slic3r/GUI/Plater.cpp:3433 +msgid "Save G-code file as:" +msgstr "Uložit G-code jako:" + +#: src/slic3r/GUI/MainFrame.cpp:757 +msgid "Save OBJ file (less prone to coordinate errors than STL) as:" +msgstr "Uložit soubor OBJ (ménÄ› náchylný na chyby souÅ™adnic než STL) jako:" + +#: src/slic3r/GUI/Tab.hpp:417 +msgid "Save preset" +msgstr "Uložit pÅ™ednastavení" + +#: src/slic3r/GUI/MainFrame.cpp:843 +msgid "Save presets bundle as:" +msgstr "Uložit balík pÅ™ednastavení jako:" + +#: src/slic3r/GUI/MainFrame.cpp:343 +msgid "Save Project &as" +msgstr "Uložit Projekt j&ako" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 +msgid "Save project (3MF)" +msgstr "Uložit projekt (3MF)" + +#: src/slic3r/GUI/Plater.cpp:3433 +msgid "Save SL1 file as:" +msgstr "Uložit SL1 soubor jako:" + +#: src/slic3r/GUI/MainFrame.cpp:692 +msgid "Save zip file as:" +msgstr "Uložit ZIP soubor jako:" + +#: src/slic3r/Utils/FixModelByWin10.cpp:263 +#: src/slic3r/Utils/FixModelByWin10.cpp:270 +#: src/slic3r/Utils/FixModelByWin10.cpp:302 +msgid "Saving mesh into the 3MF container failed." +msgstr "Ukládání meshe do 3MF kontejneru selhalo." + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:152 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:234 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/libslic3r/PrintConfig.cpp:3077 +msgid "Scale" +msgstr "Měřítko" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 +msgid "Scale (%)" +msgstr "Měřítko (%)" + +#: lib/Slic3r/GUI/Plater.pm:1133 lib/Slic3r/GUI/Plater.pm:1137 +msgid "Scale along " +msgstr "Upravit rozmÄ›r podél " + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:195 +msgid "Scale factors" +msgstr "Měřítka" + +#: lib/Slic3r/GUI/Plater.pm:2262 lib/Slic3r/GUI/Plater.pm:2278 +msgid "Scale the selected object along a single axis" +msgstr "ZmÄ›nit rozmÄ›r vybraného objektu podél jedné osy" + +#: lib/Slic3r/GUI/Plater.pm:2267 lib/Slic3r/GUI/Plater.pm:2283 +msgid "Scale the selected object along the X axis" +msgstr "ZmÄ›nit rozmÄ›r vybraného objektu podél osy X" + +#: lib/Slic3r/GUI/Plater.pm:2264 lib/Slic3r/GUI/Plater.pm:2280 +msgid "Scale the selected object along the XYZ axes" +msgstr "ZmÄ›nit rozmÄ›r vybraného objektu podél os XYZ" + +#: lib/Slic3r/GUI/Plater.pm:2270 lib/Slic3r/GUI/Plater.pm:2286 +msgid "Scale the selected object along the Y axis" +msgstr "ZmÄ›nit rozmÄ›r vybraného objektu podél osy Y" + +#: lib/Slic3r/GUI/Plater.pm:2273 lib/Slic3r/GUI/Plater.pm:2289 +msgid "Scale the selected object along the Z axis" +msgstr "ZmÄ›nit rozmÄ›r vybraného objektu podél osy Z" + +#: src/libslic3r/PrintConfig.cpp:3086 +msgid "Scale to Fit" +msgstr "ZmÄ›nit měřítko, aby se objekt veÅ¡el do tiskového prostoru" + +#: src/libslic3r/PrintConfig.cpp:3087 +msgid "Scale to fit the given volume." +msgstr "ZmÄ›nit velikost, aby se objekt veÅ¡el do zadaného tiskového prostoru." + +#: lib/Slic3r/GUI/Plater.pm:2278 +msgid "Scale to size" +msgstr "Upravit do rozmÄ›ru" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 +msgid "Scale [S]" +msgstr "Upravit velikost [S]" + +#: lib/Slic3r/GUI/Plater.pm:260 lib/Slic3r/GUI/Plater.pm:276 +msgid "Scale…" +msgstr "Velikost…" + +#: src/libslic3r/PrintConfig.cpp:3078 +msgid "Scaling factor or percentage." +msgstr "Procentuální měřítko." + +#: src/libslic3r/PrintConfig.cpp:1551 +msgid "Seam position" +msgstr "Pozice Å¡vu" + +#: src/libslic3r/PrintConfig.cpp:1572 +msgid "Seam preferred direction" +msgstr "Preferovaný smÄ›r Å¡vu" + +#: src/libslic3r/PrintConfig.cpp:1581 +msgid "Seam preferred direction jitter" +msgstr "Seam preferred direction jitter" + +#: src/slic3r/GUI/BonjourDialog.cpp:218 +msgid "Searching for devices" +msgstr "Hledám zařízení" + +#: src/slic3r/GUI/Plater.cpp:2190 +msgid "Searching for optimal orientation" +msgstr "Hledání optimální orientace" + +#: lib/Slic3r/GUI/MainFrame.pm:300 +msgid "Select &Controller Tab\tCtrl+T" +msgstr "Zobrazit panel OvladaÄ\tCtrl+T" + +#: lib/Slic3r/GUI/MainFrame.pm:311 +msgid "Select &Filament Settings Tab\tCtrl+3" +msgstr "Zobrazit panel Nastavení filamentu\tCtrl+3" + +#: lib/Slic3r/GUI/MainFrame.pm:294 +msgid "Select &Plater Tab\tCtrl+1" +msgstr "Zobrazit panel Podložka\tCtrl+1" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:108 +msgid "Select all" +msgstr "Vybrat vÅ¡e" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +msgid "Select All objects" +msgstr "Vybrat vÅ¡echny objekty" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1236 +msgid "Select all points" +msgstr "Vybrat vÅ¡echny body" + +#: src/slic3r/GUI/ConfigWizard.cpp:1089 +msgid "Select all standard printers" +msgstr "Vybrat vÅ¡echny standardní tiskárny" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1234 +msgid "Select by rectangle" +msgstr "OznaÄit obdélníkovým výbÄ›rem myÅ¡i" + +#: src/slic3r/GUI/MainFrame.cpp:806 src/slic3r/GUI/MainFrame.cpp:870 +msgid "Select configuration to load:" +msgstr "Zvolte konfiguraci k naÄtení:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2834 +msgid "Select extruder number for selected objects and/or parts" +msgstr "Vyberte Äíslo extruderu pro vybrané objekty a / nebo Äásti" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2847 +msgid "Select extruder number:" +msgstr "Vyberte Äíslo extruderu:" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +msgid "Select Filament Settings Tab" +msgstr "Zobrazit panel Nastavení filamentu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:127 +msgid "Select multiple object/Move multiple object" +msgstr "Vybrat více objektů/PÅ™esunout více objektů" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1251 +msgid "Select new extruder for the object/part" +msgstr "Vyberte nový extruder pro objekt/Äást" + +#: xs/src/slic3r/GUI/ConfigWizard.cpp:109 +msgid "Select none" +msgstr "OdznaÄit vÅ¡e" + +#: lib/Slic3r/GUI/MainFrame.pm:308 +msgid "Select P&rint Settings Tab\tCtrl+2" +msgstr "Zobrazit panel Nastavení tisku\tCtrl+2" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +msgid "Select Plater Tab" +msgstr "Zobrazit panel Podložka" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +msgid "Select Print Settings Tab" +msgstr "Zobrazit panel Nastavení tisku" + +#: lib/Slic3r/GUI/MainFrame.pm:314 +msgid "Select Print&er Settings Tab\tCtrl+4" +msgstr "Zobrazit panel Nastavení tiskárny\tCtrl+4" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 +msgid "Select Printer Settings Tab" +msgstr "Zobrazit panel Nastavení tiskárny" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:917 +msgid "Select showing settings" +msgstr "Zvolte nastavení zobrazení " + +#: src/slic3r/GUI/GUI_App.cpp:524 +msgid "Select the language" +msgstr "VýbÄ›r jazyka" + +#: src/slic3r/GUI/Tab.cpp:57 +msgid "Select the print profiles this profile is compatible with." +msgstr "Vyberte tiskové profily, s nimiž je tento profil kompatibilní." + +#: src/slic3r/GUI/Tab.cpp:51 +msgid "Select the printers this profile is compatible with." +msgstr "Vyberte tiskárny, s nimiž je tento profil kompatibilní." + +#: src/slic3r/GUI/MainFrame.cpp:744 +msgid "Select the STL file to repair:" +msgstr "Vyberte STL soubor k opravÄ›:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2545 +msgid "Select type of part" +msgstr "Vyberte typ souÄásti" + +#: src/slic3r/GUI/Plater.cpp:421 +msgid "Select what kind of support do you need" +msgstr "Vyberte typ podpÄ›r, které potÅ™ebujete" + +#: src/slic3r/GUI/MainFrame.cpp:444 +msgid "Selects all objects" +msgstr "Vybrat vÅ¡echny objekty" + +#: src/slic3r/GUI/Plater.cpp:3822 +msgid "Send G-code" +msgstr "Odeslat G-code" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:33 +msgid "Send G-Code to printer" +msgstr "Odeslat G-code do tiskárny" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Send G-Code to printer host" +msgstr "Odeslat G-Code do tiskového serveru" + +#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3822 +msgid "Send to printer" +msgstr "Odeslat do tiskárny" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:111 lib/Slic3r/GUI/Plater.pm:1558 +msgid "Sending G-code file to the OctoPrint server..." +msgstr "Odesílání souboru G-code na server OctoPrint…" + +#: src/slic3r/GUI/Tab.cpp:1169 +msgid "Sequential printing" +msgstr "SekvenÄní tisk" + +#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1591 +msgid "Serial port" +msgstr "Sériový port" + +#: src/libslic3r/PrintConfig.cpp:1599 +msgid "Serial port speed" +msgstr "Rychlost sériového portu" + +#: src/slic3r/GUI/FirmwareDialog.cpp:769 +msgid "Serial port:" +msgstr "Sériový port:" + +#: src/slic3r/GUI/BonjourDialog.cpp:74 +msgid "Service name" +msgstr "Název služby" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1192 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 +msgid "Set as a Separated Object" +msgstr "ZmÄ›nit na oddÄ›lený objekt" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1331 +msgid "Set as a Separated Objects" +msgstr "PÅ™evést na oddÄ›lené objekty" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2833 +msgid "Set extruder for selected items" +msgstr "Zvolte extruder pro vybrané položky" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:185 +msgid "Set lower thumb to current slider thumb" +msgstr "Aktivovat spodní ukazatel aktivního posuvníku" + +#: src/slic3r/GUI/Plater.cpp:2901 +msgid "Set number of copies" +msgstr "Zadat poÄet kopií" + +#: lib/Slic3r/GUI/Plater.pm:2224 +msgid "Set number of copies…" +msgstr "Zadat poÄet kopií…" + +#: src/libslic3r/PrintConfig.cpp:1053 +msgid "Set silent mode for the G-code flavor" +msgstr "Nastavit pÅ™iznak G-codu pro tichý režim" + +#: src/libslic3r/PrintConfig.cpp:2228 +msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." +msgstr "Nastavte skuteÄnou orientaci LCD displeje uvnitÅ™ SLA tiskárny. Režim Orientace na výšku pÅ™evrátí význam parametrů šířky a výšky a výstupní obrazy budou otoÄeny o 90 stupňů." + +#: src/slic3r/GUI/ConfigWizard.cpp:527 +msgid "Set the shape of your printer's bed." +msgstr "Nastavte tvar a rozmÄ›ry vaší tiskové podložky." + +#: src/libslic3r/PrintConfig.cpp:524 +msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." +msgstr "Nastavením kladné hodnoty povolíte manuální šířku extruze. Pokud je hodnota ponechána na nule, Slic3r odvozuje šířku extruze z průmÄ›ru trysky (viz nápovÄ›dy pro šířku extruze perimetru, šířku extruze výplnÄ› apod.). Pokud je hodnota vyjádÅ™ena procenty (například: 230%), vypoÄítá se z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:417 +msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." +msgstr "Nastavením na kladnou hodnotu, definuje šířku manuální extruze pro vnÄ›jší obvod. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průmÄ›r trysky 1,125 x. Pokud je hodnota vyjádÅ™ena jako procento (například 200%), vypoÄítá se podle výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:831 +msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." +msgstr "Nastavením kladné hodnoty zvolíte manuální šířku vytlaÄování pro první vrstvu. Toto můžete použít k vytlaÄování tlustší extruze pro lepší pÅ™ilnavost. Pokud je vyjádÅ™eno jako procenty (například 120%), bude vypoÄteno z výšky první vrstvy. Pokud je nastavena na nulu, použije se výchozí šířka vytlaÄování." + +#: src/libslic3r/PrintConfig.cpp:1689 +msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálnÄ› šířku extruze pro výplň plných povrchů. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průmÄ›r trysky 1,125 x. Pokud je vyjádÅ™ena procenty (například 90%), bude vypoÄtena z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:2019 +msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálnÄ› šířku extruze pro výplň vrchních ploch. Možná budete chtít použít tenÄí extruzi, abyste vyplnili vÅ¡echny úzké oblasti a získali hladší povrch. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průmÄ›r trysky. Pokud je vyjádÅ™ena procenty (například 90%), bude vypoÄtena z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:963 +msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Nastavením kladné hodnoty upravíte manuálnÄ› šířku extruze pro výplň. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průmÄ›r trysky 1,125 x. Je možné, že budete chtít použít tlustší extruze, pro zrychlení výplnÄ› a zpevnÄ›ní vaÅ¡ich výtisků. Pokud je vyjádÅ™eno jako procenty (například 90%), bude vypoÄteno z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1350 +msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." +msgstr "Nastavením na kladnou hodnotu nastavíte manuálnÄ› šířku vytlaÄování perimetrů. Chcete-li získat pÅ™esnÄ›jší povrchy, můžete použít tenÄí extruze. Pokud je ponechána nula, použije se standardní šířka extruze, pokud je nastavena, jinak se použije průmÄ›r trysky 1,125 x. Pokud je vyjádÅ™eno procenty (například 200%), vypoÄte se z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1862 +msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." +msgstr "Zadejte kladnou hodnotu, chcete-li nastavit manuálnÄ› šířku extruze pro podpÄ›ry. Pokud je ponechána nula, použije se výchozí šířka extruze, pokud je nastavena, jinak se použije průmÄ›r trysky. Pokud je vyjádÅ™ena procenty (například 90%), bude vypoÄtena z výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:480 +msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." +msgstr "Zadejte horizontální rádius kolizního prostoru okolo extruderu. Pokud tryska není v centru tohoto rádiusu, zvolte nejdelší vzdálenost. Toto nastavení slouží ke kontrole kolizí a zobrazení grafického náhledu na podložce." + +#: src/libslic3r/PrintConfig.cpp:65 +msgid "Set this to the maximum height that can be reached by your extruder while printing." +msgstr "Nastavte tuto hodnotu na maximální výšku, která může být dosažena extruderem bÄ›hem tisku." + +#: src/libslic3r/PrintConfig.cpp:469 +msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." +msgstr "Zadejte vertikální vzdálenost mezi tryskou a (obvykle) tyÄemi osy X. Jinými slovy, je to výška kolizního prostoru okolo extruderu a pÅ™edstavuje maximální hloubku, které může extruder dosáhnout pÅ™ed kolizí s jinými, již vytiÅ¡tÄ›nými, objekty." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:184 +msgid "Set upper thumb to current slider thumb" +msgstr "Aktivovat horní ukazatel aktivního posuvníku" + +#: src/slic3r/GUI/BedShapeDialog.cpp:143 +msgid "Settings" +msgstr "Nastavení" + +#: lib/Slic3r/GUI/Plater.pm:264 lib/Slic3r/GUI/Plater.pm:279 +#: lib/Slic3r/GUI/Plater.pm:2300 +msgid "Settings…" +msgstr "Nastavení…" + +#: src/slic3r/GUI/BedShapeDialog.cpp:60 +msgid "Shape" +msgstr "Tvar" + +#: src/slic3r/GUI/GUI_Preview.cpp:246 +msgid "Shells" +msgstr "Skořápky" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 +msgid "Shift + Left (+ drag) - select point(s)" +msgstr "Shift + Levé tlaÄítko (klik nebo tažení) - výbÄ›r bodu(ů)" + +#: src/slic3r/GUI/GUI_Preview.cpp:221 +msgid "Show" +msgstr "Zobrazit" + +#: src/slic3r/GUI/MainFrame.cpp:559 +msgid "Show &Configuration Folder" +msgstr "Otevřít adresář nastavení" + +#: src/slic3r/GUI/MainFrame.cpp:563 +msgid "Show about dialog" +msgstr "Zobrazit okno o Slic3ru" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +msgid "Show advanced settings" +msgstr "Zobrazit rozšířená nastavení" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:158 +msgid "Show error message" +msgstr "Zobrazit chybovou hlášku" + +#: src/slic3r/GUI/Preferences.cpp:84 +msgid "Show incompatible print and filament presets" +msgstr "Zobrazit nekompatibilní pÅ™ednastavení tisku a filamentu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 +msgid "Show keyboard shortcuts list" +msgstr "Zobrazit pÅ™ehled klávesových zkratek" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 +msgid "Show simplified settings" +msgstr "Zobrazit jednoduché nastavení" + +#: src/slic3r/GUI/MainFrame.cpp:557 +msgid "Show system information" +msgstr "Zobrazit systémové informace" + +#: src/slic3r/GUI/MainFrame.cpp:487 +msgid "Show the 3D editing view" +msgstr "Zobrazit 3D editaci" + +#: src/slic3r/GUI/MainFrame.cpp:489 +msgid "Show the 3D slices preview" +msgstr "Zobrazit 3D náhled vrstev" + +#: src/slic3r/GUI/MainFrame.cpp:480 +msgid "Show the filament settings" +msgstr "Zobrazit nastavení filamentu" + +#: src/libslic3r/PrintConfig.cpp:2983 +msgid "Show the full list of print/G-code configuration options." +msgstr "Zobrazit kompletní seznam možností konfigurace tisku / G-codu." + +#: src/libslic3r/PrintConfig.cpp:2988 +msgid "Show the full list of SLA print configuration options." +msgstr "Zobrazit kompletní seznam možností konfigurace SLA tisku." + +#: src/slic3r/GUI/MainFrame.cpp:566 +msgid "Show the list of the keyboard shortcuts" +msgstr "Zobrazit seznam klávesových zkratek" + +#: src/slic3r/GUI/MainFrame.cpp:471 +msgid "Show the plater" +msgstr "Zobrazit podložku" + +#: src/slic3r/GUI/MainFrame.cpp:478 +msgid "Show the print settings" +msgstr "Zobrazit nastavení tisku" + +#: lib/Slic3r/GUI/MainFrame.pm:300 +msgid "Show the printer controller" +msgstr "Zobrazit ovladaÄ tiskárny" + +#: src/slic3r/GUI/MainFrame.cpp:483 +msgid "Show the printer settings" +msgstr "Zobrazit nastavení tiskárny" + +#: src/libslic3r/PrintConfig.cpp:2977 +msgid "Show this help." +msgstr "Zobrazí tuto nápovÄ›du." + +#: src/slic3r/GUI/MainFrame.cpp:559 +msgid "Show user configuration folder (datadir)" +msgstr "Zobrazit uživatelský adresář konfigurace (datadir)" + +#: src/slic3r/GUI/Tab.cpp:2157 +msgid "Silent" +msgstr "Tichý" + +#: src/slic3r/GUI/Plater.cpp:1077 +msgid "silent mode" +msgstr "tichý režim" + +#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/wxExtensions.cpp:2459 +msgid "Simple" +msgstr "Jednoduchý" + +#: src/slic3r/GUI/GUI_App.cpp:674 +msgid "Simple View Mode" +msgstr "Jednoduchý režim" + +#: src/slic3r/GUI/Tab.cpp:2231 src/slic3r/GUI/Tab.cpp:2239 +msgid "Single extruder MM setup" +msgstr "Nastavení jednoho extruderu MM" + +#: src/libslic3r/PrintConfig.cpp:1767 +msgid "Single Extruder Multi Material" +msgstr "MultiMaterial tisk s jedním extrudérem" + +#: src/slic3r/GUI/Tab.cpp:2240 +msgid "Single extruder multimaterial parameters" +msgstr "Parametry jednoho multi materiálového extruderu" + +#: src/slic3r/GUI/BedShapeDialog.cpp:72 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:153 src/slic3r/GUI/Plater.cpp:137 +#: src/slic3r/GUI/Tab.cpp:2257 +msgid "Size" +msgstr "RozmÄ›r" + +#: src/slic3r/GUI/Tab.cpp:1813 src/slic3r/GUI/Tab.cpp:2014 +msgid "Size and coordinates" +msgstr "RozmÄ›ry a poÄátek" + +#: src/slic3r/GUI/BedShapeDialog.cpp:73 +msgid "Size in X and Y of the rectangular plate." +msgstr "RozmÄ›r obdélníkové tiskové podložky v ose X a Y." + +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1050 +#: src/libslic3r/GCode/PreviewData.cpp:171 +msgid "Skirt" +msgstr "Obrys" + +#: src/slic3r/GUI/Tab.cpp:1049 +msgid "Skirt and brim" +msgstr "Obrys a límec" + +#: src/libslic3r/PrintConfig.cpp:1617 +msgid "Skirt height" +msgstr "Výška obrysu" + +#: src/libslic3r/PrintConfig.cpp:1626 +msgid "Skirt Loops" +msgstr "PoÄet obrysových smyÄek" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1200 +msgid "SLA gizmo keyboard shortcuts" +msgstr "Klávesové zkratky pro SLA gizma" + +#: src/slic3r/GUI/Plater.cpp:684 src/slic3r/GUI/Preset.cpp:1277 +msgid "SLA material" +msgstr "SLA materiál" + +#: src/slic3r/GUI/Plater.cpp:683 src/slic3r/GUI/Preset.cpp:1276 +msgid "SLA print" +msgstr "SLA tisk" + +#: src/libslic3r/PrintConfig.cpp:2331 +msgid "SLA print material notes" +msgstr "Poznámky pro SLA materiál" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:995 +msgid "SLA Support Points [L]" +msgstr "SLA PodpÄ›rné Body [L]" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +msgid "Slab" +msgstr "Deska" + +#: src/slic3r/GUI/MainFrame.cpp:470 +msgid "Slic3r &Manual" +msgstr "Slic3r návod" + +#: src/slic3r/GUI/MainFrame.cpp:468 +msgid "Slic3r &Website" +msgstr "Slic3r &Webová stránka" + +#: src/libslic3r/PrintConfig.cpp:1268 +msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." +msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole musí obsahovat druh tiskového serveru." + +#: src/libslic3r/PrintConfig.cpp:89 +msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." +msgstr "Slic3r může nahrát soubory do tiskového serveru. Toto pole by mÄ›lo obsahovat klÃ­Ä API požadovaný pro ověření." + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." +msgstr "Slic3r může nahrát soubory G-code do tiskového serveru. Toto pole by mÄ›lo obsahovat název serveru (hostname), IP adresu nebo URL tiskového serveru." + +#: xs/src/libslic3r/PrintConfig.cpp:1110 +msgid "Slic3r can upload G-code files to OctoPrint. This field should contain the API Key required for authentication." +msgstr "Slic3r může nahrát soubory G-code do OctoPrintu. Toto pole by mÄ›lo obsahovat klÃ­Ä API požadovaný pro ověření." + +#: xs/src/libslic3r/PrintConfig.cpp:1124 +msgid "Slic3r can upload G-code files to OctoPrint. This field should contain the hostname, IP address or URL of the OctoPrint instance." +msgstr "Slic3r může nahrát soubory G-code do OctoPrintu. Toto pole by mÄ›lo obsahovat název hosta (hostname), IP adresu nebo URL instance OctoPrint." + +#: src/slic3r/GUI/UpdateDialogs.cpp:111 +msgid "Slic3r configuration is incompatible" +msgstr "Konfigurace Slic3ru není kompatibilní" + +#: lib/Slic3r/GUI/Plater.pm:1021 +msgid "Slic3r Error" +msgstr "Chyba Slic3ru" + +#: src/slic3r/GUI/MsgDialog.cpp:71 +msgid "Slic3r error" +msgstr "Chyba Slic3ru" + +#: src/slic3r/GUI/MsgDialog.cpp:71 +msgid "Slic3r has encountered an error" +msgstr "DoÅ¡lo k chybÄ› Slic3ru" + +#: src/slic3r/GUI/UpdateDialogs.cpp:111 +msgid "Slic3r incompatibility" +msgstr "Nekompatibilita Slic3ru" + +#: src/slic3r/GUI/UpdateDialogs.cpp:168 +#, possible-c-format +msgid "Slic3r PE now uses an updated configuration structure.\n\nSo called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\nAn inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n\nPlease proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." +msgstr "Slic3r PE nyní používá aktualizovanou konfiguraÄní strukturu.\n\nByly uvedeny takzvaná \"Systémová pÅ™ednastavení\", která obsahují výchozí nastavení pro rozliÄné tiskárny. Tato systémová pÅ™ednastavení nemohou být upravena, místo toho si nyní uživatel může vytvoÅ™it svá vlastní pÅ™ednastavení tím, že zdÄ›dí nastavení z jednoho ze systémových pÅ™ednastavení.\nNovÄ› vytvoÅ™ené pÅ™ednastavení může buÄ zdÄ›dit urÄitou hodnotu od svého pÅ™edchůdce nebo ji pÅ™epsat upravenou hodnotou.\n\nProsím postupujte dle %s, který následuje pro nastavení nových pÅ™ednastavení a vyberte si, zdali chcete jejich automatickou aktualizaci." + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 +msgid "Slic3r Prusa Edition - Keyboard Shortcuts" +msgstr "Slic3r Prusa Edition - Klávesové zkratky" + +#: src/slic3r/GUI/SysInfoDialog.cpp:44 +msgid "Slic3r Prusa Edition - System Information" +msgstr "Slic3r Prusa Edition - Systémové informace" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +msgid "slic3r version" +msgstr "verze slic3ru" + +#: src/slic3r/GUI/GUI_App.cpp:623 +msgid "Slic3r View Mode" +msgstr "Režim zobrazení Slic3ru" + +#: src/libslic3r/PrintConfig.cpp:1234 +msgid "Slic3r will not scale speed down below this speed." +msgstr "Slic3r nebude mÄ›nit rychlost pod tuto rychlost." + +#: src/libslic3r/PrintConfig.cpp:2970 +msgid "Slice" +msgstr "Slicovat" + +#: src/slic3r/GUI/MainFrame.cpp:383 +msgid "Slice a file into a G-code" +msgstr "Slicovat soubor do G-code" + +#: src/slic3r/GUI/MainFrame.cpp:389 +msgid "Slice a file into a G-code, save as" +msgstr "Slicovat soubor do G-code, uložit jako" + +#: lib/Slic3r/GUI/MainFrame.pm:251 +msgid "Slice file to a multi-layer SVG" +msgstr "Slicovat soubor do více-vrstvého SVG" + +#: src/libslic3r/PrintConfig.cpp:71 +msgid "Slice gap closing radius" +msgstr "PolomÄ›r uzavÅ™ení mezery v tiskové vrstvÄ›" + +#: src/slic3r/GUI/Plater.cpp:734 src/slic3r/GUI/Plater.cpp:2412 +#: src/slic3r/GUI/Plater.cpp:3618 +msgid "Slice now" +msgstr "Slicovat" + +#: src/libslic3r/PrintConfig.cpp:2944 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "Naslicuje model a exportuje SLA tiskové vrstvy jako PNG soubory." + +#: src/libslic3r/PrintConfig.cpp:2965 +msgid "Slice the model and export toolpaths as G-code." +msgstr "Naslicujte model a exportujte cesty jako G-code." + +#: src/libslic3r/PrintConfig.cpp:2971 +msgid "Slice the model as FFF or SLA based on the printer_technology configuration value." +msgstr "Slicovat model jako FFF nebo SLA tisk na základÄ› konfiguraÄní hodnoty printer_technology." + +#: lib/Slic3r/GUI/MainFrame.pm:251 +msgid "Slice to SV&G…\tCtrl+G" +msgstr "Slicovat do SV&G…\tCtrl+G" + +#: src/slic3r/GUI/Plater.cpp:193 +msgid "Sliced Info" +msgstr "Informace o slicování" + +#: src/slic3r/GUI/MainFrame.cpp:704 src/slic3r/GUI/Plater.cpp:2412 +#: src/slic3r/GUI/Plater.cpp:3615 src/slic3r/GUI/Tab.cpp:1159 +#: src/slic3r/GUI/Tab.cpp:3436 +msgid "Slicing" +msgstr "Slicování" + +#: lib/Slic3r/GUI/Plater.pm:1391 +msgid "Slicing cancelled" +msgstr "Slicování zruÅ¡eno" + +#: src/libslic3r/SLAPrint.cpp:1459 +msgid "Slicing done" +msgstr "Slicování dokonÄeno" + +#: src/slic3r/GUI/MainFrame.cpp:729 +msgid "Slicing Done!" +msgstr "Slicování dokonÄeno!" + +#. TRN To be shown at the status bar on SLA slicing error. +#: src/libslic3r/SLAPrint.cpp:709 +msgid "Slicing had to be stopped due to an internal error." +msgstr "Slicování muselo být zastaveno kvůli vnitÅ™ní chybÄ›." + +#: src/libslic3r/SLAPrint.cpp:55 +msgid "Slicing model" +msgstr "Slicovaný model" + +#: src/libslic3r/SLAPrint.cpp:59 +msgid "Slicing supports" +msgstr "Slicování podpÄ›r" + +#: lib/Slic3r/GUI/MainFrame.pm:483 +msgid "Slicing…" +msgstr "Slicování…" + +#: src/libslic3r/PrintConfig.cpp:2249 +msgid "Slow" +msgstr "Pomalý" + +#: src/libslic3r/PrintConfig.cpp:1635 +msgid "Slow down if layer print time is below" +msgstr "Zpomalit tisk pokud je doba tisku kratší než" + +#: src/libslic3r/PrintConfig.cpp:2250 +msgid "Slow tilt" +msgstr "Pomalý náklon" + +#: src/libslic3r/PrintConfig.cpp:1646 +msgid "Small perimeters" +msgstr "Malé perimetry" + +#: src/slic3r/GUI/GUI_App.cpp:697 +msgid "Snapshot name" +msgstr "Název zálohy" + +#: src/slic3r/GUI/PresetHints.cpp:181 +msgid "solid infill" +msgstr "plná výplň" + +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1687 +#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/GCode/PreviewData.cpp:167 +msgid "Solid infill" +msgstr "Plná výplň" + +#: src/libslic3r/PrintConfig.cpp:1675 +msgid "Solid infill every" +msgstr "Plná výplň každou" + +#: src/libslic3r/PrintConfig.cpp:1667 +msgid "Solid infill extruder" +msgstr "Extruder pro plnou výplň" + +#: src/libslic3r/PrintConfig.cpp:1658 +msgid "Solid infill threshold area" +msgstr "Prahová hodnota plochy pro plnou výplň" + +#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1710 +msgid "Solid layers" +msgstr "Plných vrstev" + +#: src/libslic3r/PrintConfig.cpp:1832 +msgid "soluble" +msgstr "rozpustný" + +#: src/libslic3r/PrintConfig.cpp:711 +msgid "Soluble material" +msgstr "Rozpustný materiál" + +#: src/libslic3r/PrintConfig.cpp:712 +msgid "Soluble material is most likely used for a soluble support." +msgstr "Rozpustný materiál je pÅ™evážnÄ› používán pro tisk rozpustných podpÄ›r." + +#: src/libslic3r/PrintConfig.cpp:889 +msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents Slic3r from exporting any extrusion value at all." +msgstr "NÄ›které příkazy G/M code, vÄetnÄ› řízení teploty a jiné, nejsou univerzální. Vyberte typ firmwaru který používá vaÅ¡e tiskárna pro dosažení kompatibilního výstupu. Příkazy typu “No extrusion†zabraňují Slic3ru zcela exportovat jakoukoliv hodnotu extruze." + +#: src/slic3r/GUI/GLCanvas3D.cpp:721 +msgid "Some objects are not visible when editing supports" +msgstr "NÄ›které objekty nejsou pÅ™i úpravách podpÄ›r viditelné" + +#: src/libslic3r/Print.cpp:1162 +msgid "Some objects are too close; your extruder will collide with them." +msgstr "NÄ›které objekty jsou příliÅ¡ blízko; Extruder do nich narazí." + +#: src/libslic3r/Print.cpp:1177 +msgid "Some objects are too tall and cannot be printed without extruder collisions." +msgstr "NÄ›které objekty jsou příliÅ¡ vysoké a nelze je tisknout bez kolizí extruderu." + +#: src/libslic3r/PrintConfig.cpp:2548 +msgid "Some objects can get along with a few smaller pads instead of a single big one. This parameter defines how far the center of two smaller pads should be. If theyare closer, they will get merged into one pad." +msgstr "NÄ›které objekty mohou být na nÄ›kolika menších podložkách namísto jedné velké. Tento parametr definuje, jak daleko může být stÅ™ed dvou menších podložek. Pokud budou blíže, budou slouÄeny do jedné podložky." + +#: src/libslic3r/PrintConfig.cpp:2086 +msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." +msgstr "NÄ›které tiskárny nebo nastavení tiskárny mohou mít potíže s tiskem s promÄ›nnou výškou vrstvy. Ve výchozím nastavení je zapnuto." + +#: src/libslic3r/PrintConfig.cpp:1897 +msgid "Spacing between interface lines. Set zero to get a solid interface." +msgstr "RozteÄ linií kontaktních vrstev. Nastavte nulu pro získání plných kontaktních vrstev." + +#: src/libslic3r/PrintConfig.cpp:1931 +msgid "Spacing between support material lines." +msgstr "RozteÄ linií podpÄ›r." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:512 +#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1084 +#: src/libslic3r/PrintConfig.cpp:199 src/libslic3r/PrintConfig.cpp:426 +#: src/libslic3r/PrintConfig.cpp:871 src/libslic3r/PrintConfig.cpp:999 +#: src/libslic3r/PrintConfig.cpp:1361 src/libslic3r/PrintConfig.cpp:1598 +#: src/libslic3r/PrintConfig.cpp:1647 src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:2029 +msgid "Speed" +msgstr "Rychlost" + +#: src/libslic3r/PrintConfig.cpp:1600 +msgid "Speed (baud) of USB/serial port for printer connection." +msgstr "Rychlost (baud) USB/sériového portu pro pÅ™ipojení tiskárny." #: src/libslic3r/GCode/PreviewData.cpp:400 msgid "Speed (mm/s)" msgstr "Rychlost (mm/s)" +#: src/libslic3r/PrintConfig.cpp:872 +msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." +msgstr "Rychlost plnÄ›ní malých mezer pomocí krátkých cikcak pohybů. Udržujte tuto hodnotu pomÄ›rnÄ› nízkou, aby nedoÅ¡lo k příliÅ¡ným otÅ™esům a problémům s rezonancí. Nastavte nulu pro vypnutí vyplnÄ›ní mezery." + +#: src/slic3r/GUI/Tab.cpp:1097 +msgid "Speed for non-print moves" +msgstr "Netiskové rychlosti" + +#: src/libslic3r/PrintConfig.cpp:1362 +msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." +msgstr "Rychlost pro perimetry (obrysy, neboli svislé stÄ›ny). Zadejte nulu pro automatické nastavení." + +#: src/slic3r/GUI/Tab.cpp:1085 +msgid "Speed for print moves" +msgstr "Rychlosti pohybů tiskárny" + +#: src/libslic3r/PrintConfig.cpp:200 +msgid "Speed for printing bridges." +msgstr "Rychlost pro vytváření mostů." + +#: src/libslic3r/PrintConfig.cpp:1699 +msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." +msgstr "Rychlost tisku plných oblastí (vrchní / spodní / vnitÅ™ní vodorovné stÄ›ny). Může být vyjádÅ™eno procenty (například: 80%) oproti výchozí rychlosti vyplnÄ›ní. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:1906 +msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." +msgstr "Rychlost tisku podpÄ›rných interface vrstev. Pokud je vyjádÅ™en procentní podíl (například 50%), vypoÄítá se podle rychlosti tisku podpÄ›r." + +#: src/libslic3r/PrintConfig.cpp:1940 +msgid "Speed for printing support material." +msgstr "Rychlost tisku podpÄ›r." + +#: src/libslic3r/PrintConfig.cpp:1000 +msgid "Speed for printing the internal fill. Set to zero for auto." +msgstr "Rychlost tisku vnitÅ™ní výplnÄ›. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:2030 +msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." +msgstr "Rychlost tisku vrchních plných vrstev (vztahuje se pouze na nejvyšší horní vrstvy a nikoli na jejich vnitÅ™ní plné vrstvy). Rychlost lze zpomalit, abyste získali hezÄí povrchovou úpravu. Může být vyjádÅ™ena procenty (například: 80%) z rychlosti plné výplnÄ› materiálu výše. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:2052 +msgid "Speed for travel moves (jumps between distant extrusion points)." +msgstr "Rychlost posunů (pÅ™ejezdy mezi body extruze)." + +#: src/libslic3r/PrintConfig.cpp:627 +msgid "Speed of the first cooling move" +msgstr "Rychlost prvního pohybu chlazení" + +#: src/libslic3r/PrintConfig.cpp:646 +msgid "Speed of the last cooling move" +msgstr "Rychlost posledního pohybu chlazení" + +#: src/libslic3r/PrintConfig.cpp:584 +msgid "Speed used at the very beginning of loading phase. " +msgstr "Rychlost použitá na samém poÄátku zavádÄ›cí fáze" + +#: src/libslic3r/PrintConfig.cpp:576 +msgid "Speed used for loading the filament on the wipe tower. " +msgstr "Rychlost použitá pro zavádÄ›ní filamentu na Äistící věž. " + +#: src/libslic3r/PrintConfig.cpp:592 +msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming). " +msgstr "Rychlost vysouvání filamentu pÅ™i výmÄ›nÄ› na Äistící věži (úvodní Äást vysunutí okamžitÄ› po rapidní extruzi není ovlivnÄ›na). " + +#: src/libslic3r/PrintConfig.cpp:601 +msgid "Speed used for unloading the tip of the filament immediately after ramming. " +msgstr "Rychlost použitá pÅ™i vysouvání Å¡piÄky filamentu bezprostÅ™ednÄ› po rapidní extruzi." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1055 +msgid "Sphere" +msgstr "Koule" + +#: src/slic3r/GUI/Tab.cpp:1254 +msgid "Spiral Vase" +msgstr "Spirálová váza" + +#: src/libslic3r/PrintConfig.cpp:1717 +msgid "Spiral vase" +msgstr "Spirálová váza" + +#: src/slic3r/GUI/Plater.cpp:2971 src/slic3r/GUI/Plater.cpp:2988 +#: src/slic3r/GUI/Plater.cpp:3008 src/libslic3r/PrintConfig.cpp:3082 +msgid "Split" +msgstr "RozdÄ›lit" + +#: src/slic3r/GUI/Plater.cpp:2971 +msgid "Split the selected object" +msgstr "RozdÄ›lit vybraný objekt" + +#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:2988 +msgid "Split the selected object into individual objects" +msgstr "RozdÄ›lit vybraný objekt na jednotlivé objekty" + +#: lib/Slic3r/GUI/Plater.pm:2293 +msgid "Split the selected object into individual parts" +msgstr "RozdÄ›lit vybraný objekt na jednotlivé Äásti" + +#: src/slic3r/GUI/Plater.cpp:2968 src/slic3r/GUI/Plater.cpp:3008 +msgid "Split the selected object into individual sub-parts" +msgstr "RozdÄ›lit vybraný objekt na jednotlivé dílÄí Äásti" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1110 +msgid "Split to parts" +msgstr "RozdÄ›lit na Äásti" + +#: src/libslic3r/PrintConfig.cpp:799 +msgid "Stars" +msgstr "HvÄ›zdy" + +#: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949 +#: src/libslic3r/PrintConfig.cpp:1736 src/libslic3r/PrintConfig.cpp:1751 +msgid "Start G-code" +msgstr "ZaÄátek G-code" + +#: src/slic3r/GUI/MainFrame.cpp:403 +msgid "Start new slicing process" +msgstr "Zahájit nový slicovací proces" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:35 +msgid "Start printing after upload" +msgstr "Spustit tisk po nahrání" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2153 +msgid "Starting" +msgstr "SpuÅ¡tÄ›ní" + +#: src/slic3r/GUI/FirmwareDialog.cpp:782 +msgid "Status:" +msgstr "Stav:" + +#: lib/Slic3r/GUI/Plater.pm:1659 lib/Slic3r/GUI/Plater.pm:1701 +msgid "STL file exported to " +msgstr "Soubor STL byl exportován do " + +#: src/slic3r/GUI/Plater.cpp:3545 +#, possible-c-format +msgid "STL file exported to %s" +msgstr "Soubor STL exportován do %s" + +#: src/slic3r/GUI/Tab.cpp:1716 src/slic3r/GUI/Tab.cpp:1901 +msgid "Success!" +msgstr "ÚspÄ›ch!" + +#: src/slic3r/GUI/PresetHints.cpp:200 +msgid "support" +msgstr "podpÄ›ry" + +#: xs/src/slic3r/GUI/GUI.cpp:859 +msgid "Support" +msgstr "PodpÄ›ra" + +#: src/libslic3r/PrintConfig.cpp:2441 +msgid "Support base diameter" +msgstr "PrůmÄ›r podpÄ›rné základny" + +#: src/libslic3r/PrintConfig.cpp:2451 +msgid "Support base height" +msgstr "Výška podpÄ›rné základny" + +#: src/slic3r/GUI/Tab.cpp:1316 +msgid "Support Generator" +msgstr "Generátor PodpÄ›r" + +#: src/slic3r/GUI/Tab.cpp:3401 +msgid "Support head" +msgstr "Hrot podpÄ›ry" + +#: src/libslic3r/PrintConfig.cpp:2369 +msgid "Support head front diameter" +msgstr "Délka hrotu podpÄ›ry" + +#: src/libslic3r/PrintConfig.cpp:2378 +msgid "Support head penetration" +msgstr "Průnik podpÄ›ry do modelu" + +#: src/libslic3r/PrintConfig.cpp:2387 +msgid "Support head width" +msgstr "Tloušťka hrotu podpÄ›ry" + +#: src/slic3r/GUI/PresetHints.cpp:210 +msgid "support interface" +msgstr "kontaktní vrstva podpÄ›r" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70 +#: src/slic3r/GUI/GUI_ObjectList.cpp:511 src/slic3r/GUI/GUI_Preview.cpp:236 +#: src/slic3r/GUI/Tab.cpp:1059 src/slic3r/GUI/Tab.cpp:1060 +#: src/libslic3r/PrintConfig.cpp:334 src/libslic3r/PrintConfig.cpp:1432 +#: src/libslic3r/PrintConfig.cpp:1780 src/libslic3r/PrintConfig.cpp:1786 +#: src/libslic3r/PrintConfig.cpp:1794 src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:1824 +#: src/libslic3r/PrintConfig.cpp:1839 src/libslic3r/PrintConfig.cpp:1860 +#: src/libslic3r/PrintConfig.cpp:1871 src/libslic3r/PrintConfig.cpp:1887 +#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:1916 src/libslic3r/PrintConfig.cpp:1930 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1939 +#: src/libslic3r/PrintConfig.cpp:1948 src/libslic3r/PrintConfig.cpp:1956 +#: src/libslic3r/PrintConfig.cpp:1970 src/libslic3r/GCode/PreviewData.cpp:172 +msgid "Support material" +msgstr "PodpÄ›ry" + +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1904 +#: src/libslic3r/GCode/PreviewData.cpp:173 +msgid "Support material interface" +msgstr "Kontaktní vrstvy podpÄ›r" + +#: src/libslic3r/PrintConfig.cpp:1957 +msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." +msgstr "PodpÄ›ry nebudou vytvoÅ™eny pro pÅ™evisy, jejichž úhel sklonu (90° = vertikální) je nad danou prahovou hodnotou. Jinými slovy, tato hodnota pÅ™edstavuje nejvÄ›tší horizontální sklon (měřený od horizontální roviny), který můžete tisknout bez podpÄ›rného materiálu. Nastavte na nulu pro automatickou detekci (doporuÄeno)." + +#: src/libslic3r/PrintConfig.cpp:1877 +msgid "Support material/raft interface extruder" +msgstr "Extruder pro kontaktní podpÄ›ry/raft" + +#: src/libslic3r/PrintConfig.cpp:1851 +msgid "Support material/raft/skirt extruder" +msgstr "Extruder pro podpÄ›ry/raft/obrys" + +#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1815 +#: src/libslic3r/PrintConfig.cpp:2423 +msgid "Support on build plate only" +msgstr "Pouze na tiskové podložce" + +#: src/slic3r/GUI/Tab.cpp:3406 +msgid "Support pillar" +msgstr "PodpÄ›rný pilíř" + +#: src/libslic3r/PrintConfig.cpp:2407 +msgid "Support pillar connection mode" +msgstr "Propojení podpÄ›r" + +#: src/libslic3r/PrintConfig.cpp:2397 +msgid "Support pillar diameter" +msgstr "Tloušťka podpÄ›ry" + +#: src/libslic3r/PrintConfig.cpp:2499 +msgid "Support points density" +msgstr "Hustota podpÄ›rných bodů" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:888 +msgid "Support points density: " +msgstr "Hustota podpÄ›rných bodů:" + +#: xs/src/libslic3r/PrintConfig.cpp:896 +msgid "Support silent mode" +msgstr "Podpora tichého režimu" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:519 +#: src/slic3r/GUI/Plater.cpp:418 src/slic3r/GUI/Tab.cpp:3397 +#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2363 +#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379 +#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398 +#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2431 +#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452 +#: src/libslic3r/PrintConfig.cpp:2461 src/libslic3r/PrintConfig.cpp:2471 +#: src/libslic3r/PrintConfig.cpp:2480 src/libslic3r/PrintConfig.cpp:2490 +#: src/libslic3r/PrintConfig.cpp:2500 src/libslic3r/PrintConfig.cpp:2508 +msgid "Supports" +msgstr "PodpÄ›ry" + +#: src/slic3r/GUI/Plater.cpp:1018 +msgid "supports and pad" +msgstr "podpÄ›ry a podložka" + +#: src/libslic3r/PrintConfig.cpp:1043 +msgid "Supports remaining times" +msgstr "Podpora zbývajících tiskových Äasů" + +#: src/libslic3r/PrintConfig.cpp:1052 +msgid "Supports silent mode" +msgstr "Podporuje tichý režim" + +#: src/slic3r/GUI/Tab.cpp:1313 +msgid "Supports work better, if the following feature is enabled:\n- Detect bridging perimeters\n\nShall I adjust those settings for supports?" +msgstr "PodpÄ›ry fungují lépe, pokud je povolena následující funkce:\n- Zjistit pÅ™emosÅ¥ovací perimetry\n\nMám tyto nastavení pro podpÄ›ry upravit?" + +#: src/slic3r/GUI/Preferences.cpp:76 +msgid "Suppress \" - default - \" presets" +msgstr "PotlaÄit “ - výchozí - “ pÅ™ednastavení" + +#: src/slic3r/GUI/Preferences.cpp:78 +msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." +msgstr "PotlaÄit “ - výchozí - “ pÅ™ednastavení v nabídkách Tisk / Filament / Tiskárna, jakmile budou k dispozici další platné pÅ™edvolby." + +#: src/slic3r/GUI/MainFrame.cpp:677 +msgid "SVG" +msgstr "SVG" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +msgid "Switch to 3D" +msgstr "PÅ™epnout do 3D" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1242 +msgid "Switch to editing mode" +msgstr "PÅ™epnout do režimu editace" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +msgid "Switch to Preview" +msgstr "PÅ™epnout do náhledu" + +#: src/slic3r/GUI/wxExtensions.cpp:2412 +#, possible-c-format +msgid "Switch to the %s mode" +msgstr "PÅ™epnout do režimu %s" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 +msgid "Switching to simple settings will discard changes done in the advanced mode!\n\nDo you want to proceed?" +msgstr "PÅ™epnutím do jednoduchého nastavení ztratíte zmÄ›ny provedené v pokroÄilém režimu!\n\nOpravdu chcete pokraÄovat?" + +#: src/libslic3r/PrintConfig.cpp:1949 +msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." +msgstr "Synchronizování vrstev podpÄ›r s vrstvami objektu. Toto je velmi užiteÄné u multi-materiálových tiskáren, kde je pÅ™epínání extruderů drahé." + +#: src/libslic3r/PrintConfig.cpp:1947 +msgid "Synchronize with object layers" +msgstr "Synchronizovat s vrstvami objektu" + +#: src/slic3r/GUI/MainFrame.cpp:557 +msgid "System &Info" +msgstr "&Informace o systému" + +#: lib/Slic3r/GUI/MainFrame.pm:355 +msgid "System Info" +msgstr "Informace o systému" + +#: src/slic3r/GUI/SysInfoDialog.cpp:44 +msgid "System Information" +msgstr "Systémové informace" + +#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:970 +#: src/slic3r/GUI/Preset.cpp:1035 src/slic3r/GUI/Preset.cpp:1067 +#: src/slic3r/GUI/PresetBundle.cpp:1488 src/slic3r/GUI/PresetBundle.cpp:1553 +msgid "System presets" +msgstr "Systémová pÅ™ednastavení" + +#: src/slic3r/GUI/GUI_App.cpp:662 +msgid "Take Configuration &Snapshot" +msgstr "Prové&st Zálohu Konfigurace" + +#: xs/src/slic3r/GUI/GUI.cpp:350 +msgid "Take Configuration Snapshot" +msgstr "Provést Zálohu Konfigurace" + +#: src/slic3r/GUI/GUI_App.cpp:697 +msgid "Taking configuration snapshot" +msgstr "Ukládání zálohy nastavení" + +#: src/slic3r/GUI/Tab.cpp:1478 +msgid "Temperature " +msgstr "Teplota " + +#: src/libslic3r/PrintConfig.cpp:1980 +msgid "Temperature" +msgstr "Teplota" + +#: src/libslic3r/PrintConfig.cpp:1727 +msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." +msgstr "Teplotní rozdíl, který se použije v případÄ›, že extruder není aktivní. Umožňuje “obÄ›tní†obrysy v plné výšce objektu, na kterém jsou trysky periodicky oÄiÅ¡tÄ›ny." + +#: src/libslic3r/PrintConfig.cpp:1726 +msgid "Temperature variation" +msgstr "Kolísání teploty" + +#: src/slic3r/GUI/ConfigWizard.cpp:592 +msgid "Temperatures" +msgstr "Teploty" + +#: src/slic3r/GUI/Tab.cpp:1700 src/slic3r/GUI/Tab.cpp:1888 +msgid "Test" +msgstr "Test" + +#: src/slic3r/GUI/FirmwareDialog.cpp:530 +#, possible-c-format +msgid "The %s device could not have been found" +msgstr "Zařízení %s nebylo nalezeno" + +#: src/slic3r/GUI/FirmwareDialog.cpp:417 +#, possible-c-format +msgid "The %s device was not found.\nIf the device is connected, please press the Reset button next to the USB connector ..." +msgstr "Zařízení %s nebylo nalezeno. Pokud je zařízení pÅ™ipojeno, stisknÄ›te tlaÄítko Reset vedle USB konektoru ..." + +#: src/libslic3r/PrintConfig.cpp:2462 +msgid "The default angle for connecting support sticks and junctions." +msgstr "Výchozí úhel pro pÅ™ipojení nosných tyÄí a spojek." + +#: src/libslic3r/PrintConfig.cpp:457 +msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." +msgstr "Extruder, který chcete použít (pokud nejsou zvoleny specifiÄtÄ›jší nastavení extruderu). Tato hodnota pÅ™epíše nastavení perimetrového a výplňového exrtuderu, ale ne nastavení extruderu pro podpÄ›ry." + +#: src/libslic3r/PrintConfig.cpp:955 +msgid "The extruder to use when printing infill." +msgstr "Extruder který se použije pro tisk výplní." + +#: src/libslic3r/PrintConfig.cpp:1341 +msgid "The extruder to use when printing perimeters and brim. First extruder is 1." +msgstr "Extruder, který se používá pÅ™i tisku perimetrů a límce. První extruder je 1." + +#: src/libslic3r/PrintConfig.cpp:1669 +msgid "The extruder to use when printing solid infill." +msgstr "Extruder který bude použit pÅ™i tisku plných výplní." + +#: src/libslic3r/PrintConfig.cpp:1879 +msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." +msgstr "Extruder, který se použije pÅ™i tisku kontaktních vrstev podpÄ›r (1+, 0 pro použití aktuálního extruderu, aby se minimalizovaly zmÄ›ny nástroje). To ovlivňuje i raft." + +#: src/libslic3r/PrintConfig.cpp:1853 +msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." +msgstr "Extruder, který se používá pÅ™i tisku podpÄ›r, raftu a obrysu (1+, 0 pro použití aktuálního extruderu pro co nejménÄ› zmÄ›n nástroje)." + +#: src/libslic3r/PrintConfig.cpp:695 +msgid "The filament material type for use in custom G-codes." +msgstr "Typ filamentu pro použití ve vlastních G-code." + +#: src/libslic3r/PrintConfig.cpp:3105 +msgid "The file where the output will be written (if not specified, it will be based on the input file)." +msgstr "Soubor, do kterého bude zapisován výstup (pokud není zadán, bude vycházet ze vstupního souboru)." + +#: src/libslic3r/PrintConfig.cpp:351 +msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." +msgstr "První vrstva bude v rovinÄ› XY zmenÅ¡ena nakonfigurovanou hodnotou, která kompenzuje rozplácnutí první vrstvy." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2726 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2813 src/slic3r/GUI/Tab.cpp:3279 +msgid "the following characters are not allowed:" +msgstr "následující znaky nejsou povolené:" + +#: src/slic3r/GUI/Tab.cpp:3283 +msgid "the following postfix are not allowed:" +msgstr "následující postfixy nejsou povolené:" + +#: src/libslic3r/PrintConfig.cpp:2453 +msgid "The height of the pillar base cone" +msgstr "Výška ukotvení podpÄ›rného kužele" + +#: src/libslic3r/PrintConfig.cpp:2481 +msgid "The max distance of two pillars to get linked with each other. A zero value will prohibit pillar cascading." +msgstr "Maximální vzdálenost dvou podpůrných pilířů pro vzájemné provázání. Nulová hodnota zakáže provazování." + +#: src/libslic3r/PrintConfig.cpp:2472 +msgid "The max length of a bridge" +msgstr "Maximální délka pÅ™emostÄ›ní." + +#: src/libslic3r/PrintConfig.cpp:2176 +msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." +msgstr "Objekt bude roztažen / smrÅ¡tÄ›n v rovinÄ› XY nastavenou hodnotou (negativní = smÄ›rem dovnitÅ™, pozitivní = smÄ›rem ven). To může být užiteÄné pro jemné doladÄ›ní otvorů." + +#: src/libslic3r/PrintConfig.cpp:1433 +msgid "The object will be raised by this number of layers, and support material will be generated under it." +msgstr "Objekt se zvýší tímto poÄtem vrstev a pod ním bude vytvoÅ™en podpůrný materiál." + +#: src/libslic3r/PrintConfig.cpp:2259 +msgid "The percentage of the bed area. \nIf the print area exceeds the specified value, \nthen a slow tilt will be used, otherwise - a fast tilt" +msgstr "ProcentuálnÄ› vyjádÅ™ená zabraná tisková plocha.\nPokud tisk zabere více než je zadaná hodnota,\nbude použit pomalý náklon. V ostatních případech bude použit rychlý náklon." + +#: src/libslic3r/PrintConfig.cpp:1768 +msgid "The printer multiplexes filaments into a single hot end." +msgstr "Tiskárna pÅ™epíná nÄ›kolik filamentů v jednou hot endu." + +#: src/slic3r/GUI/BedShapeDialog.cpp:342 +msgid "The selected file contains no geometry." +msgstr "Vybraný soubor neobsahuje geometrii." + +#: src/slic3r/GUI/BedShapeDialog.cpp:346 +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "Vybraný soubor obsahuje nÄ›kolik nespojených ploch. Tato možnost není podporována." + +#: src/slic3r/GUI/Plater.cpp:2271 +msgid "The selected object can't be split because it contains more than one volume/material." +msgstr "Vybraný objekt nemůže být rozdÄ›len, protože obsahuje více než jeden objem/materiál." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1737 src/slic3r/GUI/Plater.cpp:2279 +msgid "The selected object couldn't be split because it contains only one part." +msgstr "Vybraný objekt nemůže být rozdÄ›len, protože obsahuje pouze jednu Äást." + +#: src/libslic3r/PrintConfig.cpp:2570 +msgid "The slope of the pad wall relative to the bed plane. 90 degrees means straight walls." +msgstr "Sklon boÄnic vzhledem k podložce. 90 stupňů znamená kolmé stÄ›ny." + +#: src/libslic3r/PrintConfig.cpp:1544 +msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." +msgstr "Rychlost vtlaÄení filamentu do extruderu po retrakci (vztahuje se pouze na motor extruderu). Pokud je ponecháno na nulu, použije se rychlost retrakce." + +#: src/libslic3r/PrintConfig.cpp:1536 +msgid "The speed for retractions (it only applies to the extruder motor)." +msgstr "Rychlost retrakce (toto nastavení platí pouze pro motor extruderu)." + +#: src/slic3r/GUI/Tab.cpp:1247 +#, no-c-format +msgid "The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- no ensure_vertical_shell_thickness\n\nShall I adjust those settings in order to enable Spiral Vase?" +msgstr "Mód spirálové vázy vyžaduje:\n- jeden perimetr\n- žádné plné vrchní vrstvy\n- 0% hustota výplnÄ›\n- žádné podpÄ›ry\n- nezjišťování vertikální tloušťky pláštÄ›\n\nMám tyto nastavení upravit tak, aby bylo možné mód spirálové vázy zapnout?" + +#: src/libslic3r/Print.cpp:1187 +msgid "The Spiral Vase option can only be used when printing a single object." +msgstr "Možnost \"Spirálová váza\" lze použít pouze pÅ™i tisku jednoho objektu." + +#: src/libslic3r/Print.cpp:1189 +msgid "The Spiral Vase option can only be used when printing single material objects." +msgstr "Možnost \"Spirálová váza\" lze použít pouze pÅ™i tisku jedním materiálem." + +#: src/slic3r/GUI/Tab.cpp:2900 +msgid "The supplied name is empty. It can't be saved." +msgstr "Název je prázdný. Nelze uložit." + +#: src/slic3r/GUI/Tab.cpp:3287 +msgid "The supplied name is not available." +msgstr "Zadaný název není dostupný." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2812 src/slic3r/GUI/Tab.cpp:3278 +#: src/slic3r/GUI/Tab.cpp:3282 +msgid "The supplied name is not valid;" +msgstr "Zadaný název není platný;" + +#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1785 +msgid "The supplied name is not valid; the following characters are not allowed:" +msgstr "Zadaný název je neplatný; následující znaky nejsou povoleny:" + +#: src/libslic3r/Print.cpp:1268 +msgid "The supplied settings will cause an empty print." +msgstr "Zadané nastavení způsobí prázdný tisk." + +#: src/libslic3r/PrintConfig.cpp:2524 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "Tloušťka podložky a její volitelné duté stÄ›ny." + +#: src/libslic3r/PrintConfig.cpp:1825 +msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." +msgstr "Vertikální vzdálenost mezi objektem a podpÄ›rami. Nastavením tohoto parametru na hodnotu 0 se také zabrání tomu, aby Slic3r použil parametry průtoku a rychlosti pro mosty pÅ™i tisku první vrstvy objektu." + +#: src/slic3r/GUI/Tab.cpp:2429 +msgid "The Wipe option is not available when using the Firmware Retraction mode.\n\nShall I disable it in order to enable Firmware Retraction?" +msgstr "Možnost OÄistit není k dispozici pÅ™i použití režimu retrakcí z firmwaru.\n\nMám ji deaktivovat, aby bylo možné povolit retrakce z firmwaru?" + +#: src/slic3r/GUI/Tab.cpp:1277 +msgid "The Wipe Tower currently supports the non-soluble supports only\nif they are printed with the current extruder without triggering a tool change.\n(both support_material_extruder and support_material_interface_extruder need to be set to 0).\n\nShall I adjust those settings in order to enable the Wipe Tower?" +msgstr "ÄŒistící věž v souÄasné dobÄ› podporuje pouze nerozpustné podpÄ›ry\npokud jsou vytiÅ¡tÄ›ny s aktuálním extrudérem bez spuÅ¡tÄ›ní výmÄ›ny nástroje.\n(jak extruder pro tisk podpÄ›r tak extruder pro tisk kontaktních podpÄ›r je tÅ™eba nastavit na 0).\n\nMám tyto nastavení upravit tak, aby bylo možné zapnout ÄŒistící věž?" + +#: src/libslic3r/Print.cpp:1306 +msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." +msgstr "ÄŒistící věž v souÄasné dobÄ› podporuje pouze nerozpustné podpÄ›ry\npokud jsou vytiÅ¡tÄ›ny s aktuálním extrudérem bez spuÅ¡tÄ›ní výmÄ›ny nástroje.\n(jak extruder pro tisk podpor tak extruder pro tisk kontaktních podpÄ›r je tÅ™eba nastavit na 0)." + +#: xs/src/libslic3r/Print.cpp:617 +msgid "The Wipe Tower is currently only supported for the Marlin and RepRap/Sprinter G-code flavors." +msgstr "ÄŒistící věž je v souÄasné dobÄ› možná pouze pro G-cody urÄené pro Marlin a RepRap/Sprinter." + +#: src/libslic3r/Print.cpp:1200 +msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." +msgstr "ÄŒistící věž je v souÄasné dobÄ› možná pouze pro G-cody urÄené pro Marlin, RepRap/Sprinter a Repetier." + +#: src/libslic3r/Print.cpp:1202 +msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." +msgstr "ÄŒistící věž je v souÄasné dobÄ› možná pouze v případÄ› relativního adresování exruderu (use_relative_e_distances=1)." + +#: src/libslic3r/Print.cpp:1225 +msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" +msgstr "ÄŒistící věž pro více objektů je možná pouze v případÄ›, že objekty mají stejný poÄet raft vrstev" + +#: src/libslic3r/Print.cpp:1227 +msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" +msgstr "ÄŒistící věž pro více objektů je možná pouze v případÄ›, že objekty mají shodný parametr support_material_contact_distance." + +#: src/libslic3r/Print.cpp:1229 +msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." +msgstr "ÄŒistící věž je pÅ™i více objektech možná pouze v případÄ›, že objekty jsou slicovány stejnÄ›." + +#: src/libslic3r/Print.cpp:1223 +msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heigths" +msgstr "ÄŒistící věž je pÅ™i více objektech možná pouze v případÄ›, že objekty mají vÅ¡echny vrstvy stejné výšky." + +#: src/libslic3r/Print.cpp:1258 +msgid "The Wipe tower is only supported if all objects have the same layer height profile" +msgstr "ÄŒistící věž je podporována pouze v případÄ›, že vÅ¡echny objekty mají stejný výškový profil" + +#: src/slic3r/GUI/UpdateDialogs.cpp:127 +#, possible-c-format +msgid "This %s version: %s" +msgstr "Tento %s verze: %s" + +#: src/libslic3r/PrintConfig.cpp:140 +msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." +msgstr "Tento kód je vložen mezi objekty, pokud je použit sekvenÄní tisk. Ve výchozím nastavení je resetován extruder a tisková podložka pomocí non-wait (neÄekacím) příkazem; nicménÄ› pokud jsou příkazy M104, M109, 140 nebo M190 detekovány v tomto vlastním kódu, Slic3r nebude pÅ™idávat teplotní příkazy. Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru, takže můžete vložit příkaz “M109 S[first_layer_temperature]†kamkoliv chcete." + +#: src/libslic3r/PrintConfig.cpp:1032 +msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." +msgstr "Tento vlastní kód je vložen pÅ™i každé zmÄ›nÄ› vrstvy, hned po pohybu Z a pÅ™edtím, než se extruder pÅ™esune na první bod vrstvy. Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru, stejnÄ› tak jako [layer_num] a [layer_z]." + +#: src/libslic3r/PrintConfig.cpp:129 +msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." +msgstr "Tento vlastní kód je vložen pro každou zmÄ›nu vrstvy, pÅ™edtím než se pohne Z. Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru stejnÄ› tak jako [layer_num] a [layer_z]." + +#: src/libslic3r/PrintConfig.cpp:2007 +msgid "This custom code is inserted right before every extruder change. Note that you can use placeholder variables for all Slic3r settings as well as [previous_extruder] and [next_extruder]." +msgstr "Tento vlastní kód je vložen tÄ›snÄ› pÅ™ed každou zmÄ›nou extruderu. Můžete použít zástupné promÄ›nné pro vÅ¡echna nastavení Slic3ru, stejnÄ› jako [previous_extruder] a [next_extruder]." + +#: src/libslic3r/PrintConfig.cpp:370 +msgid "This end procedure is inserted at the end of the output file, before the printer end gcode. Note that you can use placeholder variables for all Slic3r settings. If you have multiple extruders, the gcode is processed in extruder order." +msgstr "Tato ukonÄovací procedura je vložena na konec výstupního souboru, pÅ™ed koneÄným G-code tiskárny. Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru. Pokud máte tiskárnu s více extrudery, G-code je zpracován v poÅ™adí extruderů." + +#: src/libslic3r/PrintConfig.cpp:360 +msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all Slic3r settings." +msgstr "Tato ukonÄovací procedura je vložena na konec výstupního souboru. Můžete pÅ™idávat zástupné promÄ›nné pro veÅ¡keré nastavení Slic3ru." + +#: src/libslic3r/PrintConfig.cpp:1193 src/libslic3r/PrintConfig.cpp:1204 +msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." +msgstr "Toto experimentální nastavení se používá k omezení rychlosti zmÄ›ny objemového průtoku. Hodnota 1,8mm³/s² zajišťuje, že zmÄ›na objemového průtoku z 1,8 mm³/s (šířka extruze 0,45 mm, výška extruze 0,2 mm, rychlost posuvu 20 mm/s) na 5,4 mm³/s (rychlost posuvu 60 mm/s) potrvá nejménÄ› 2 sekundy." + +#: src/libslic3r/PrintConfig.cpp:1183 +msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." +msgstr "Toto experimentální nastavení slouží k nastavení maximální objemové rychlosti, kterou váš extruder podporuje." + +#: src/libslic3r/PrintConfig.cpp:2061 +msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." +msgstr "Toto experimentální nastavení používá příkazy G10 a G11, aby si firmware poradil s retrakcí. Toto je podporováno pouze v posledních verzích firmwaru Marlin." + +#: src/libslic3r/PrintConfig.cpp:2075 +msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." +msgstr "Toto experimentální nastavení používá výstupní hodnoty E v kubických milimetrech místo lineárních milimetrů. Pokud firmware dosud nezná průmÄ›r (průmÄ›ry) filamentu, můžete v poÄáteÄním G-code zadat příkazy jako “M200 D [filament_diameter_0] T0â€, pro se zapnutí volumetrického režimu a použití průmÄ›ru filamentu pÅ™idruženého k vybranému filamentu ve Slic3ru. Toto je podporováno pouze v posledních verzích firmwaru Marlin." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2848 +msgid "This extruder will be set for selected items" +msgstr "Tento extruder bude nastaven pro vybrané položky" + +#: src/libslic3r/PrintConfig.cpp:188 +msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." +msgstr "Tato hodnota urÄuje množství vytlaÄeného plastu pÅ™i vytváření mostů. Mírným snížením této hodnoty můžete pÅ™edejít pronášení i když, pÅ™ednastavené hodnoty jsou vÄ›tÅ¡inou dobré a je lepší experimentovat s chlazením (využitím ventilátoru), než s touto hodnotou." + +#: src/libslic3r/PrintConfig.cpp:514 +msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." +msgstr "Tento faktor mÄ›ní pomÄ›rné množství průtoku. Možná bude tÅ™eba toto nastavení vyladit, pro dosažení hezkého povrchu a správné šířky jednotlivých stÄ›n. Obvyklé hodnoty jsou mezi 0,9 a 1,1. Pokud si myslíte, že hodnotu potÅ™ebujete zmÄ›nit více, zkontrolujte průmÄ›r filamentu a E kroky ve firmwaru." + +#: src/libslic3r/PrintConfig.cpp:178 +msgid "This fan speed is enforced during all bridges and overhangs." +msgstr "Nastavená rychlost ventilátoru je využita vždy pÅ™i vytváření mostů a pÅ™esahů." + +#: src/libslic3r/PrintConfig.cpp:944 +msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." +msgstr "Tato funkce umožňuje kombinovat výplň a urychlit tisk pomocí extruzí silnÄ›jších výplňových vrstev pÅ™i zachování tenkých obvodů, a tím i pÅ™esnosti." + +#: src/libslic3r/PrintConfig.cpp:1677 +msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." +msgstr "Tato funkce umožňuje vynucení plné vrstvy za každý daný poÄet vrstev. Pro vypnutí nastavte nulu. Můžete nastavit libovolnou hodnotu (například 9999); Slic3r automaticky zvolí maximální poÄet vrstev, které se budou kombinovat podle průmÄ›ru trysky a výšky vrstvy." + +#: src/libslic3r/PrintConfig.cpp:1718 +msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." +msgstr "Tato funkce zvýší postupnÄ› Z pÅ™i tisku jednovrstvého objektu, aby se odstranil jakýkoli viditelný Å¡ev. Tato volba vyžaduje jediný obvod, žádnou výplň, žádné vrchní plné vrstvy a žádný podpůrný materiál. Můžete stále nastavit libovolný poÄet spodních plných vrstev, stejnÄ› jako obrysové smyÄky / límec. PÅ™i tisku více než jednoho objektu nebude toto nastavení fungovat." + +#: src/slic3r/GUI/Plater.cpp:1712 +msgid "This file cannot be loaded in a simple mode. Do you want to switch to an advanced mode?\n" +msgstr "Tento soubor nelze naÄíst v jednoduchém režimu. Chcete pÅ™epnout do pokroÄilého režimu?\n" + +#: src/slic3r/GUI/Plater.cpp:1650 +msgid "This file cannot be loaded in simple mode. Do you want to switch to expert mode?\n" +msgstr "Tento soubor nelze naÄíst v jednoduchém režimu. Chcete pÅ™epnout do expert režimu?\n" + +#: src/slic3r/GUI/Plater.cpp:1658 +msgid "This file contains several objects positioned at multiple heights. Instead of considering them as multiple objects, should I consider\nthis file as a single object having multiple parts?\n" +msgstr "Tento soubor obsahuje nÄ›kolik objektů umístÄ›ných v různých výškách. Mají být vloženy jako jeden objekt obsahující více Äástí,\nnamísto vložení nÄ›kolika objektů?\n" + +#: src/slic3r/GUI/FirmwareDialog.cpp:313 +#, possible-c-format +msgid "This firmware hex file does not match the printer model.\nThe hex file is intended for: %s\nPrinter reported: %s\n\nDo you want to continue and flash this hex file anyway?\nPlease only continue if you are sure this is the right thing to do." +msgstr "Tento hex soubor s firmware neodpovídá modelu tiskárny.\nSoubor hex je urÄen pro: %s\nTiskárna oznámila: %s\n\nChcete i pÅ™esto pokraÄovat a nahrát do tiskárny hex soubor?\nPokraÄujte prosím, pouze pokud jste si jisti, že je to správný soubor." + +#: src/libslic3r/PrintConfig.cpp:278 +msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." +msgstr "Zapne výpoÄet automatického chlazení, který upravuje rychlost tisku a ventilátoru v závislosti na délce tisku jedné vrstvy." + +#: src/slic3r/GUI/Plater.cpp:448 +msgid "This flag enables the brim that will be printed around each object on the first layer." +msgstr "Tato vlajka zapíná límec, který bude vytiÅ¡tÄ›n kolem každého objektu pÅ™i první vrstvÄ›." + +#: src/libslic3r/PrintConfig.cpp:1468 +msgid "This flag enforces a retraction whenever a Z move is done." +msgstr "Tato možnost vyvolá retrakci, kdykoli je proveden pohyb Z." + +#: src/libslic3r/PrintConfig.cpp:2093 +msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." +msgstr "Toto nastavení pÅ™emístí trysku pÅ™i retrakci, aby se minimalizovalo možné vytékání materiálu." + +#: src/libslic3r/PrintConfig.cpp:2501 +msgid "This is a relative measure of support points density." +msgstr "Relativní míra hustoty podpÄ›rných bodů." + +#: src/libslic3r/PrintConfig.cpp:491 src/libslic3r/PrintConfig.cpp:551 +msgid "This is only used in the Slic3r interface as a visual help." +msgstr "Toto je v Slic3ru jako názorná pomoc." + +#: src/libslic3r/PrintConfig.cpp:300 +msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." +msgstr "Toto je hodnota akcelerace na kterou se tiskárna vrátí po specifických úpravách akcelerace například pÅ™i tisku (perimetru/výplnÄ›). Nastavením na nulu zabráníte návratu rychlostí zcela." + +#: src/libslic3r/PrintConfig.cpp:158 +msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." +msgstr "Nastavení akcelerace tiskárny pÅ™i vytváření mostů. Nastavením na nulu vypnete ovládání akcelerace pro mosty." + +#: src/libslic3r/PrintConfig.cpp:813 +msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." +msgstr "Toto je zrychlení, které vaÅ¡e tiskárna použije pro první vrstvu. Nastavte nulu pro vypnutí řízení zrychlení pro první vrstvu." + +#: src/libslic3r/PrintConfig.cpp:934 +msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." +msgstr "Toto je zrychlení, které vaÅ¡e tiskárna použije pro výplň. Nastavte nulu, chcete-li vypnout řízení zrychlení pro výplň." + +#: src/libslic3r/PrintConfig.cpp:1331 +msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." +msgstr "Jedná se o akceleraci, kterou vaÅ¡e tiskárna použije pro perimetry. Vysoká hodnota, jako je 9000, obvykle dává dobré výsledky, pokud je váš hardware v pořádku. Nastavte nulu pro vypnutí řízení zrychlení pro perimetry." + +#: src/libslic3r/PrintConfig.cpp:1262 +msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" +msgstr "PrůmÄ›r trysky extruderu (například: 0.5, 0.35 atd.)" + +#: src/libslic3r/PrintConfig.cpp:1162 +#, no-c-format +msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." +msgstr "Toto je nejvÄ›tší možná výška vrstvy pro tento extruder, který se používá k zakrytí výšky promÄ›nné vrstvy a výšky podpůrné vrstvy. Maximální doporuÄená výška vrstvy Äiní 75% šířky vytlaÄování, aby se dosáhlo pÅ™iměřené pÅ™ilnavosti mezi vrstvami. Pokud je nastavena hodnota 0, je výška vrstvy omezena na 75% průmÄ›ru trysky." + +#: src/libslic3r/PrintConfig.cpp:1225 +msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." +msgstr "Nejmenší tisknutelná výška vrstvy pro tento extruder. Omezuje rozliÅ¡ení pro výšku promÄ›nné vrstvy. Typické hodnoty jsou mezi 0,05 mm a 0,1 mm." + +#: src/libslic3r/PrintConfig.cpp:2114 +msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools. " +msgstr "Tato matice popisuje objemy (v kubických milimetrech) nutné k vyÄiÅ¡tÄ›ní nového filamentu na Äistící věži pro danou dvojici nástrojů. " + +#: src/libslic3r/PrintConfig.cpp:1372 +msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." +msgstr "Tato volba nastavuje poÄet perimetrů, které je tÅ™eba vygenerovat pro každou vrstvu. Slic3r může toto Äíslo automaticky zvýšit, pokud detekuje Å¡ikmé plochy, které se tisknou lépe s vyšším poÄtem obvodů, pokud je zapnuta možnost Extra perimetry." + +#: src/libslic3r/PrintConfig.cpp:1287 +msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." +msgstr "Tato volba sníží teplotu neaktivních extruderů, aby u nich nedoÅ¡lo k vytékání." + +#: src/libslic3r/PrintConfig.cpp:980 +msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." +msgstr "Tato volba omezuje výplň na plochy skuteÄnÄ› potÅ™ebné pro podpÄ›ru stropů (bude se chovat jako vnitÅ™ní podpÄ›rný materiál). Je-li tato volba zapnuta, zpomaluje generování G-code kvůli nÄ›kolikanásobným kontrolám." + +#: src/libslic3r/PrintConfig.cpp:973 +msgid "This option will switch the print order of perimeters and infill, making the latter first." +msgstr "Tato volba obrátí poÅ™adí tisku obvodů a výplní." + +#: src/libslic3r/PrintConfig.cpp:427 +msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." +msgstr "Toto oddÄ›lené nastavení ovlivní rychlost tisku vnÄ›jších perimetrů (tÄ›ch viditelných). Pokud je hodnota vyjádÅ™ena procenty (například: 80%), bude rychlost vypoÄítána z hodnoty rychlosti tisku perimetrů, nastavené výše. Nastavte nulu pro automatický výpoÄet." + +#: src/libslic3r/PrintConfig.cpp:1648 +msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." +msgstr "Toto oddÄ›lené nastavení ovlivní rychlost perimetrů o polomÄ›ru <= 6,5 mm (obvykle díry). Pokud je vyjádÅ™eno jako procentní podíl (například: 80%), vypoÄte se z výše uvedeného nastavení rychlosti perimetrů. Pro automatické nastavení zadejte nulu." + +#: src/libslic3r/PrintConfig.cpp:989 +msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." +msgstr "Toto nastavení uplatňuje dodateÄné pÅ™ekrytí mezi výplní a obvodem pro lepší spojení. Teoreticky by to nemÄ›lo být potÅ™eba, ale reakce by mohla způsobit mezery. Pokud je vyjádÅ™eno procenty (například: 15%), vypoÄítá se z šířky extruze perimetrů." + +#: src/libslic3r/PrintConfig.cpp:57 +msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." +msgstr "Toto nastavení řídí výšku (a tedy výsledný poÄet) Å™ezů/vrstev. TenÄí vrstva poskytuje lepší pÅ™esnost, ale tiskne se déle." + +#: src/libslic3r/PrintConfig.cpp:1153 +msgid "This setting represents the maximum speed of your fan." +msgstr "Toto nastavení vyjadÅ™uje maximální rychlost ventilátoru." + +#: src/libslic3r/PrintConfig.cpp:1216 +msgid "This setting represents the minimum PWM your fan needs to work." +msgstr "Toto nastavení pÅ™edstavuje minimální hodnotu PWM, kterou ventilátor potÅ™ebuje, aby pracoval." + +#: src/slic3r/GUI/UpdateDialogs.cpp:123 +#, possible-c-format +msgid "This Slic3r PE version: %s" +msgstr "Tato verze Slic3r PE: %s" + +#: src/libslic3r/PrintConfig.cpp:1752 +msgid "This start procedure is inserted at the beginning, after any printer start gcode. This is used to override settings for a specific filament. If Slic3r detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." +msgstr "Tento postup spuÅ¡tÄ›ní je vložen na zaÄátku, po každém spuÅ¡tÄ›ní G-code tiskárny. Toto slouží k pÅ™epsání nastavení pro konkrétní filament. Pokud Slic3r detekuje M104, M109, M140 nebo M190 ve vaÅ¡ich vlastních kódech, takové příkazy nebudou automaticky pÅ™edkládány, takže máte možnost pÅ™izpůsobit poÅ™adí příkazů k ohÅ™evu a další vlastní akce. Pro vÅ¡echny nastavení Slic3ru můžete použít zástupné promÄ›nné, takže můžete zadat příkaz “M109 S [first_layer_temperature]†kdekoli chcete. Pokud máte více extruderů, G-code se zpracovává v poÅ™adí extruderů." + +#: src/libslic3r/PrintConfig.cpp:1737 +msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If Slic3r detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." +msgstr "Tento spouÅ¡tÄ›cí postup je vložen na zaÄátku, poté, co vyhřívaná tisková podložka dosáhla cílové teploty a extruder se právÄ› zaÄal ohřívat a pÅ™edtím, než dosáhl cílové teploty extruder. Pokud Slic3r detekuje M104 nebo M190 ve vaÅ¡ich vlastních kódech, takové příkazy nebudou automaticky pÅ™edkládány, takže máte možnost upravit poÅ™adí příkazů pro vytápÄ›ní a další vlastní akce. Pro vÅ¡echny nastavení Slic3ru můžete použít zástupné promÄ›nné, takže můžete zadat příkaz “M109 S [first_layer_temperature]†kdekoli chcete." + +#: src/libslic3r/PrintConfig.cpp:663 +msgid "This string is edited by RammingDialog and contains ramming specific parameters " +msgstr "This string is edited by RammingDialog and contains ramming specific parameters " + +#: src/libslic3r/PrintConfig.cpp:2185 +msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." +msgstr "Tato hodnota bude pÅ™idána (nebo odeÄtena) ze vÅ¡ech souÅ™adnic Z ve výstupním G-code. Používá se ke kompenzování Å¡patné pozice endstopu Z. Například pokud endstop 0 skuteÄnÄ› ponechá trysku 0,3 mm daleko od tiskové podložky, nastavte hodnotu -0,3 (nebo dolaÄte svůj koncový doraz)." + +#: src/libslic3r/PrintConfig.cpp:2107 +msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below. " +msgstr "Tento vektor ukládá potÅ™ebné objemy pro zmÄ›nu z/na každý extruder používaný na Äistící věži. Tyto hodnoty jsou použity pro zjednoduÅ¡ení vytvoÅ™ení celkových objemů ÄiÅ¡tÄ›ní níže. " + +#: src/slic3r/GUI/UpdateDialogs.cpp:118 +#, possible-c-format +msgid "This version of %s is not compatible with currently installed configuration bundles.\nThis probably happened as a result of running an older %s after using a newer one.\n\nYou may either exit %s and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s.\n" +msgstr "Tato verze %s není kompatibilní se souÄasnÄ› nainstalovanými balíÄky nastavení.\nTato situace nejspíše nastala spuÅ¡tÄ›ním starší verze %s po používání novÄ›jší verze.\n\nMůžete buÄ ukonÄit %s a zkusit to znovu s novou verzí, nebo můžete znovu spustit výchozí konfiguraci. PÅ™ed instalací kompatibilního nastavení s touto verzí %s dojde k vytvoÅ™ení zálohy souÄasné konfigurace.\n" + +#: src/slic3r/GUI/UpdateDialogs.cpp:114 +msgid "This version of Slic3r PE is not compatible with currently installed configuration bundles.\nThis probably happened as a result of running an older Slic3r PE after using a newer one.\n\nYou may either exit Slic3r and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this Slic3r.\n" +msgstr "Tato verze Slic3r PE není kompatibilní se souÄasnÄ› nainstalovanými balíÄky nastavení.\nTato situace nejspíše nastala spuÅ¡tÄ›ním starší verze Slic3r PE po používání novÄ›jší verze.\n\nMůžete buÄ ukonÄit Slic3r a zkusit to znovu s novou verzí, nebo můžete znovu spustit výchozí konfiguraci. PÅ™ed instalací kompatibilního nastavení s touto verzí Slic3ru dojde k vytvoÅ™ení zálohy souÄasné konfigurace.\n" + +#: src/libslic3r/PrintConfig.cpp:2282 +msgid "This will apply a gamm correction to the rasterized 2D polygons." +msgstr "Aplikuje korekci gamma na rastrové 2D polygony." + +#: src/libslic3r/PrintConfig.cpp:2284 +msgid "This will apply a gamma correction to the rasterized 2D polygons. A gamma value of zero means thresholding with the threshold in the middle. This behaviour eliminates antialiasing without losing holes in polygons." +msgstr "Aplikuje gamma korekci na rastrové 2D polygony. Hodnota nula znamená nastavení prahové hodnoty doprostÅ™ed. Toto chování eliminuje antialiasing bez ztráty otvorů v polygonech." + +#: src/libslic3r/PrintConfig.cpp:1994 +msgid "Threads" +msgstr "Vlákna" + +#: src/libslic3r/PrintConfig.cpp:1995 +msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." +msgstr "Vlákna jsou používána pro paralelizaci ÄasovÄ› nároÄnÄ›jších úloh. Optimální poÄet vláken je mírnÄ› nad poÄtem dostupných jader/procesorů." + +#: src/slic3r/GUI/Tab.cpp:2052 +msgid "Tilt" +msgstr "Náklon" + +#: src/slic3r/GUI/Tab.cpp:2053 +msgid "Tilt time" +msgstr "Doba náklonu" + +#: src/slic3r/GUI/RammingChart.cpp:76 +msgid "Time" +msgstr "ÄŒas" + +#: src/libslic3r/PrintConfig.cpp:655 +msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." +msgstr "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) zavádí nový filament bÄ›hem jeho výmÄ›ny (pÅ™i provádÄ›ní kódu T). Tento Äas je pÅ™idán k celkové dobÄ› tisku pomocí G-code odhadovaÄe tiskového Äasu." + +#: src/libslic3r/PrintConfig.cpp:670 +msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." +msgstr "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) vysouvá filament bÄ›hem jeho výmÄ›ny (pÅ™i provádÄ›ní kódu T). Tento Äas je pÅ™idán k celkové dobÄ› tisku pomocí G-code odhadovaÄe tiskového Äasu." + +#: src/libslic3r/PrintConfig.cpp:2242 +msgid "Time of the fast tilt" +msgstr "Doba trvání rychlého náklonu" + +#: src/libslic3r/PrintConfig.cpp:2251 +msgid "Time of the slow tilt" +msgstr "Doba trvání pomalého náklonu" + +#: src/libslic3r/PrintConfig.cpp:609 +msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions. " +msgstr "Doba Äekání po vysunutí filamentu. Může pomoci ke spolehlivé zmÄ›nÄ› extruderu s flexibilními materiály, které potÅ™ebují více Äasu ke smrÅ¡tÄ›ní na původní rozmÄ›ry. " + +#: src/slic3r/GUI/Tab.cpp:916 +msgid "To do that please specify a new name for the preset." +msgstr "Chcete-li akci provést, prosím nejdříve zadejte nový název pÅ™ednastavení." + +#: src/slic3r/GUI/UpdateDialogs.cpp:37 +msgid "To download, follow the link below." +msgstr "Pro stažení, kliknÄ›te na odkaz níže." + +#: src/slic3r/GUI/Plater.cpp:2966 +msgid "To objects" +msgstr "Objektům" + +#: src/slic3r/GUI/Plater.cpp:2968 +msgid "To parts" +msgstr "Na Äásti" + +#: src/libslic3r/Zipper.cpp:37 +msgid "too many files" +msgstr "příliÅ¡ mnoho souborů" + +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:481 src/slic3r/GUI/GUI_Preview.cpp:537 +#: src/slic3r/GUI/GUI_Preview.cpp:713 src/libslic3r/GCode/PreviewData.cpp:404 +msgid "Tool" +msgstr "Nástroj" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 +msgid "Tool #" +msgstr "Nástroj #" + +#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2006 +msgid "Tool change G-code" +msgstr "G-code pro výmÄ›nu nástroje" + +#: src/slic3r/GUI/Tab.cpp:1530 +msgid "Toolchange parameters with single extruder MM printers" +msgstr "Parametry pÅ™i výmÄ›nÄ› (Multi Material s jedním extruderem)" + +#. TRN To be shown in the main menu View->Top +#: src/slic3r/GUI/MainFrame.cpp:522 +msgid "Top" +msgstr "Shora" + +#: src/libslic3r/PrintConfig.cpp:388 +msgid "Top fill pattern" +msgstr "Vzor výplnÄ› horní vrstvy" + +#: src/slic3r/GUI/PresetHints.cpp:189 +msgid "top solid infill" +msgstr "vrchní plná výplň" + +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2017 +#: src/libslic3r/PrintConfig.cpp:2028 src/libslic3r/GCode/PreviewData.cpp:168 +msgid "Top solid infill" +msgstr "Vrchní plné výplnÄ›" + +#: src/libslic3r/PrintConfig.cpp:2046 +msgid "Top solid layers" +msgstr "Vrchních plných vrstev" + +#: src/slic3r/GUI/MainFrame.cpp:522 +msgid "Top View" +msgstr "Pohled svrchu" + +#: xs/src/libslic3r/PrintConfig.cpp:283 +msgid "Top/bottom fill pattern" +msgstr "Vzor výplnÄ› horní/spodní vrstvy" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 +msgid "Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded." +msgstr "Celkový objem ÄiÅ¡tÄ›ní je spoÄítán jako souÄet dvou hodnot níže v závislosti na tom, které extrudery jsou zavedeny/vyjmuty." + +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +msgid "Total rammed volume" +msgstr "Celkový objem rapidní extruze" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 +msgid "Total ramming time" +msgstr "Celkový Äas rapidní extruze" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 +msgid "Translate" +msgstr "Posunout" + +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2051 +msgid "Travel" +msgstr "Rychloposun" + +#: src/libslic3r/PrintConfig.cpp:798 +msgid "Triangles" +msgstr "Trojúhelníky" + +#: src/libslic3r/PrintConfig.cpp:3059 +msgid "Try to repair any non-manifold meshes (this option is implicitly added whenever we need to slice the model to perform the requested action)." +msgstr "Pokuste se opravit nemanifoldní meshe (tato možnost je implicitnÄ› pÅ™idána vždy, když potÅ™ebujeme Å™ezat model)." + +#: src/libslic3r/PrintConfig.cpp:1397 +msgid "Type of the printer." +msgstr "Typ tiskárny." + +#: src/libslic3r/Zipper.cpp:35 +msgid "undefined error" +msgstr "nedefinovaná chyba" + +#: src/libslic3r/Zipper.cpp:59 +msgid "unexpected decompressed size" +msgstr "neoÄekávaná dekomprimovaná velikost" + +#: lib/Slic3r/GUI/Plater.pm:2264 lib/Slic3r/GUI/Plater.pm:2280 +msgid "Uniformly…" +msgstr "SoumÄ›rně…" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27 +msgid "Unknown" +msgstr "Neznámý" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "DoÅ¡lo k neznámé chybÄ›" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +msgid "unloaded" +msgstr "vyjmuto" + +#: src/libslic3r/PrintConfig.cpp:591 +msgid "Unloading speed" +msgstr "Rychlost vysunutí" + +#: src/libslic3r/PrintConfig.cpp:600 +msgid "Unloading speed at the start" +msgstr "PoÄáteÄní rychlost vysouvání filamentu " + +#: src/slic3r/GUI/Tab.cpp:3105 +msgid "UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system values for the current option group.\nClick to reset all settings for current option group to the system values." +msgstr "Ikona ODEMKNUTÉHO ZÃMKU indikuje, že nÄ›která nastavení byla zmÄ›nÄ›na a nejsou shodná se systémovými hodnotami pro danou skupinu nastavení. KliknÄ›te pro reset vÅ¡ech nastavení aktuální skupiny nastavení na systémové hodnoty." + +#: src/slic3r/GUI/Tab.cpp:3120 +msgid "UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system value.\nClick to reset current value to the system value." +msgstr "Ikona ODEMKNUTÉHO ZÃMKU indikuje, že se hodnota zmÄ›nila a není shodná se systémovou hodnotou.\nKliknÄ›te pro reset souÄasné hodnoty na systémovou hodnotu." + +#: src/slic3r/GUI/Tab.cpp:3067 +msgid "UNLOCKED LOCK;indicates that some settings were changed and are not equal to the system values for the current option group.\nClick the UNLOCKED LOCK icon to reset all settings for current option group to the system values." +msgstr "ODEMKNUTà ZÃMEK;indikuje, že nÄ›která nastavení byla zmÄ›nÄ›na a nejsou shodná se systémovými hodnotami pro danou skupinu nastavení.\nKliknÄ›te na ikonu ODEMKNUTÉHO ZÃMKU pro reset vÅ¡ech nastavení aktuální skupiny nastavení na systémové hodnoty." + +#: src/slic3r/GUI/GUI_Preview.cpp:245 +msgid "Unretractions" +msgstr "Deretrakce" + +#: src/slic3r/GUI/Tab.cpp:2785 +msgid "Unsaved Changes" +msgstr "Neuložené ZmÄ›ny" + +#: src/slic3r/GUI/GUI_App.cpp:790 +msgid "Unsaved Presets" +msgstr "Neuložená pÅ™ednastavení" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:154 +msgid "Unselect gizmo, keep object selection" +msgstr "ZruÅ¡it gizmo, zachovat výbÄ›r objektů" + +#: src/libslic3r/Zipper.cpp:63 +msgid "unsupported central directory size" +msgstr "nepodporovaná velikost centrálního adresáře" + +#: src/libslic3r/Zipper.cpp:43 +msgid "unsupported encryption" +msgstr "nepodporované Å¡ifrování" + +#: src/libslic3r/Zipper.cpp:45 +msgid "unsupported feature" +msgstr "nepodporovaná funkce" + +#: src/libslic3r/Zipper.cpp:41 +msgid "unsupported method" +msgstr "nepodporovaná metoda" + +#: src/libslic3r/Zipper.cpp:53 +msgid "unsupported multidisk archive" +msgstr "nepodporovaný multidisk archiv" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2414 +msgid "Unsupported selection" +msgstr "Nepodporovaný výbÄ›r" + +#: src/libslic3r/GCode/PreviewData.cpp:495 +#, possible-c-format +msgid "up to %.2f mm" +msgstr "do % .2f mm" + +#: src/slic3r/GUI/UpdateDialogs.cpp:30 +msgid "Update available" +msgstr "Je dostupná aktualizace" + +#: src/slic3r/GUI/ConfigWizard.cpp:419 src/slic3r/GUI/Preferences.cpp:69 +msgid "Update built-in Presets automatically" +msgstr "Aktualizovat vestavÄ›né pÅ™ednastavení automaticky" + +#: src/slic3r/GUI/ConfigWizard.cpp:401 +msgid "Updates" +msgstr "Aktualizace" + +#: src/slic3r/GUI/ConfigWizard.cpp:426 +msgid "Updates are never applied without user's consent and never overwrite user's customized settings." +msgstr "Aktualizace nejsou nikdy nainstalovány bez vÄ›domí uživatele a nikdy nepÅ™epíšou upravená uživatelská nastavení." + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +msgid "Upgrade" +msgstr "Aktualizovat" + +#: src/slic3r/GUI/GUI_App.cpp:685 +msgid "Upload a firmware image into an Arduino based printer" +msgstr "Nahrát firmware do tiskárny s Arduinem" + +#: xs/src/slic3r/Utils/OctoPrint.cpp:33 +msgid "Upload to OctoPrint with the following filename:" +msgstr "Nahrát do OctoPrintu s následujícím názvem:" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +msgid "Upload to Printer Host with the following filename:" +msgstr "Nahrát soubor do tiskového serveru se jménem:" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:229 +msgid "Uploading" +msgstr "Nahrávání" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:171 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:173 +msgid "Upper Layer" +msgstr "Vyšší vrstva" + +#: src/slic3r/GUI/Tab.cpp:1873 +msgid "USB/Serial connection" +msgstr "USB/Sériové pÅ™ipojení" + +#: src/libslic3r/PrintConfig.cpp:1592 +msgid "USB/serial port for printer connection." +msgstr "USB/sériový port pro pÅ™ipojení tiskárny." + +#: src/libslic3r/PrintConfig.cpp:2060 +msgid "Use firmware retraction" +msgstr "Použít retrakce z firmwaru" + +#: src/slic3r/GUI/PrintHostDialogs.cpp:42 +msgid "Use forward slashes ( / ) as a directory separator if needed." +msgstr "Pokud je to nutné, použijte pro oddÄ›lení složek lomítko ( / )." + +#: src/slic3r/GUI/Preferences.cpp:93 +msgid "Use legacy OpenGL 1.1 rendering" +msgstr "Použijte historické OpenGL 1.1 vykreslování" + +#: src/libslic3r/PrintConfig.cpp:2515 +msgid "Use pad" +msgstr "Použít podložku" + +#: src/libslic3r/PrintConfig.cpp:2067 +msgid "Use relative E distances" +msgstr "Použít relativní E vzdálenosti" + +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "Use Retina resolution for the 3D scene" +msgstr "Pro 3D scénu použít rozliÅ¡ení Retina" + +#: src/libslic3r/PrintConfig.cpp:508 +msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." +msgstr "Touto volbou nastavíte písmeno osy pÅ™idružené k extruderu tiskárny (obvykle E, ale nÄ›které tiskárny používají A)." + +#: src/libslic3r/PrintConfig.cpp:1807 +msgid "Use this setting to rotate the support material pattern on the horizontal plane." +msgstr "Toto nastavení použijte pro horizontální otoÄení vzoru." + +#: src/libslic3r/PrintConfig.cpp:2074 +msgid "Use volumetric E" +msgstr "Použít volumetrickou hodnotu E" + +#: src/slic3r/GUI/Plater.cpp:214 +msgid "Used Filament (g)" +msgstr "Použito Filamentu (g)" + +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1041 +msgid "Used Filament (m)" +msgstr "Použito Filamentu (m)" + +#: src/slic3r/GUI/Plater.cpp:213 +msgid "Used Filament (mm³)" +msgstr "Použito Filamentu (mm³)" + +#: src/slic3r/GUI/Plater.cpp:1015 +msgid "Used Material (ml)" +msgstr "Použitý materiál (ml)" + +#: src/slic3r/GUI/Plater.cpp:215 +msgid "Used Material (unit)" +msgstr "Použito materiálu (jednotka)" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 +msgid "User" +msgstr "Uživatel" + +#: src/slic3r/GUI/Preset.cpp:974 src/slic3r/GUI/Preset.cpp:1071 +#: src/slic3r/GUI/PresetBundle.cpp:1558 +msgid "User presets" +msgstr "Uživatelská pÅ™ednastavení" + +#: src/libslic3r/Zipper.cpp:93 +msgid "validation failed" +msgstr "Validace selhala" + +#: src/slic3r/GUI/ButtonsDescription.cpp:41 +msgid "Value is the same as the system value" +msgstr "Hodnota je shodná se systémovou hodnotou" + +#: src/slic3r/GUI/ButtonsDescription.cpp:58 +msgid "Value was changed and is not equal to the system value or the last saved preset" +msgstr "Hodnota byla zmÄ›nÄ›na a není shodná se systémovou hodnotou nebo naposled uloženým pÅ™ednastavením" + +#: src/slic3r/GUI/Tab.cpp:2150 +msgid "Values in this column are for Full Power mode" +msgstr "Hodnoty v tomto sloupci jsou urÄeny pro režim plného výkonu (normal režim)" + +#: src/slic3r/GUI/Tab.cpp:2156 +msgid "Values in this column are for Silent mode" +msgstr "Hodnoty v tomto sloupci jsou pro tichý režim" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58 +msgid "variants" +msgstr "varianty" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:921 +msgid "vendor" +msgstr "prodejce" + +#: src/libslic3r/PrintConfig.cpp:880 +msgid "Verbose G-code" +msgstr "Komentáře do G-code" + +#: lib/Slic3r/GUI/MainFrame.pm:66 +msgid "Version " +msgstr "Verze " + +#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:53 +msgid "Version" +msgstr "Verze" + +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 +msgid "version" +msgstr "verze" + +#: src/slic3r/GUI/Tab.cpp:1002 +msgid "Vertical shells" +msgstr "Svislé stÄ›ny" + +#: src/slic3r/GUI/GUI_Preview.cpp:209 +msgid "View" +msgstr "Zobrazení" + +#: src/libslic3r/SLAPrint.cpp:857 src/libslic3r/SLAPrint.cpp:867 +#: src/libslic3r/SLAPrint.cpp:915 +msgid "Visualizing supports" +msgstr "Vizualizace podpÄ›r" + +#: src/slic3r/GUI/Plater.cpp:138 +msgid "Volume" +msgstr "Obsah" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 +msgid "Volume to purge (mm³) when the filament is being" +msgstr "Objem k vyÄiÅ¡tÄ›ní (mm³) pokud je filament" + +#: src/slic3r/GUI/PresetHints.cpp:216 +msgid "Volumetric" +msgstr "Volumetrický" + +#: src/slic3r/GUI/GUI_Preview.cpp:216 +msgid "Volumetric flow rate" +msgstr "Objemový průtok" + #: src/libslic3r/GCode/PreviewData.cpp:402 msgid "Volumetric flow rate (mm3/s)" msgstr "Objemový průtok (mm3/s)" -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" +#: src/slic3r/GUI/RammingChart.cpp:81 +msgid "Volumetric speed" +msgstr "Objemová rychlost" -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1168 src/slic3r/GUI/GUI.cpp:283 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 +msgid "Warning" +msgstr "Varování" -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" +#: src/slic3r/GUI/ConfigWizard.cpp:294 +msgid "Welcome" +msgstr "Vítejte" -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" +#: src/slic3r/GUI/ConfigWizard.cpp:294 +#, possible-c-format +msgid "Welcome to the %s %s" +msgstr "Vítejte v %s %s" -#~ msgid "" -#~ "\n" -#~ "Non-positive value." -#~ msgstr "" -#~ "\n" -#~ "Nezáporná hodnota." +#: src/slic3r/GUI/ConfigWizard.cpp:284 +#, possible-c-format +msgid "Welcome to the Slic3r %s" +msgstr "Vítejte v Slic3r %s" -#~ msgid "" -#~ "\n" -#~ "Not a numeric value." -#~ msgstr "" -#~ "\n" -#~ "NeÄíselná hodnota." +#: lib/Slic3r/GUI/Plater/2D.pm:131 +msgid "What do you want to print today? â„¢" +msgstr "Co chcete dnes tisknout? â„¢" -#~ msgid " preset\n" -#~ msgstr " pÅ™ednastavení\n" +#: src/slic3r/GUI/Preferences.cpp:86 +msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" +msgstr "Pokud je zaÅ¡krtnuto, pÅ™ednastavení tisku a filamentu se zobrazují v editoru pÅ™ednastavení, i když jsou oznaÄeny jako nekompatibilní s aktivní tiskárnou" -#~ msgid " preset" -#~ msgstr " pÅ™ednastavení" +#: src/slic3r/GUI/PresetHints.cpp:221 +msgid "when printing " +msgstr "pÅ™i tisku " -#~ msgid "&Load Config Bundle" -#~ msgstr "&NaÄíst KonfiguraÄní Balík" +#: src/libslic3r/PrintConfig.cpp:216 +msgid "When printing multi-material objects, this settings will make slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +msgstr "PÅ™ipnutí pÅ™ekrývajících se objektů jeden k druhému pÅ™i Multimateriálovém tisku. (Druhá Äást se pÅ™ipne k první, tÅ™etí Äást k první a druhé, atd)." -#~ msgid "&Load Config" -#~ msgstr "&NaÄíst Konfiguraci" +#: src/libslic3r/PrintConfig.cpp:217 +msgid "When printing multi-material objects, this settings will make Slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." +msgstr "PÅ™ipnutí pÅ™ekrývajících se objektů jeden k druhému pÅ™i Multimateriálovém tisku. (Druhá Äást se pÅ™ipne k první, tÅ™etí Äást k první a druhé, atd)." -#~ msgid "&Object" -#~ msgstr "&Objekt" +#: src/libslic3r/PrintConfig.cpp:269 +msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." +msgstr "PÅ™i tisku více objektů nebo kopií tiskárna kompletnÄ› dokonÄí jeden objekt, pÅ™edtím než zaÄne tisknout druhý (zaÄíná od spodní vrstvy). Tato vlastnost je výhodná z důvodů snížení rizika zniÄených výtisků. Slic3r by mÄ›l varovat pÅ™i možné kolizi extruderu s objektem a zabránit mu, pÅ™esto doporuÄujeme obezÅ™etnost." -#~ msgid "&Plater" -#~ msgstr "&Podložka" +#: src/libslic3r/PrintConfig.cpp:843 +msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." +msgstr "PÅ™i tisku s velmi nízkými výškami vrstev můžete stále vytisknout tlustší spodní vrstvu pro zlepÅ¡ení pÅ™ilnavosti a toleranci pro nedokonale zkalibrovanou tiskovou podložku. Může být vyjádÅ™eno jako absolutní hodnota nebo jako procento (například: 150%) z výchozí výšky vrstvy." -#~ msgid "" -#~ "Disable communication with the printer over a serial / USB cable. This " -#~ "simplifies the user interface in case the printer is never attached to " -#~ "the computer." -#~ msgstr "" -#~ "Zakázat komunikaci s tiskárnou pÅ™es sériový / USB kabel. To zjednoduÅ¡uje " -#~ "uživatelské rozhraní v případÄ›, že tiskárna není nikdy pÅ™ipojena k " -#~ "poÄítaÄi." +#: src/libslic3r/PrintConfig.cpp:1483 +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "PÅ™i výmÄ›nÄ› nástroje se spustí retrakce a filament se zatáhne zpÄ›t o zadané množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." -#~ msgid "Disable USB/serial connection" -#~ msgstr "Vypnout USB/sériové pÅ™ipojení" +#: src/libslic3r/PrintConfig.cpp:1475 +msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "PÅ™i spuÅ¡tÄ›ní retrakce se filament zatáhne zpÄ›t o zadané množství (délka se měří na surovém filamentu, než vstoupí do extruderu)." -#~ msgid "Drag your objects here" -#~ msgstr "PÅ™etáhnÄ›te své objekty sem" +#: src/libslic3r/PrintConfig.cpp:1322 +msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading. " +msgstr "Když je hodnota nastavena na nulu, vzdálenost o kterou se filament posune bÄ›hem zavádÄ›ní, je stejná, jako zpÄ›tný posun bÄ›hem vysouvání filamentu. Je-li hodnota kladná, je filament posunut více,. Je-li hodnota záporná, posun pÅ™i zavádÄ›ní je kratší než pÅ™i vysouvání." -#~ msgid "Error while uploading to the OctoPrint server" -#~ msgstr "Chyba pÅ™i nahrávání na server OctoPrint" +#: src/libslic3r/PrintConfig.cpp:1173 +msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." +msgstr "Pokud jsou vÅ¡echna ostatní nastavení rychlosti na hodnotÄ› nula, Slic3r automaticky vypoÄítá optimální rychlost pro udržení konstantního tlaku v extruderu. Toto experimentální nastavení slouží k nastavení nejvyšší rychlosti tisku, kterou chcete povolit." -#~ msgid "Export cancelled" -#~ msgstr "Export zruÅ¡en" +#: src/libslic3r/PrintConfig.cpp:1527 +msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." +msgstr "Když je retrakce kompenzována po zmÄ›nÄ› nástroje, extruder vytlaÄuje toto další množství filamentu." -#~ msgid "File added to print queue" -#~ msgstr "Soubor byl pÅ™idán do tiskové fronty" +#: src/libslic3r/PrintConfig.cpp:1519 +msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." +msgstr "Když je retrakce kompenzována po rychloposunu, extruder vytlaÄuje toto další množství filamentu. Toto nastavení je zřídkakdy potÅ™eba." -#~ msgid "G-code file exported to " -#~ msgstr "Soubor G-code byl exportován do " +#: src/slic3r/GUI/Tab.cpp:3108 +msgid "WHITE BULLET icon indicates a non system preset." +msgstr "Ikona BÃLÉ TEÄŒKY indikuje nesystémové pÅ™ednastavení." -#~ msgid "Invalid API key" -#~ msgstr "Neplatný API klíÄ" +#: src/slic3r/GUI/Tab.cpp:3111 +msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." +msgstr "Ikona BÃLÉ TEÄŒKY indikuje, že nastavení jsou shodná s naposledy uloženým pÅ™ednastavením pro danou skupinu nastavení." -#~ msgid "Load shape from STL" -#~ msgstr "NaÄíst tvar ze souboru STL" +#: src/slic3r/GUI/Tab.cpp:3126 +msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." +msgstr "Ikona BÃLÉ TEÄŒKY indikuje, že je hodnota shodná s naposledy uloženým pÅ™ednastavením." -#~ msgid "OctoPrint upload" -#~ msgstr "OctoPrint nahrávání" +#: src/slic3r/GUI/Tab.cpp:3073 +msgid "WHITE BULLET;for the left button: \tindicates a non-system preset,\nfor the right button: \tindicates that the settings hasn't been modified." +msgstr "BÃLà TEÄŒKA;pro levé tlaÄítko: indikuje nesystémové pÅ™ednastavení,\npro pravé tlaÄítko: indikuje, že nastavení nebylo zmÄ›nÄ›no." -#~ msgid "OctoPrint upload finished." -#~ msgstr "Nahrávání do OctoPrintu dokonÄeno." +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2137 +msgid "Width" +msgstr "Šířka" -#~ msgid "" -#~ "Please install the OpenGL modules to use this feature (see build " -#~ "instructions)." -#~ msgstr "" -#~ "Pro použití této funkce prosím nainstalujte OpenGL moduly (viz instrukce " -#~ "vlastního sestavení)." +#: src/libslic3r/GCode/PreviewData.cpp:398 +msgid "Width (mm)" +msgstr "Šířka (mm)" -#~ msgid "" -#~ "Slic3r can upload G-code files to OctoPrint. This field should contain " -#~ "the API Key required for authentication." -#~ msgstr "" -#~ "Slic3r může nahrát soubory G-code do OctoPrintu. Toto pole by mÄ›lo " -#~ "obsahovat klÃ­Ä API požadovaný pro ověření." +#: src/libslic3r/PrintConfig.cpp:2389 +msgid "Width from the back sphere center to the front sphere center" +msgstr "Šířka od stÅ™edu zadní koule ke stÅ™edu pÅ™ední koule" -#~ msgid "" -#~ "Slic3r can upload G-code files to OctoPrint. This field should contain " -#~ "the hostname, IP address or URL of the OctoPrint instance." -#~ msgstr "" -#~ "Slic3r může nahrát soubory G-code do OctoPrintu. Toto pole by mÄ›lo " -#~ "obsahovat název hosta (hostname), IP adresu nebo URL instance OctoPrint." +#: src/libslic3r/PrintConfig.cpp:2138 +msgid "Width of a wipe tower" +msgstr "Šířka Äistící věže" -#~ msgid "What do you want to print today? â„¢" -#~ msgstr "Co chcete dnes tisknout? â„¢" +#: src/libslic3r/PrintConfig.cpp:2203 +msgid "Width of the display" +msgstr "Šířka displeje" + +#: src/slic3r/GUI/PresetHints.cpp:43 +#, possible-c-format +msgid "will always run at %d%% " +msgstr "bude vždy běžet na %d%% " + +#: src/slic3r/GUI/PresetHints.cpp:52 +msgid "will be turned off." +msgstr "bude vypnut." + +#: src/libslic3r/PrintConfig.cpp:2276 +msgid "Will inflate or deflate the sliced 2D polygons according to the sign of the correction." +msgstr "Vytvoří offset každé vrstvy v rovinÄ› XY. Kladná hodnota - offset smÄ›rem ven, plocha polygonu se zvÄ›tší. Záporná hodnota - offset smÄ›rem dovnitÅ™, plocha polygonu se zmenší." + +#: src/libslic3r/PrintConfig.cpp:2160 +msgid "Wipe into this object" +msgstr "VyÄistit do tohoto objektu" + +#: src/libslic3r/PrintConfig.cpp:2152 +msgid "Wipe into this object's infill" +msgstr "VyÄiÅ¡tÄ›ní do výplnÄ› tohoto objektu" + +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1130 +#: src/libslic3r/GCode/PreviewData.cpp:174 +msgid "Wipe tower" +msgstr "ÄŒistící věž" + +#: src/slic3r/GUI/Tab.cpp:1281 src/slic3r/GUI/Tab.cpp:1298 +msgid "Wipe Tower" +msgstr "ÄŒistící věž" + +#: src/slic3r/GUI/Plater.cpp:1043 src/slic3r/GUI/Plater.cpp:1058 +msgid "wipe tower" +msgstr "Äistící věž" + +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 +msgid "Wipe tower - Purging volume adjustment" +msgstr "ÄŒistící věž - Úprava objemu ÄiÅ¡tÄ›ní" + +#: src/libslic3r/PrintConfig.cpp:2144 +msgid "Wipe tower rotation angle" +msgstr "Úhel natoÄení Äistící věže" + +#: src/libslic3r/PrintConfig.cpp:2145 +msgid "Wipe tower rotation angle with respect to x-axis " +msgstr "Úhel natoÄení Äistící věže s ohledem na osu X " + +#: src/libslic3r/PrintConfig.cpp:2092 +msgid "Wipe while retracting" +msgstr "OÄistit pÅ™i retrakci" + +#: xs/src/libslic3r/PrintConfig.cpp:1997 +msgid "Wiping after toolchange will be preferentially done inside infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." +msgstr "ÄŒiÅ¡tÄ›ní po výmÄ›nÄ› extruderu bude pÅ™ednostnÄ› provádÄ›no do vnitÅ™ních výplní. Tím se snižuje množství odpadu, ale může to mít za následek delší dobu tisku v důsledku dodateÄných pohybů." + +#: src/libslic3r/PrintConfig.cpp:1460 +msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." +msgstr "U bowdenových extrudérů může být vhodné provést rychlé retrakce než se spustí oÄiÅ¡tÄ›ní." + +#: src/libslic3r/PrintConfig.cpp:1969 +msgid "With sheath around the support" +msgstr "Pouzdro okolo podpÄ›r" + +#: src/slic3r/GUI/UpdateDialogs.cpp:76 +msgid "Would you like to install it?\n\nNote that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n\nUpdated configuration bundles:" +msgstr "PÅ™ejete si spustit instalaci?\n\nNejprve bude provedena kompletní záloha nastavení. V případÄ› problémů s novou verzí ji bude možné kdykoliv obnovit.\n\nAktualizované balíÄky nastavení:" + +#: src/libslic3r/Zipper.cpp:95 +msgid "write calledback failed" +msgstr "zpÄ›tné volání se nezdaÅ™ilo" + +#: src/libslic3r/PrintConfig.cpp:2993 +msgid "Write information about the model to the console." +msgstr "Vypsat informace o modelu do konsole." + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "Chybné heslo" + +#: src/libslic3r/PrintConfig.cpp:2124 +msgid "X coordinate of the left front corner of a wipe tower" +msgstr "X souÅ™adnice levého pÅ™edního rohu Äistící věže" + +#: src/libslic3r/PrintConfig.cpp:1793 +msgid "XY separation between an object and its support" +msgstr "XY vzdálenost mezi objektem a podpÄ›rami" + +#: src/libslic3r/PrintConfig.cpp:1795 +msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." +msgstr "XY vzdálenost mezi objektem a podpÄ›rami. Pokud je vyjádÅ™eno procenty (například 50%), bude vypoÄítána z šířky perimetru." + +#: src/libslic3r/PrintConfig.cpp:2174 +msgid "XY Size Compensation" +msgstr "Kompenzace XY rozmÄ›rů" + +#: src/libslic3r/PrintConfig.cpp:2131 +msgid "Y coordinate of the left front corner of a wipe tower" +msgstr "Y souÅ™adnice levého pÅ™edního rohu Äistící věže" + +#: src/slic3r/GUI/Plater.cpp:992 +msgid "Yes" +msgstr "Ano" + +#: src/libslic3r/PrintConfig.cpp:1252 +msgid "You can put here your personal notes. This text will be added to the G-code header comments." +msgstr "Zde můžete zadat své osobní poznámky. Tento text bude pÅ™idán do komentáře záhlaví G code." + +#: src/libslic3r/PrintConfig.cpp:557 +msgid "You can put your notes regarding the filament here." +msgstr "Zde můžete vložit poznámky týkající se filamentu." + +#: src/libslic3r/PrintConfig.cpp:1403 +msgid "You can put your notes regarding the printer here." +msgstr "Zde můžete uvést poznámky týkající se tiskárny." + +#: src/libslic3r/PrintConfig.cpp:2332 +msgid "You can put your notes regarding the SLA print material here." +msgstr "Zde můžete vkládat své poznámky týkající se tiskového materiálu SLA." + +#: src/libslic3r/PrintConfig.cpp:324 +msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." +msgstr "Nastavením poÄtu prvních vrstev s vypnutým chlazením pro nezhorÅ¡ování pÅ™ilnavosti." + +#: src/libslic3r/PrintConfig.cpp:1295 +msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." +msgstr "V této Å¡ablonÄ› můžete použít vÅ¡echny možnosti konfigurace jako promÄ›nné. Můžete například použít: [layer_height], [fill_density] etc. Také můžete použít [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "You can't change a type of the last solid part of the object." +msgstr "Nelze zmÄ›nit typ poslední plné Äásti objektu." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 +msgid "You can't delete the last intance from object." +msgstr "Nelze smazat poslední instanci z objektu." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1694 +msgid "You can't delete the last solid part from object." +msgstr "Nelze smazat poslední Äást z objektu." + +#: src/slic3r/GUI/Plater.cpp:1746 +#, possible-c-format +msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" +msgstr "Nemůžete pÅ™idat objekt(y) z %s, protože jeden nebo nÄ›které z nich je(jsou) vícedílné" + +#: src/slic3r/GUI/GUI_App.cpp:789 +msgid "You have unsaved changes " +msgstr "Máte neuložené zmÄ›ny " + +#: src/slic3r/GUI/Preferences.cpp:130 +#, possible-c-format +msgid "You need to restart %s to make the changes effective." +msgstr "Chcete-li provést zmÄ›ny, musíte restartovat aplikaci %s." + +#: src/slic3r/GUI/Preferences.cpp:126 +msgid "You need to restart Slic3r to make the changes effective." +msgstr "Chcete-li provést zmÄ›ny, musíte restartovat aplikaci Slic3r." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2415 +#, possible-c-format +msgid "You started your selection with %s Item." +msgstr "ZaÄali jste výbÄ›r s položkou %s." + +#: src/slic3r/GUI/MainFrame.cpp:772 +msgid "Your file was repaired." +msgstr "Váš soubor byl opraven." + +#: src/slic3r/GUI/Plater.cpp:1874 +msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." +msgstr "Váš objekt se zdá být příliÅ¡ velký, takže byl automaticky zmenÅ¡en, aby se veÅ¡el na tiskovou podložku." + +#: src/libslic3r/PrintConfig.cpp:2184 +msgid "Z offset" +msgstr "Odsazení Z" + +#: src/libslic3r/PrintConfig.cpp:2416 +msgid "Zig-Zag" +msgstr "Zig-Zag" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:152 +msgid "Zoom in" +msgstr "PÅ™iblížit" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:153 +msgid "Zoom out" +msgstr "Oddálit" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:150 +msgid "Zoom to all objects in scene, if none selected" +msgstr "Pohled na vÅ¡echny objekty ve scénÄ›, pokud žádný není vybraný" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 +msgid "Zoom to Bed" +msgstr "Pohled na tiskovou plochu" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:151 +msgid "Zoom to selected object" +msgstr "Pohled na vybraný objekt" + +#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:733 +#: src/libslic3r/PrintConfig.cpp:1570 src/libslic3r/PrintConfig.cpp:1580 +#: src/libslic3r/PrintConfig.cpp:1808 src/libslic3r/PrintConfig.cpp:1962 +#: src/libslic3r/PrintConfig.cpp:2146 src/libslic3r/PrintConfig.cpp:2463 +msgid "°" +msgstr "°" + +#: src/slic3r/GUI/ConfigWizard.cpp:613 src/slic3r/GUI/ConfigWizard.cpp:627 +msgid "°C" +msgstr "°C" diff --git a/resources/localization/de_DE/Slic3rPE.mo b/resources/localization/de_DE/Slic3rPE.mo deleted file mode 100644 index 523edac01..000000000 Binary files a/resources/localization/de_DE/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/de_DE/Slic3rPE_de.po b/resources/localization/de_DE/Slic3rPE_de.po deleted file mode 100644 index 8d4d49460..000000000 --- a/resources/localization/de_DE/Slic3rPE_de.po +++ /dev/null @@ -1,7082 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.8\n" - -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" -msgstr "Über Slic3r" - -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 -msgid "Version" -msgstr "Version" - -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "Form" - -#: src/slic3r/GUI/BedShapeDialog.cpp:50 -msgid "Rectangular" -msgstr "Rechteckig" - -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 -msgid "Size" -msgstr "Grösse" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -msgid "Size in X and Y of the rectangular plate." -msgstr "Grösse der rechteckigen Platte in X und Y." - -#: src/slic3r/GUI/BedShapeDialog.cpp:61 -msgid "Origin" -msgstr "Nullpunkt" - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" -"Abstand der 0,0 G-Code-Koordinate von der linken vorderen Ecke des Rechtecks." - -#: src/slic3r/GUI/BedShapeDialog.cpp:66 -msgid "Circular" -msgstr "Kreisförmig" - -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 -msgid "mm" -msgstr "mm" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "Durchmesser" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Durchmesser des Druckbettes. Es wird angenommen, dass der Ursprung (0,0) " -"sich im Mittelpunkt befindet." - -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "Benutzerdefiniert" - -#: src/slic3r/GUI/BedShapeDialog.cpp:79 -msgid "Load shape from STL..." -msgstr "" - -#: src/slic3r/GUI/BedShapeDialog.cpp:125 -msgid "Settings" -msgstr "Einstellungen" - -#: src/slic3r/GUI/BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Wählen Sie eine Datei als Druckbettkontur aus (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " -msgstr "Fehler! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "Die ausgewählte Datei enthält keine Geometrie." - -#: src/slic3r/GUI/BedShapeDialog.cpp:328 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Die ausgewählte Datei enthält mehrere nicht zusammenhängende Bereiche. Dies " -"wird nicht unterstützt." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape" -msgstr "Druckbrettprofil" - -#: src/slic3r/GUI/BonjourDialog.cpp:54 -msgid "Network lookup" -msgstr "Network Lookup" - -#: src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Address" -msgstr "Adresse" - -#: src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Hostname" -msgstr "Hostname" - -#: src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "Service name" -msgstr "Name des Dienstes" - -#: src/slic3r/GUI/BonjourDialog.cpp:70 -msgid "OctoPrint version" -msgstr "OctoPrint Version" - -#: src/slic3r/GUI/BonjourDialog.cpp:188 -msgid "Searching for devices" -msgstr "Es wird nach Geräten gesucht" - -#: src/slic3r/GUI/BonjourDialog.cpp:195 -msgid "Finished" -msgstr "Fertig" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "Schaltflächen und Textfarben Beschreibung" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "Der Wert ist gleich wie die Systemeinstellung" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" -msgstr "" -"Der Wert wurde geändert und ist nicht gleich wie die Systemeinstellung oder " -"die letzte abgespeicherte Voreinstellung" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 -msgid "Upgrade" -msgstr "Aktualisieren" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 -msgid "Downgrade" -msgstr "Downgrade" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 -msgid "Before roll back" -msgstr "Vor dem Zurückwechseln" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 -msgid "User" -msgstr "Benutzer" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 -msgid "Unknown" -msgstr "Unbekannt" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "Aktiv: " - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "Slic3r Version" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" -msgstr "Druck" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "filaments" -msgstr "Filamente" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 -msgid "printer" -msgstr "Drucker" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 -msgid "vendor" -msgstr "Hersteller" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "version" -msgstr "Version" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "min slic3r version" -msgstr "Min. Slic3r Version" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "max slic3r version" -msgstr "Max. Slic3r Version" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "model" -msgstr "Modell" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "variants" -msgstr "Varianten" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" -msgstr "Nicht kompatibel mit diesem Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 -msgid "Activate" -msgstr "Aktivieren" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 -msgid "Configuration Snapshots" -msgstr "Konfigurations-Momentaufnahmen" - -#: src/slic3r/GUI/ConfigWizard.cpp:92 -msgid "nozzle" -msgstr "Düse" - -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "Standard" - -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Alles auswählen" - -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "Auswahl aufheben" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Willkommen in Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -msgid "Welcome" -msgstr "Willkommen" - -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 -#, c-format -msgid "Run %s" -msgstr "%s ausführen" - -#: src/slic3r/GUI/ConfigWizard.cpp:234 -#, c-format -msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -msgstr "" -"Hallo, willkommen bei Slic3r Prusa Edition! Dieses %s hilft Ihnen bei der " -"Erstkonfiguration; nur ein paar Einstellungen und Sie sind bereit zum " -"Drucken." - -#: src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" -msgstr "" -"Benutzerprofile entfernen - von Grund auf neu installieren (eine " -"Momentaufnahme wird vorab erstellt)" - -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "Andere Hersteller" - -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "Benutzerdefiniertes Setup" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Automatic updates" -msgstr "Automatische Updates" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Updates" -msgstr "Updates" - -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Nach Updates suchen" - -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 -msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -msgstr "" -"Falls aktiviert, sucht Slic3r online nach neuen Versionen von Slic3r PE. " -"Falls eine neue Version verfügbar ist, wird eine Mitteilung beim nächsten " -"Programmstart angezeigt (aber nie während der Programmausführung). Dies " -"dient nur der Mitteilung; es findet keine automatische Installation statt." - -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Eingebaute Voreinstellungen automatisch aktualisieren" - -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 -msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." -msgstr "" -"Wenn aktiviert, lädt Slic3r Updates der eingebauten Systemvoreinstellungen " -"im Hintergrund herunter. Diese Updates werden in einen separaten temporären " -"Speicherort heruntergeladen. Wenn eine neue Voreinstellungsversion verfügbar " -"wird, wird sie beim Programmstart angeboten." - -#: src/slic3r/GUI/ConfigWizard.cpp:308 -msgid "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." -msgstr "" -"Updates werden niemals ohne das Einverständnis des Benutzers ausgeführt, und " -"werden niemals die vom Benutzer geänderten Einstellungen überschreiben." - -#: src/slic3r/GUI/ConfigWizard.cpp:313 -msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." -msgstr "" -"Zusätzlich wird ein Momentaufnahme der gesamten Konfiguration als Sicherung " -"erstellt, bevor ein Update durchgeführt wird." - -#: src/slic3r/GUI/ConfigWizard.cpp:320 -msgid "Other Vendors" -msgstr "Andere Hersteller" - -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Wählen Sie einen anderen von Slic3r PE unterstützten Hersteller:" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 -msgid "Firmware Type" -msgstr "Firmware Typ" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 -msgid "Firmware" -msgstr "Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:385 -msgid "Choose the type of firmware used by your printer." -msgstr "Wählen Sie den Typ der von Ihrem Drucker verwendeten Firmware." - -#: src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape and Size" -msgstr "Bettform und -größe" - -#: src/slic3r/GUI/ConfigWizard.cpp:422 -msgid "Set the shape of your printer's bed." -msgstr "Stellen Sie die Konturen Ihres Druckerbettes ein." - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Filament and Nozzle Diameters" -msgstr "Filament- und Düsendurchmesser" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Print Diameters" -msgstr "Druckdurchmesser" - -#: src/slic3r/GUI/ConfigWizard.cpp:452 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Geben Sie den Durchmesser der Hotenddüse ein." - -#: src/slic3r/GUI/ConfigWizard.cpp:455 -msgid "Nozzle Diameter:" -msgstr "Düsendurchmesser:" - -#: src/slic3r/GUI/ConfigWizard.cpp:465 -msgid "Enter the diameter of your filament." -msgstr "Geben Sie den Durchmesser des Filaments ein." - -#: src/slic3r/GUI/ConfigWizard.cpp:466 -msgid "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." -msgstr "" -"Eine hohe Genauigkeit ist erforderlich, also verwenden Sie einen " -"Messschieber und führen Sie mehrere Messungen entlang des Filaments durch, " -"um dann den Mittelwert zu berechnen." - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Filament Diameter:" -msgstr "Filamentdurchmesser:" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Extruder and Bed Temperatures" -msgstr "Extruder- und Druckbetttemperatur" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Temperatures" -msgstr "Temperaturen" - -#: src/slic3r/GUI/ConfigWizard.cpp:503 -msgid "Enter the temperature needed for extruding your filament." -msgstr "" -"Geben Sie die Temperatur ein, die für die Extrusion Ihres Filaments benötigt " -"wird." - -#: src/slic3r/GUI/ConfigWizard.cpp:504 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "Ein Daumenwert ist 160 bis 230 °C für PLA, und 215 bis 250 °C für ABS." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Extrusion Temperature:" -msgstr "Extrusionstemperatur:" - -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 -msgid "°C" -msgstr "°C" - -#: src/slic3r/GUI/ConfigWizard.cpp:517 -msgid "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." -msgstr "" -"Geben Sie die Betttemperatur ein, die erforderlich ist, damit Ihr Filament " -"an Ihrem beheizten Bett haftet." - -#: src/slic3r/GUI/ConfigWizard.cpp:518 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"Ein Daumenwert ist 60 °C für PLA und 110 °C für ABS. Auf 0 setzen, falls " -"kein beheiztes Bett vorhanden ist." - -#: src/slic3r/GUI/ConfigWizard.cpp:521 -msgid "Bed Temperature:" -msgstr "Betttemperatur:" - -#: src/slic3r/GUI/ConfigWizard.cpp:833 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:834 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:835 -msgid "&Finish" -msgstr "&Beenden" - -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" -msgstr "Konfigurations-Assistent" - -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" -msgstr "Konfigurations-&Assistent" - -#: src/slic3r/GUI/ConfigWizard.cpp:909 -msgid "Configuration Assistant" -msgstr "Konfigurations-Assistent" - -#: src/slic3r/GUI/ConfigWizard.cpp:910 -msgid "Configuration &Assistant" -msgstr "Konfigurations-&Assistent" - -#: src/slic3r/GUI/Field.cpp:109 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:140 -#, c-format -msgid "%s doesn't support percentage" -msgstr "%s akzeptiert keine Prozentangaben" - -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:153 -msgid "Input value is out of range" -msgstr "Der Eingabewert ist nicht im gültigen Bereich" - -#: src/slic3r/GUI/Field.cpp:176 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:179 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:133 -msgid "Flash!" -msgstr "Flash!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "Abbrechen" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Es wird geflashed. Bitte nicht den Drucker abklemmen!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:245 -msgid "Flashing succeeded!" -msgstr "Flashen erfolgreich!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:246 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "Flashen misslungen. Bitte überprüfen Sie das Avrdude log unterhalb." - -#: src/slic3r/GUI/FirmwareDialog.cpp:247 -msgid "Flashing cancelled." -msgstr "Flashen abgebrochen." - -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 -msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:581 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:690 -msgid "Firmware flasher" -msgstr "Firmware Flasher" - -#: src/slic3r/GUI/FirmwareDialog.cpp:712 -msgid "Firmware image:" -msgstr "Firmware Image:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:716 -msgid "Serial port:" -msgstr "Serieller Port:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:718 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:719 -msgid "Rescan" -msgstr "Rescan" - -#: src/slic3r/GUI/FirmwareDialog.cpp:726 -msgid "Progress:" -msgstr "Fortschritt:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:729 -msgid "Status:" -msgstr "Status:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:730 -msgid "Ready" -msgstr "Fertig" - -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "Fortgeschritten: Avrdude Output Log" - -#: src/slic3r/GUI/FirmwareDialog.cpp:809 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"Sind Sie sicher, dass Sie das Flashen der Firmware abbrechen wollen? Dies " -"könnte Ihren Drucker in einen unbrauchbaren Zustand versetzen!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:810 -msgid "Confirmation" -msgstr "Bestätigung" - -#: src/slic3r/GUI/FirmwareDialog.cpp:813 -msgid "Cancelling..." -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "Drehen" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "Skalieren" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 -msgid "Rotate lower part upwards" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 -msgid "Perform cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2276 -msgid "Cut object:" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 -msgid "Cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2466 -msgid "Keep upper part" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2467 -msgid "Keep lower part" -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "Hinweis" - -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "Versuch, unreferenzierte Skalare freizugeben" - -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 -msgid "Warning" -msgstr "Warnung" - -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Wählen Sie eine oder mehrere Dateien (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." -msgstr "" -"Felder mit Sprachnamen und Bezeichnern sollten die gleiche Größe haben." - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" -msgstr "Wählen Sie die Sprache aus" - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" -msgstr "Spache" - -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" -msgstr "Standard" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" -msgstr "&Konfigurations-Momentaufnahmen" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" -msgstr "Inspiziere / aktiviere Konfigurations-Momentaufnahmen" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" -msgstr "Erfassen einer Konfigurations-Momentauf&nahme" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" -msgstr "Erfassen einer Konfigurations-Momentaufnahme" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" -msgstr "&Einstellungen" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Anwendungseinstellungen" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" -msgstr "Erweiterte Einstellungen" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "Wechsel der Anwendungs&sprache" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "Flashe Drucker &Firmware" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Lade ein Firmware Image zu einem Arduino basierten Drucker hoch" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "Ich erfasse eine Momentaufnahme der Konfiguration" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "Name der Momentaufnahme" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "Anwendung wird neu gestartet" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "Achtung!" - -#: src/slic3r/GUI/GUI_App.cpp:691 -msgid "&Configuration" -msgstr "&Konfiguration" - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " -msgstr "Sie haben nicht gespeicherte Änderungen " - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" -msgstr ". Änderungen verwerfen und fortfahren?" - -#: src/slic3r/GUI/GUI_App.cpp:712 -msgid "Unsaved Presets" -msgstr "Nicht abgespeicherte Voreinstellungen" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Layers and Perimeters" -msgstr "Schichten und Konturen" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 -msgid "Infill" -msgstr "Infill" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "Stützmaterial" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "Geschwindigkeit" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 -msgid "Extruders" -msgstr "Extruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 -msgid "Extrusion Width" -msgstr "Extrusionsbreite" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 -msgid "Name" -msgstr "Name" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 -msgid "Extruder" -msgstr "Extruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "" -"Das ausgewählte Objekt konnte nicht getrennt werden, da es nur aus einem " -"Teil besteht." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 -msgid "The supplied name is not valid;" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 -msgid "the following characters are not allowed:" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 -msgid "View" -msgstr "Ansicht" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Merkmalstyp" - -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 -msgid "Height" -msgstr "Höhe" - -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 -msgid "Width" -msgstr "Breite" - -#: src/slic3r/GUI/GUI_Preview.cpp:242 -msgid "Volumetric flow rate" -msgstr "Volumetrische Flussrate" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "Werkzeug" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:247 -msgid "Show" -msgstr "Anzeigen" - -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 -msgid "Feature types" -msgstr "Merkmalstypen" - -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Aussenschicht" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "Aussenschicht" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "Überhängende Aussenschicht" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "Internes Infill" - -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Stabiles Infill" - -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Oberes stabiles Infill" - -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "Überbrückungs-Infill" - -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "Lückenfüllung" - -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "Schürze" - -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Schnittstelle zum Stützmaterial" - -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "Reinigungssäule" - -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 -msgid "Travel" -msgstr "Eilgang" - -#: src/slic3r/GUI/GUI_Preview.cpp:270 -msgid "Retractions" -msgstr "Einzüge" - -#: src/slic3r/GUI/GUI_Preview.cpp:271 -msgid "Unretractions" -msgstr "Wiedereinzüge" - -#: src/slic3r/GUI/GUI_Preview.cpp:272 -msgid "Shells" -msgstr "Konturhüllen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" -msgstr "Export G-Code" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" -msgstr "Letzten Quick Slice wiederholen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" -msgstr "Reiter \"Druckplatte\" auswählen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "Reiter \"Druckeinstellungen\" auswählen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" -msgstr "Reiter \"Filamenteinstellungen\" auswählen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "Reiter \"Druckereinstellungen\" auswählen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Einstellungen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" -msgstr "Anordnen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" -msgstr "Alle löschen" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr "" -" - Denken Sie an die Überprüfung von Updates auf http://github.com/prusa3d/" -"slic3r/releases" - -#: src/slic3r/GUI/MainFrame.cpp:130 -msgid "Plater" -msgstr "Druckplatte" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "Ö&ffne" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Load exported configuration file" -msgstr "Laden einer exportierten Konfigurationsdatei" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Load presets from a bundle" -msgstr "Lade Voreinstellungen aus einer Sammlung" - -#: src/slic3r/GUI/MainFrame.cpp:256 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export &G-code" -msgstr "Export &G-Code" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export current plate as G-code" -msgstr "Exportiere die aktuelle Plattenbelegung als G-Code" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export plate as &STL" -msgstr "Exportiere die Plattenbelegung als &STL" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export current plate as STL" -msgstr "Exportiere die aktuelle Plattenbelegung als STL" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export plate as &AMF" -msgstr "Exportiere die Plattenbelegung als &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export current plate as AMF" -msgstr "Exportiere die aktuelle Plattenbelegung als AMF" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export &Config" -msgstr "Exportiere &Konfiguration" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export current configuration to file" -msgstr "Exportiere die aktuelle Konfiguration in eine Datei" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export Config &Bundle" -msgstr "Konfigurations&samlung exportieren" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export all presets to file" -msgstr "Exportiere alle Voreinstellungen in eine Datei" - -#: src/slic3r/GUI/MainFrame.cpp:271 -msgid "&Export" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Slice a file into a G-code" -msgstr "Datei zu G-Code slicen" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Quick Slice and Save As" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Slice a file into a G-code, save as" -msgstr "Datei zu G-Code slicen, speichern als" - -#: src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat Last Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "(Re)Slice &Now" -msgstr "(Re)Slice &jetzt" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "Start new slicing process" -msgstr "Neuen Slicing-Prozess starten" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "&Repair STL file" -msgstr "STL-Datei &reparieren" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "Automatically repair an STL file" -msgstr "Repariere automatisch die STL Datei" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "&Quit" -msgstr "&Beenden" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" -msgstr "Slic3r beenden" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "&Select all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Delete &all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "&Plater Tab" -msgstr "\"Druck&platte\" auswählen" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "Show the plater" -msgstr "Druckplatte anzeigen" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "P&rint Settings Tab" -msgstr "\"D&ruckeinstellungen\" auswählen" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "Show the print settings" -msgstr "Druckeinstellungen anzeigen" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "&Filament Settings Tab" -msgstr "\"&Filamenteinstellungen\" auswählen" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "Show the filament settings" -msgstr "Filamenteinstellungen anzeigen" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Print&er Settings Tab" -msgstr "\"Druck&ereinstellungen\" auswählen" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Show the printer settings" -msgstr "Druckereinstellungen anzeigen" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "&Iso" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "Iso Ansicht" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "Von &oben" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "Ansicht von oben" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "Von &Unten" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "Ansicht von Unten" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "&Front" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "Frontalansicht" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "&Hinten" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "Ansicht von Hinten" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "&Links" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "Anicht von Links" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "&Rechts" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "Ansicht von rechts" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "Prusa 3D &Treiber" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Download-Seite für die Prusa3D-Treiber in Ihrem Browser öffnen" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "Prusa Edition &Release" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Seite mit den Prusa Edition-Releases in Ihrem Browser öffnen" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "Slic3r &Website" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "Slic3r-Website in Ihrem Browser öffnen" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "Slic3r &Handbuch" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "Slic3r-Handbuch in Ihrem Browser öffnen" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "System&informationen" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "Systeminformationen anzeigen" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "Zeige Konfigurationsordner (&C)" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "Zeige User Konfiguration Ordner (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "Einen F&ehler melden" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Einen Fehler in der Slic3r Prusa Edition melden" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "&Über Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "\"Über\"-Dialog anzeigen" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "&Datei" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" -msgstr "&Fenster" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" -msgstr "&Anzeige" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" -msgstr "&Hilfe" - -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Wählen Sie eine Datei zum Slicen (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." -msgstr "Keine vorher gesclicete Datei." - -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" -msgstr "Fehler" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "Vorher geslicete Datei (" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." -msgstr ") nicht gefunden." - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "File Not Found" -msgstr "Datei nicht gefunden" - -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " -msgstr "Speichern " - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "SVG" -msgstr "SVG" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "G-code" -msgstr "G-Code" - -# Context: L('Save ') . ($params{export_svg} ? L('SVG') : L('G-code')) . L(' file as:'), e.g. "Save G-Code file as:" -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr " Datei als:" - -#: src/slic3r/GUI/MainFrame.cpp:548 -msgid "Save zip file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Slicing" -msgstr "Der Slice wird berechnet" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " -msgstr "Berechnung " - -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid " was successfully sliced." -msgstr " wurde erfolgreich gesliced." - -#: src/slic3r/GUI/MainFrame.cpp:585 -msgid "Slicing Done!" -msgstr "Der Slice ist beendet!" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Select the STL file to repair:" -msgstr "Geben Sie die STL-Datei an, die repariert werden soll:" - -#: src/slic3r/GUI/MainFrame.cpp:614 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "" -"Speichern als OBJ-Datei (weniger anfällig für Koordinatenfehler als STL):" - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Your file was repaired." -msgstr "Ihre Datei wurde repariert." - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Repair" -msgstr "Reparieren" - -#: src/slic3r/GUI/MainFrame.cpp:643 -msgid "Save configuration as:" -msgstr "Konfiguration speichern unter:" - -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 -msgid "Select configuration to load:" -msgstr "Konfiguration zum Laden auswählen:" - -#: src/slic3r/GUI/MainFrame.cpp:700 -msgid "Save presets bundle as:" -msgstr "Sichern der Voreinstellungssammlung unter:" - -#: src/slic3r/GUI/MainFrame.cpp:751 -#, c-format -msgid "%d presets successfully imported." -msgstr "%d Voreinstellungen erfolgreich importiert." - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" -msgstr "Slic3r Fehler" - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" -msgstr "Slic3r ist auf einen Fehler gestoßen" - -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/Plater.cpp:126 -msgid "Volume" -msgstr "Volumen" - -#: src/slic3r/GUI/Plater.cpp:127 -msgid "Facets" -msgstr "Flächen" - -#: src/slic3r/GUI/Plater.cpp:128 -msgid "Materials" -msgstr "Material" - -#: src/slic3r/GUI/Plater.cpp:131 -msgid "Manifold" -msgstr "Hülle ok" - -#: src/slic3r/GUI/Plater.cpp:174 -msgid "Sliced Info" -msgstr "Slice-Info" - -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 -msgid "Used Filament (m)" -msgstr "Verbrauchtes Filament (m)" - -#: src/slic3r/GUI/Plater.cpp:194 -msgid "Used Filament (mm³)" -msgstr "Verbrauchtes Filament (mm³)" - -#: src/slic3r/GUI/Plater.cpp:195 -msgid "Used Filament (g)" -msgstr "Verbrauchtes Filament (g)" - -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 -msgid "Cost" -msgstr "Preis" - -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 -msgid "Estimated printing time" -msgstr "Erwartete Druckzeit" - -#: src/slic3r/GUI/Plater.cpp:198 -msgid "Number of tool changes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "Stützen" - -#: src/slic3r/GUI/Plater.cpp:364 -msgid "Select what kind of support do you need" -msgstr "Wählen Sie aus, welche Art von Unterstützung Sie benötigen" - -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Kein" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 -msgid "Support on build plate only" -msgstr "Stützmaterial nur auf dem Druckbrett" - -#: src/slic3r/GUI/Plater.cpp:367 -msgid "Everywhere" -msgstr "Überall" - -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 -msgid "Brim" -msgstr "Rand" - -#: src/slic3r/GUI/Plater.cpp:381 -msgid "" -"This flag enables the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Dieses Kontrollkästchen aktiviert den Rand (Brim), der um jedes Objekt auf " -"der ersten Ebene gedruckt wird." - -#: src/slic3r/GUI/Plater.cpp:390 -msgid "Purging volumes" -msgstr "Reinigungsvolumen" - -#: src/slic3r/GUI/Plater.cpp:556 -msgid "Print settings" -msgstr "Druckeinstellungen" - -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 -msgid "Filament" -msgstr "Filament" - -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:560 -msgid "Printer" -msgstr "Drucker" - -#: src/slic3r/GUI/Plater.cpp:588 -msgid "Send to printer" -msgstr "Zum Drucker senden" - -#: src/slic3r/GUI/Plater.cpp:607 -msgid "Slice now" -msgstr "Jetzt slicen" - -#: src/slic3r/GUI/Plater.cpp:787 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d Konturhüllen)" - -#: src/slic3r/GUI/Plater.cpp:792 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Auto-Reparatur (%d Fehler)" - -#: src/slic3r/GUI/Plater.cpp:795 -#, c-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" -"%d degenerierte Flächen, %d Kanten korrigiert, %d Flächen entfernt, %d " -"Flächen hinzugefügt, %d Flächen umgekehrt, %d rückwärtige Kanten" - -#: src/slic3r/GUI/Plater.cpp:805 -msgid "Yes" -msgstr "Ja" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:855 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1304 -msgid "Loading" -msgstr "Laden" - -#: src/slic3r/GUI/Plater.cpp:1314 -#, c-format -msgid "Processing input file %s\n" -msgstr "Eingabe Datei wird verarbeitet %s\n" - -#: src/slic3r/GUI/Plater.cpp:1366 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Diese Datei enthält mehrere Objekte, die in verschiedenen Höhen positioniert " -"sind. Anstatt sie als mehrere Objekte zu betrachten, soll ich diese Datei " -"als ein einzelnes Objekt mit mehreren Teilen betrachten?\n" - -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 -msgid "Multi-part object detected" -msgstr "Objekt mit mehreren Teilen erkannt" - -#: src/slic3r/GUI/Plater.cpp:1388 -#, c-format -msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1408 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Für einen Multimaterialdrucker wurden mehrere Objekte geladen.\n" -"Soll ich, anstatt sie als mehrere Objekte zu betrachten, \n" -"diese Dateien als ein einzelnes Objekt mit mehreren Teilen behandeln?\n" - -#: src/slic3r/GUI/Plater.cpp:1424 -msgid "Loaded" -msgstr "Geladen" - -#: src/slic3r/GUI/Plater.cpp:1492 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" -"Ihr Objekt scheint zu gross zu sein. Es wurde deshalb automatisch " -"verkleinert, um auf Ihre Druckplatte zu passen." - -#: src/slic3r/GUI/Plater.cpp:1493 -msgid "Object too large?" -msgstr "Objekt zu groß?" - -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "Export Druckkonfiguration" - -#: src/slic3r/GUI/Plater.cpp:1538 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1702 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1705 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1736 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1740 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1782 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1787 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1797 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1818 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" -"Das ausgewählte Objekt konnte nicht getrennt werden, weil es aus mehr als " -"einem Volumen/Material besteht." - -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "Abbrechen" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "Ein anderer Exportjob läuft zur Zeit." - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "Export ist fehlgeschlagen" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "Löschen" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "Ausgewähltes Objekt entfernen" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Increase copies" -msgstr "Erhöhe Anzahl" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Place one more copy of the selected object" -msgstr "Eine weitere Kopie des ausgewählten Objekts positionieren" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Decrease copies" -msgstr "Verringere Anzahl" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Remove one copy of the selected object" -msgstr "Eine Kopie des ausgewählten Objekts entfernen" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Set number of copies" -msgstr "Anzahl der Kopien angeben" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Change the number of copies of the selected object" -msgstr "Ändere die Anzahl der Kopien der ausgewählten Objekte" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload from Disk" -msgstr "Von Festplatte neu laden" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload the selected file from Disk" -msgstr "Ausgewählte Datei von Festplatte neu laden" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "Exportiere das Objekt als STL" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "Exportiere dieses einzelne Objekt als STL Datei" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Along X axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Mirror the selected object along the X axis" -msgstr "Ausgewähltes Objekt entlang der X-Achse spiegeln" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Along Y axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Mirror the selected object along the Y axis" -msgstr "Ausgewähltes Objekt entlang der Y-Achse spiegeln" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Along Z axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Mirror the selected object along the Z axis" -msgstr "Ausgewähltes Objekt entlang der Z-Achse spiegeln" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror" -msgstr "Spiegeln" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror the selected object" -msgstr "Ausgewähltes Objekt spiegeln" - -#: src/slic3r/GUI/Plater.cpp:2400 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 -msgid "Split the selected object into individual objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 -msgid "Split the selected object into individual sub-parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 -msgid "Split" -msgstr "Trennen" - -#: src/slic3r/GUI/Plater.cpp:2405 -msgid "Split the selected object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save G-code file as:" -msgstr "Speichere G-Code Datei als:" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2845 -#, c-format -msgid "STL file exported to %s" -msgstr "Die STL-Datei wurde exportiert zu %s" - -#: src/slic3r/GUI/Plater.cpp:2861 -#, c-format -msgid "AMF file exported to %s" -msgstr "AMF Datei exportiert nach %s" - -#: src/slic3r/GUI/Plater.cpp:2864 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "Fehler beim Exportieren der AMF Datei %s" - -#: src/slic3r/GUI/Plater.cpp:2891 -#, c-format -msgid "3MF file exported to %s" -msgstr "3MF Datei exportiert nach %s" - -#: src/slic3r/GUI/Plater.cpp:2894 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "Fehler beim Exportieren der 3MF Datei %s" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 -msgid "General" -msgstr "Allgemein" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "Ausgabeverzeichnis merken" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" -"Wenn diese Option aktiviert ist, öffnet Slic3r das letzte Ausgabeverzeichnis " -"anstelle des Verzeichnisses, in dem sich die Eingabedateien befinden." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Teile automatisch zentrieren" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" -"Wenn diese Option aktiviert ist, zentriert Slic3r Objekte automatisch um die " -"Mitte des Druckbettes." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Hintergrundberechnung" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" -"Wenn diese Option aktiviert ist, wird Slic3r Objekte vorverarbeiten, sobald " -"sie geladen werden, um Zeit beim Export von G-Code zu sparen." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "\"Standard\"-Einstellungen unterdrücken" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" -"\"Standard\"-Einstellungen in den Auswahlen für Druck / Filament / Drucker " -"unterdrücken, falls andere gültige Voreinstellungen vorhanden sind." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Inkompatible Druck- und Filamenteinstellungen anzeigen" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" -"Falls angekreuzt, werden Voreinstellungen für Druck und Filament im " -"Voreinstellungseditor auch dann angezeigt, wenn sie als inkompatibel zum " -"aktiven Drucker gekennzeichnet wurden" - -#: src/slic3r/GUI/Preferences.cpp:90 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Älteres OpenGL 1.1-Rendering verwenden" - -#: src/slic3r/GUI/Preferences.cpp:92 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" -"Wenn Sie Rendering-Probleme haben, die durch einen fehlerhaften OpenGL 2.0-" -"Treiber verursacht wurden, können Sie versuchen, dieses Kontrollkästchen zu " -"aktivieren. Dies deaktiviert die Bearbeitung der Ebenenhöhe und das Anti-" -"Aliasing, so dass es wahrscheinlich sinnvoller ist, den Grafiktreiber zu " -"aktualisieren." - -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "Sie müssen Slic3r neu starten, damit die Änderungen wirksam werden." - -#: src/slic3r/GUI/Preset.cpp:170 -msgid "modified" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 -msgid "System presets" -msgstr "Systemvoreinstellungen" - -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 -msgid "User presets" -msgstr "Benutzerdefinierte Voreinstellungen" - -#: src/slic3r/GUI/Preset.cpp:1157 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" -"Wenn die geschätzte Schichtzeit unter ~%ds liegt, läuft der Lüfter mit %d%% " -"und die Druckgeschwindigkeit wird reduziert, so dass nicht weniger als %ds " -"für diese Schicht verwendet werden (die Geschwindigkeit wird jedoch nie " -"unter %dmm/s reduziert)." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Falls die erwartete Schichtdruckzeit größer, aber noch unterhalb von ~%d " -"Sekunden ist, wird der Lüfter mit einer sich proportional verringernden " -"Geschwindigkeit zwischen %d%% und %d%% laufen." - -#: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"Während der übrigen Schichten, Ventilator " - -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "Ventilator " - -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "wird immer mit %d%% laufen " - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "außer für die ersten %d Schichten" - -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "außer für die erste Schicht" - -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "wird abgeschaltet." - -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "Aussenschichten" - -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "Aussenschichten" - -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "Infill" - -#: src/slic3r/GUI/PresetHints.cpp:181 -msgid "solid infill" -msgstr "Stabiles Infill" - -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "Oberes stabiles Infill" - -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "Stützen" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "Schnittstelle zu den Stützen" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Volumenparameter der ersten Schicht" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Überbrückungvolumen" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "Volumetrisch" - -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr " die Durchflussmenge ist am Maximum " - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "mit dem Maximum des Druckerprofils" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "während dem Druck " - -#: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " -msgstr " mit einer Volumenrate von " - -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/s" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " mit einer Filamentgeschwindigkeit von %3.2f mm³/s." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" -"Empfohlene Stärke der dünnen Wände des Objekts: Nicht verfügbar wegen " -"unzulässiger Schichthöhe." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "" -"Empfohlene Stärke der dünnen Wände des Objekts für die Schichthöhe %.2f und " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d Linien: %.2lf mm" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "ÜBERHAUPT KEIN RAMMEN" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "Zeit" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 -msgid "s" -msgstr "s" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "Volumengeschwindigkeit" - -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 -msgid "Compatible printers" -msgstr "Kompatible Drucker" - -#: src/slic3r/GUI/Tab.cpp:50 -msgid "Select the printers this profile is compatible with." -msgstr "Wählen Sie die Drucker aus, die mit diesem Profil kompatibel sind." - -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:56 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " -msgstr "Aktuell sichern " - -#: src/slic3r/GUI/Tab.cpp:119 -msgid "Delete this preset" -msgstr "Lösche diese Voreinstellung" - -#: src/slic3r/GUI/Tab.cpp:131 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Bewegen Sie den Mauszeiger über die Schaltflächen, um weitere Informationen " -"zu erhalten,\n" -"oder klicken Sie auf diese Schaltfläche." - -#: src/slic3r/GUI/Tab.cpp:824 -msgid "It's a default preset." -msgstr "Dies ist eine Standard-Voreinstellung." - -#: src/slic3r/GUI/Tab.cpp:825 -msgid "It's a system preset." -msgstr "Dies ist eine Systemvoreinstellung." - -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " -msgstr "Aktuelle Voreinstellung ist abgeleitet von " - -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " -msgstr "Es ist keine Löschung oder Änderung möglich. " - -#: src/slic3r/GUI/Tab.cpp:832 -msgid "" -"Any modifications should be saved as a new preset inherited from this one. " -msgstr "" -"Alle Änderungen sollten als neues Preset gespeichert werden, das von diesem " -"vererbt wurde. " - -#: src/slic3r/GUI/Tab.cpp:833 -msgid "To do that please specify a new name for the preset." -msgstr "" -"Zur Ausführung geben Sie bitte einen neuen Namen für die Voreinstellung ein." - -#: src/slic3r/GUI/Tab.cpp:837 -msgid "Additional information:" -msgstr "Weitere Informationen:" - -#: src/slic3r/GUI/Tab.cpp:843 -msgid "printer model" -msgstr "Druckermodell" - -#: src/slic3r/GUI/Tab.cpp:851 -msgid "default print profile" -msgstr "Standard-Druckprofil" - -#: src/slic3r/GUI/Tab.cpp:854 -msgid "default filament profile" -msgstr "Standard-Filamentprofil" - -#: src/slic3r/GUI/Tab.cpp:868 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:872 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 -msgid "Layers and perimeters" -msgstr "Schichten und Umfänge" - -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 -msgid "Layer height" -msgstr "Schichthöhe" - -#: src/slic3r/GUI/Tab.cpp:924 -msgid "Vertical shells" -msgstr "Vertikale Konturhüllen" - -#: src/slic3r/GUI/Tab.cpp:935 -msgid "Horizontal shells" -msgstr "Horizontale Konturhüllen" - -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 -msgid "Solid layers" -msgstr "Kompakte Schichten" - -#: src/slic3r/GUI/Tab.cpp:941 -msgid "Quality (slower slicing)" -msgstr "Qualität (langsameres Slicen)" - -#: src/slic3r/GUI/Tab.cpp:958 -msgid "Reducing printing time" -msgstr "Druckzeit wird verkürzt" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Skirt and brim" -msgstr "Schürze und Rand" - -#: src/slic3r/GUI/Tab.cpp:987 -msgid "Raft" -msgstr "Raft" - -#: src/slic3r/GUI/Tab.cpp:991 -msgid "Options for support material and raft" -msgstr "Optionen für Stützmaterial und Raft" - -#: src/slic3r/GUI/Tab.cpp:1006 -msgid "Speed for print moves" -msgstr "Geschwindigkeit für Druckbewegungen" - -#: src/slic3r/GUI/Tab.cpp:1018 -msgid "Speed for non-print moves" -msgstr "Geschwindigkeit für Bewegungen zwischen den Druckvorgängen" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Modifiers" -msgstr "Veränderer" - -#: src/slic3r/GUI/Tab.cpp:1024 -msgid "Acceleration control (advanced)" -msgstr "Beschleunigungskontrolle (fortgeschritten)" - -#: src/slic3r/GUI/Tab.cpp:1031 -msgid "Autospeed (advanced)" -msgstr "Automatische Geschindigkeit (fortgeschritten)" - -#: src/slic3r/GUI/Tab.cpp:1037 -msgid "Multiple Extruders" -msgstr "Mehrere Extruder" - -#: src/slic3r/GUI/Tab.cpp:1045 -msgid "Ooze prevention" -msgstr "Vermeidung von Nachsickern (Ooze)" - -#: src/slic3r/GUI/Tab.cpp:1062 -msgid "Extrusion width" -msgstr "Extrusionbreite" - -#: src/slic3r/GUI/Tab.cpp:1072 -msgid "Overlap" -msgstr "Überlappung" - -#: src/slic3r/GUI/Tab.cpp:1075 -msgid "Flow" -msgstr "Fluss" - -#: src/slic3r/GUI/Tab.cpp:1078 -msgid "Other" -msgstr "Sonstige" - -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 -msgid "Output options" -msgstr "Ausgabeoptionen" - -#: src/slic3r/GUI/Tab.cpp:1086 -msgid "Sequential printing" -msgstr "Sequentielles Drucken" - -#: src/slic3r/GUI/Tab.cpp:1088 -msgid "Extruder clearance (mm)" -msgstr "Extruder Abstand (mm)" - -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 -msgid "Output file" -msgstr "Ausgabedatei" - -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 -msgid "Post-processing scripts" -msgstr "Nachbearbeitungs Script" - -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 -msgid "Notes" -msgstr "Anmerkungen" - -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 -msgid "Dependencies" -msgstr "Abhängigkeiten" - -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 -msgid "Profile dependencies" -msgstr "Profil Abhängigkeiten" - -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"Der Spiralvasen-Modus erfordert:\n" -"- eine Aussenschicht\n" -"- keine stabilen Schichten oben\n" -"- 0% Fülldichte\n" -"- keine Stützen\n" -"- kein ensure_vertical_shell_thickness\n" -"\n" -"Soll ich diese Einstellungen anpassen, um den Spiralvasen-Modus zu " -"aktivieren?" - -#: src/slic3r/GUI/Tab.cpp:1168 -msgid "Spiral Vase" -msgstr "Spiralvase" - -#: src/slic3r/GUI/Tab.cpp:1191 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"Die Reinigungssäule unterstützt zur Zeit nichtlösliche Stützen nur, falls " -"sie mit dem aktuellen Extruder ohne einen Werkzeugwechsel gedruckt werden " -"(sowohl support_material_extruder wie auch " -"support_material_interface_extruder müssen auf Null gesetzt werden).\n" -"\n" -"Soll ich diese Einstellungen anpassen, um die Reinigungssäule zu aktivieren?" - -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 -msgid "Wipe Tower" -msgstr "Reinigungssäule" - -#: src/slic3r/GUI/Tab.cpp:1209 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"Damit der Reinigungsturm mit den löslichen Trägermaterialien arbeiten kann, " -"müssen die Stützschichten mit den Objektschichten synchronisiert werden. " -"Soll ich Unterstützungsschichten synchronisieren, um den Reinigungsturm zu " -"aktivieren?" - -#: src/slic3r/GUI/Tab.cpp:1227 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Stützen funktionieren besser, falls die folgende Option aktiviert ist:\n" -"- Aussenschichten von Überbrückungen erkennen\n" -"\n" -"Soll ich diese Einstellung für die Stützen anpassen?" - -#: src/slic3r/GUI/Tab.cpp:1230 -msgid "Support Generator" -msgstr "Generator für die Stützen" - -# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n") -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "Der/Die " - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" Infillmuster ist nicht empfohlen für 100% Füllvolumen.\n" -"\n" -"Soll auf das rechtlineare Füllmuster umgestellt werden?" - -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " -msgstr "Temperatur " - -#: src/slic3r/GUI/Tab.cpp:1394 -msgid "Bed" -msgstr "Druckbett" - -#: src/slic3r/GUI/Tab.cpp:1399 -msgid "Cooling" -msgstr "Kühlung" - -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Enable" -msgstr "Aktivieren" - -#: src/slic3r/GUI/Tab.cpp:1411 -msgid "Fan settings" -msgstr "Ventilator Einstellungen" - -#: src/slic3r/GUI/Tab.cpp:1412 -msgid "Fan speed" -msgstr "Ventilatorgeschwindigkeit" - -#: src/slic3r/GUI/Tab.cpp:1420 -msgid "Cooling thresholds" -msgstr "Kühlungsschwellwerte" - -#: src/slic3r/GUI/Tab.cpp:1426 -msgid "Filament properties" -msgstr "Filament Eigenschaften" - -#: src/slic3r/GUI/Tab.cpp:1430 -msgid "Print speed override" -msgstr "Korrektur der Druckgeschwindigkeit" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Werkzeugwechsel-Parameter für MM-Drucker mit einem Extruder" - -#: src/slic3r/GUI/Tab.cpp:1455 -msgid "Ramming settings" -msgstr "Einstellungen für das Rammen" - -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 -msgid "Custom G-code" -msgstr "Benutzerdefinierter G-Code" - -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 -msgid "Start G-code" -msgstr "Start G-Code" - -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 -msgid "End G-code" -msgstr "G-Code am Ende" - -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr " Suchen " - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 -msgid "Test" -msgstr "Test" - -#: src/slic3r/GUI/Tab.cpp:1615 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 -msgid "Success!" -msgstr "Erfolg!" - -#: src/slic3r/GUI/Tab.cpp:1636 -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"HTTPS-CA-Datei ist optional. Sie wird nur benötigt, wenn Sie HTTPS mit einem " -"selbstsignierten Zertifikat verwenden." - -#: src/slic3r/GUI/Tab.cpp:1648 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Zertifikatsdatei (*.crt, *.pem)|*.crt;*.pem|alle Dateien|*.*" - -#: src/slic3r/GUI/Tab.cpp:1649 -msgid "Open CA certificate file" -msgstr "Open CA Zertifikat Datei" - -#: src/slic3r/GUI/Tab.cpp:1676 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 -msgid "Size and coordinates" -msgstr "Grösse und Koordinaten" - -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " -msgstr " Setzen " - -#: src/slic3r/GUI/Tab.cpp:1740 -msgid "Capabilities" -msgstr "Fähigkeiten" - -#: src/slic3r/GUI/Tab.cpp:1745 -msgid "Number of extruders of the printer." -msgstr "Anzahl der Extruder des Druckers." - -#: src/slic3r/GUI/Tab.cpp:1773 -msgid "USB/Serial connection" -msgstr "USB/Serielle Verbindung" - -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 -msgid "Serial port" -msgstr "Serieller Port" - -#: src/slic3r/GUI/Tab.cpp:1779 -msgid "Rescan serial ports" -msgstr "Serielle Schnittstellen nochmals abfragen" - -#: src/slic3r/GUI/Tab.cpp:1801 -msgid "Connection to printer works correctly." -msgstr "Verbindung zum Drucker funktioniert einwandfrei." - -#: src/slic3r/GUI/Tab.cpp:1804 -msgid "Connection failed." -msgstr "Verbindung ist fehlgeschlagen." - -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 -msgid "Before layer change G-code" -msgstr "G-Code vor dem Schichtwechsel" - -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 -msgid "After layer change G-code" -msgstr "G-Code am Schichtende" - -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 -msgid "Tool change G-code" -msgstr "G-Code für Werkzeugwechsel" - -#: src/slic3r/GUI/Tab.cpp:1877 -msgid "Between objects G-code (for sequential printing)" -msgstr "G-Code zwischen Objekten (Sequentielles Drucken)" - -#: src/slic3r/GUI/Tab.cpp:1938 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2040 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2045 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2052 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2057 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 -msgid "Single extruder MM setup" -msgstr "Einzelner Extruder MM Setup" - -#: src/slic3r/GUI/Tab.cpp:2104 -msgid "Single extruder multimaterial parameters" -msgstr "Einzelner Extruder Multimaterial Parameter" - -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "Extruder %d" - -#: src/slic3r/GUI/Tab.cpp:2125 -msgid "Layer height limits" -msgstr "Schichthöhen Grenzen" - -#: src/slic3r/GUI/Tab.cpp:2130 -msgid "Position (for multi-extruder printers)" -msgstr "Position (für Multi-Extruder-Drucker)" - -#: src/slic3r/GUI/Tab.cpp:2133 -msgid "Retraction" -msgstr "Einzug" - -#: src/slic3r/GUI/Tab.cpp:2136 -msgid "Only lift Z" -msgstr "Nur Z anheben" - -#: src/slic3r/GUI/Tab.cpp:2149 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" -"Einzug, wenn das Werkzeug deaktiviert ist (weiterführende Einstellungen für " -"Multi-Extruder-Einrichtungen)" - -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "Vorschau" - -#: src/slic3r/GUI/Tab.cpp:2284 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"Die Reinigungsoption ist nicht verfügbar, wenn der Firmware-Einzug verwendet " -"wird.\n" -"\n" -"Soll ich sie ausschalten, um den Firmware-Einzug zu aktivieren?" - -#: src/slic3r/GUI/Tab.cpp:2286 -msgid "Firmware Retraction" -msgstr "Firmware Einzug" - -#: src/slic3r/GUI/Tab.cpp:2565 -#, c-format -msgid "Default preset (%s)" -msgstr "Standard Voreinstellung (%s)" - -#: src/slic3r/GUI/Tab.cpp:2566 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2583 -msgid "has the following unsaved changes:" -msgstr "hat die folgenden ungesicherten Änderungen:" - -#: src/slic3r/GUI/Tab.cpp:2586 -msgid "is not compatible with printer" -msgstr "ist mit dem Drucker nicht kompatibel" - -#: src/slic3r/GUI/Tab.cpp:2587 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2589 -msgid "and it has the following unsaved changes:" -msgstr "und hat die folgenden ungesicherten Änderungen:" - -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "Änderungen verwerfen und fortfahren?" - -#: src/slic3r/GUI/Tab.cpp:2593 -msgid "Unsaved Changes" -msgstr "Nicht abgespeicherte Änderungen" - -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "The supplied name is empty. It can't be saved." -msgstr "Der angegebene Name ist leer. Die Speicherung kann nicht erfolgen." - -#: src/slic3r/GUI/Tab.cpp:2704 -msgid "Cannot overwrite a system profile." -msgstr "Systemprofil kann nicht überschrieben werden." - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Cannot overwrite an external profile." -msgstr "Ein externes Profil kann nicht überschrieben werden." - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "remove" -msgstr "Entfernen" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "delete" -msgstr "löschen" - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " -msgstr "Wollen Sie wirklich " - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr " die ausgewählte Voreinstellung?" - -#: src/slic3r/GUI/Tab.cpp:2736 -msgid "Remove" -msgstr "Entfernen" - -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" -msgstr " Voreinstellung" - -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "Alle" - -#: src/slic3r/GUI/Tab.cpp:2869 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" -msgstr "" -"GESCHLOSSENES SCHLOSS;zeigt an, dass die Einstellungen mit den Systemwerten " -"der aktuellen Optionsgruppe übereinstimmen" - -#: src/slic3r/GUI/Tab.cpp:2872 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." -msgstr "" -"GEÖFFNETES SCHLOSS;Zeigt an, dass einige Einstellungen geändert wurden und " -"nicht mehr mit den Systemeinstellungen für die aktuelle Gruppe von Optionen " -"identisch sind.\n" -"Klicken Sie auf das Symbol mit dem GEÖFFNETEN SCHLOSS, um alle Einstellungen " -"für die aktuelle Optionsgruppe auf die Systemeinstellungen zurückzusetzen." - -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" -"WEISSER PUNKT;Beim linken Knopf: zeigt eine Nicht-Systemeinstellung an. Beim " -"rechten Knopf: zeigt an, dass die Einstellung nicht geändert wurde." - -#: src/slic3r/GUI/Tab.cpp:2882 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." -msgstr "" -"BACK ARROW; zeigt an, dass die Einstellungen geändert wurden und nicht mit " -"dem zuletzt gespeicherten Preset für die aktuelle Optionsgruppe " -"übereinstimmen. \n" -"Klicken Sie auf das Symbol PFEIL ZURÜCK, um alle Einstellungen für die " -"aktuelle Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." - -#: src/slic3r/GUI/Tab.cpp:2908 -msgid "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" -msgstr "" -"GESCHLOSSENES SCHLOSS-Symbol zeigt an, dass die Einstellungen mit den " -"Systemwerten der aktuellen Optionsgruppe übereinstimmen" - -#: src/slic3r/GUI/Tab.cpp:2910 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"Das Symbol GEÖFFNETES SCHLOSS zeigt an, dass einige Einstellungen geändert " -"wurden und nicht mehr mit den Systemeinstellungen für die aktuelle " -"Optionsgruppe identisch sind.\n" -"Klicken Sie, um alle Einstellungen für die aktuelle Optionsgruppe auf die " -"Systemeinstellungen zurückzusetzen." - -#: src/slic3r/GUI/Tab.cpp:2913 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "" -"Das Symbol mit dem WEISSEN PUNKT zeigt eine Nicht-Systemeinstellung an." - -#: src/slic3r/GUI/Tab.cpp:2916 -msgid "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." -msgstr "" -"Das Symbol WEISSER PUNKT zeigt an, dass die Einstellungen dieselben sind wie " -"in der zuletzt gespeicherten Voreinstellung für die aktuelle Optionsgruppe." - -#: src/slic3r/GUI/Tab.cpp:2918 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." -msgstr "" -"Das Symbol PFEIL ZURÜCK zeigt an, dass die Einstellungen geändert wurden und " -"nicht mit dem zuletzt gespeicherten Preset für die aktuelle Optionsgruppe " -"übereinstimmen. Klicken Sie hier, um alle Einstellungen für die aktuelle " -"Optionsgruppe auf das zuletzt gespeicherte Preset zurückzusetzen." - -#: src/slic3r/GUI/Tab.cpp:2924 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"GESCHLOSSENES SCHLOSS-Symbol zeigt an, dass der Wert mit dem Systemwert " -"übereinstimmt." - -#: src/slic3r/GUI/Tab.cpp:2925 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"Das Symbol GEÖFFNETES SCHLOSS zeigt an, dass der Wert geändert wurde und " -"nicht mit der Systemeinstellung identisch ist.\n" -"Klicken Sie, um den aktuellen Wert auf die Systemeinstellung zurückzusetzen." - -#: src/slic3r/GUI/Tab.cpp:2931 -msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." -msgstr "" -"Das Symbol WEISSER PUNKT zeigt an, dass der Wert identisch ist mit " -"demjenigen in der zuletzt gespeicherten Voreinstellung." - -#: src/slic3r/GUI/Tab.cpp:2932 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"Das Symbol PFEIL ZURÜCK zeigt an, dass der Wert geändert wurde und nicht mit " -"dem zuletzt gespeicherten Preset übereinstimmt. \n" -"Klicken Sie, um den aktuellen Wert auf das zuletzt gespeicherte Preset " -"zurückzusetzen." - -# Used in this context: _("Save ") + title + _(" as:") -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" -msgstr " als:" - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "The supplied name is not available." -msgstr "Der angegebene Name ist nicht verfügbar." - -#: src/slic3r/GUI/Tab.cpp:3092 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 -msgid "Layers" -msgstr "Schichten" - -#: src/slic3r/GUI/Tab.cpp:3098 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3183 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3188 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 -msgid "Print Settings" -msgstr "Druckeinstellungen" - -#: src/slic3r/GUI/Tab.hpp:311 -msgid "Filament Settings" -msgstr "Filamenteinstellungen" - -#: src/slic3r/GUI/Tab.hpp:344 -msgid "Printer Settings" -msgstr "Druckereinstellungen" - -#: src/slic3r/GUI/Tab.hpp:367 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:393 -msgid "Save preset" -msgstr "Sichern der Voreinstellung" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "Update available" -msgstr "Ein Update ist verfügbar" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" -msgstr "Eine neue Version von Slic3r PE ist verfügbar" - -#: src/slic3r/GUI/UpdateDialogs.cpp:35 -msgid "To download, follow the link below." -msgstr "Zum Herunterladen folgen Sie dem untenstehenden Link." - -#: src/slic3r/GUI/UpdateDialogs.cpp:42 -msgid "Current version:" -msgstr "Aktuelle Version:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "New version:" -msgstr "Neue Version:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:52 -msgid "Don't notify about new releases any more" -msgstr "Keine Benachrichtigung mehr über neue Releases" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 -msgid "Configuration update" -msgstr "Konfigurationsupdate" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 -msgid "Configuration update is available" -msgstr "Konfigurationsupdate ist verfügbar" - -#: src/slic3r/GUI/UpdateDialogs.cpp:73 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"Möchten Sie dies installieren?\n" -"\n" -"Beachten Sie, dass zuerst eine Momentaufnahme der gesamten Konfiguration " -"erstellt wird. Diese kann dann jederzeit wiederhergestellt werden, falls es " -"ein Problem mit der neuen Version gibt.\n" -"\n" -"Aktualisierte Konfigurationssammlungen:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "Slic3r-Inkompatibilität" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "Slic3r Konfiguration ist nicht kompatibel" - -#: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Diese Version von Slic3r PE ist nicht kompatibel zu den aktuell " -"installierten Konfigurationssammlungen.\n" -"Dies wurde wahrscheinlich dadurch verursacht, dass Sie eine ältere Slic3r PE " -"Version benutzt haben, nachdem Sie eine neuere ausgeführt hatten.\n" -"\n" -"Sie können Slic3r entweder beenden und es mit einer neueren Version nochmals " -"versuchen, oder Sie können die erstmalige Startkonfiguration nochmals " -"wiederholen. In diesem Fall wird eine Sicherungskopie der aktuellen " -"Konfiguration erstellt, bevor die mit dieser Slic3r-Version kompatiblen " -"Dateien installiert werden.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Diese Slic3r PE Version: %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:126 -msgid "Incompatible bundles:" -msgstr "Inkompatible Konfigurationssammlungen:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" -msgstr "Slic3r beenden" - -#: src/slic3r/GUI/UpdateDialogs.cpp:145 -msgid "Re-configure" -msgstr "Neu konfigurieren" - -#: src/slic3r/GUI/UpdateDialogs.cpp:166 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -msgstr "" -"Slic3r PE verwendet nun eine aktualisierte Konfigurationsstruktur.\n" -"\n" -"Sogenannte 'Systemeinstellungen' wurden eingeführt; diese enthalten die " -"eingebauten Standardeinstellungen für verschiedene Drucker. Diese " -"Systemeinstellungen können nicht verändert werden. Stattdessen können " -"Benutzer nun ihre eigenen Voreinstellungen erstellen, die Werte von einer " -"der Systemeinstellungen übernehmen.\n" -"Eine übernehmende Voreinstellung kann entweder einen bestimmten Wert von " -"ihrem Vorbild übernehmen, oder ihn mit einem eigenen Wert überschreiben.\n" -"\n" -"Bitte fahren Sie fort mit '%s'. Dies folgt nun, um die neuen Einstellungen " -"einzurichten sowie auszuwählen, ob Einstellungen automatisch aktualisiert " -"werden dürfen." - -#: src/slic3r/GUI/UpdateDialogs.cpp:182 -msgid "For more information please visit our wiki page:" -msgstr "Für weitere Informationen besuchen Sie bitte unsere Wiki-Seite:" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 -msgid "Ramming customization" -msgstr "Einstellungen für das Rammen" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"Rammen steht für die beschleunigte Extrusion unmittelbar vor einem " -"Werkzeugwechsel in einem MM-Drucker mit einem Extruder. Der Zweck ist, die " -"Spitze des entladenen Filaments geeignet zu formen, damit es das Laden des " -"neuen Filaments nicht behindert und später selber wieder eingeführt werden " -"kann. Diese Phase ist wichtig und verschiedene Materialien können " -"unterschiedliche Extrusionsgeschwindigkeiten benötigen, um die richtige Form " -"zu erzielen. Aus diesem Grund können die Extrusionsraten für das Rammen " -"angepasst werden.\n" -"\n" -"Dies ist eine Einstellung für fortgeschrittene Benutzer. Falsche Anpassungen " -"werden sehr wahrscheinlich zu Verstopfungen führen oder dazu, dass die Zähne " -"der Extruderwelle ins Filament einschneiden usw." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 -msgid "Total ramming time" -msgstr "Gesamte Rammdauer" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 -msgid "Total rammed volume" -msgstr "Gesamtes Rammvolumen" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Ramming line width" -msgstr "Breite der Rammlinie" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 -msgid "Ramming line spacing" -msgstr "Abstand der Rammlinien" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Reinigungsturm - Anpassung des Reinigungsvolumens" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 -msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." -msgstr "" -"Hier können Sie das erforderliche Reinigungsvolumen (mm³) für ein beliebiges " -"Werkzeugpaar einstellen." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 -msgid "Extruder changed to" -msgstr "Extruder geändert auf" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 -msgid "unloaded" -msgstr "entladen wird" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 -msgid "loaded" -msgstr "geladen wird" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "Tool #" -msgstr "Werkzeug #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." -msgstr "" -"Das gesamte Reinigungsvolumen wird durch die Addition folgender zwei Werte " -"berechnet, je nachdem welche Werkzeuge geladen/entladen sind." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Volumen zum Reinigen (mm³) wenn das Filament ist" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 -msgid "From" -msgstr "Von" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 -msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"Das Umschalten auf einfache Einstellungen verwirft die im erweiterten Modus " -"vorgenommenen Änderungen!\n" -"\n" -"Wollen Sie fortfahren?" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show simplified settings" -msgstr "Vereinfachte Einstellungen anzeigen" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show advanced settings" -msgstr "Ausführliche Einstellungen anzeigen" - -#: src/slic3r/Utils/OctoPrint.cpp:65 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:80 -msgid "Connection to OctoPrint works correctly." -msgstr "Verbindung zu Octoprint funktioniert einwandfrei." - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Could not connect to OctoPrint" -msgstr "Ich konnte keine Verbindung zu OctoPrint herstellen" - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Hinweis: Es ist mindestens die OctoPrint-Version 1.1.0 erforderlich." - -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:186 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:571 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "benötigt min. %s und max. %s" - -#: src/slic3r/Utils/PresetUpdater.cpp:576 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:578 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:334 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:335 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:357 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:372 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:375 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:379 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Print.cpp:1175 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1201 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1216 -msgid "" -"Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1234 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1239 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1241 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1253 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1255 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1257 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1259 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1281 -msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1290 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1307 -msgid "" -"One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1324 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1328 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1350 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1354 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:41 -msgid "Bed shape" -msgstr "Druckbettkontur" - -#: src/libslic3r/PrintConfig.cpp:48 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"Diese Einstellung bestimmt die Höhe (und damit die Gesamtanzahl) der " -"Scheiben/Schichten. Dünnere Schichten ergeben eine bessere Genauigkeit, " -"benötigen aber mehr Zeit zum drucken." - -#: src/libslic3r/PrintConfig.cpp:56 -msgid "Max print height" -msgstr "Max. Druckhöhe" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." -msgstr "" -"Stellen Sie hier die maximale Höhe ein, die Ihr Extruder beim Drucken " -"erreichen kann." - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" -msgstr "Kreuzen der Kontur vermeiden" - -#: src/libslic3r/PrintConfig.cpp:74 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"Optimieren Sie die Verfahrbewegungen, um das Überschreiten von Konturen zu " -"minimieren. Dies ist vor allem bei Bowdenextrudern nützlich, die unter " -"sickerndem Material leiden. Diese Funktion verlangsamt sowohl den Druck als " -"auch die Generierung des G-Codes." - -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 -msgid "Other layers" -msgstr "Andere Schichten" - -#: src/libslic3r/PrintConfig.cpp:83 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" -"Druckbett-Temperatur für Schichten nach der ersten Schicht. Setzen Sie " -"diesen Wert auf Null, um die Befehle zur Steuerung der Betttemperatur im " -"Output zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:86 -msgid "Bed temperature" -msgstr "Druckbetttemperatur" - -#: src/libslic3r/PrintConfig.cpp:93 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"Dieser benutzerdefinierte Code wird bei jedem Lagenwechsel, unmittelbar vor " -"der Z Bewegung, eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für " -"alle Slic3r-Einstellungen sowie [layer_num] und [layer_z] verwenden können." - -#: src/libslic3r/PrintConfig.cpp:104 -msgid "Between objects G-code" -msgstr "G-Code zwischen Objekten" - -#: src/libslic3r/PrintConfig.cpp:105 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Dieser Code wird beim sequentiellen Drucken zwischen Objekten eingefügt. " -"Standardmäßig werden Extruder- und Betttemperatur mit dem Befehl, der nicht " -"auf die Änderung wartet, zurückgesetzt. Wenn jedoch M104, M109, M140 oder " -"M190 in diesem benutzerdefinierten Code erkannt werden, fügt Slic3r keine " -"Temperaturbefehle hinzu. Beachten Sie, dass Sie Platzhaltervariablen für " -"alle Slic3r-Einstellungen verwenden können, so dass Sie einen \"M109 " -"S[first_layer_temperature]\"-Befehl an beliebiger Stelle platzieren können." - -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Unten" - -#: src/libslic3r/PrintConfig.cpp:116 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Anzahl der zu erzeugenden festen Schichten auf der Bodenfläche." - -#: src/libslic3r/PrintConfig.cpp:118 -msgid "Bottom solid layers" -msgstr "Kompakte Basisschichten" - -#: src/libslic3r/PrintConfig.cpp:123 -msgid "Bridge" -msgstr "Überbrückung" - -#: src/libslic3r/PrintConfig.cpp:124 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "" -"Die Beschleunigung, die Ihr Drucker für Brücken verwendet. Setzen Sie dies " -"auf Null, um die Beschleunigungskontrolle bei Brücken zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 -msgid "mm/s²" -msgstr "mm/s²" - -#: src/libslic3r/PrintConfig.cpp:133 -msgid "Bridging angle" -msgstr "Überbrückungswinkel" - -#: src/libslic3r/PrintConfig.cpp:135 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" -"Überbrückungswinkel Übersteuerung. Wird der Wert auf Null gesetzt, wird der " -"Überbrückungswinkel automatisch berechnet. Andernfalls wird der angegebene " -"Winkel für alle Brücken verwendet. Verwenden Sie 180° für den Nullwinkel." - -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:145 -msgid "Bridges fan speed" -msgstr "Brückenventilatorgeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:146 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "" -"Die Lüftergeschwindigkeit, die für Überbrückungen und Überhänge benutzt wird." - -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 -msgid "%" -msgstr "%" - -#: src/libslic3r/PrintConfig.cpp:155 -msgid "Bridge flow ratio" -msgstr "Brückenflussverhältnis" - -#: src/libslic3r/PrintConfig.cpp:157 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"Diese Einstellung beeinflusst den Materialausstoss bei Brücken. Sie können " -"den Wert leicht verringern, um die Extrusionsfäden zu strecken und ein " -"Durchhängen zu vermeiden. Die Standardwerte sind aber normalerweise " -"ausreichend und Sie sollten zuerst mit der Lüftergeschwindigkeit " -"experimentieren, bevor Sie diesen Wert verändern." - -#: src/libslic3r/PrintConfig.cpp:168 -msgid "Bridges" -msgstr "Überbrückungen" - -#: src/libslic3r/PrintConfig.cpp:170 -msgid "Speed for printing bridges." -msgstr "Brückendruckgeschwindigkeit." - -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 -msgid "mm/s" -msgstr "mm/s" - -#: src/libslic3r/PrintConfig.cpp:178 -msgid "Brim width" -msgstr "Randbreite" - -#: src/libslic3r/PrintConfig.cpp:179 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Horizontalbreite des Randes, der um jedes Objekt auf der Bodenschicht " -"gedruckt wird." - -#: src/libslic3r/PrintConfig.cpp:187 -msgid "Clip multi-part objects" -msgstr "Beschneiden von Objekten aus mehreren Teilen" - -#: src/libslic3r/PrintConfig.cpp:188 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" -"Wenn Multi-Material-Objekte gedruckt werden, wird Slic3r mit diesen " -"Einstellungen einen überlappenden Teil des Objekts durch den anderen " -"einschränken (zweiter Teil wird durch den ersten Teil eingeschränkt, dritter " -"Teil wird durch den ersten und zweiten eingeschränkt usw.)." - -#: src/libslic3r/PrintConfig.cpp:196 -msgid "Colorprint height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Compatible printers condition" -msgstr "Kompatible Druckerbedingung" - -#: src/libslic3r/PrintConfig.cpp:208 -msgid "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." -msgstr "" -"Ein boolescher Ausdruck, der die Konfigurationswerte eines aktiven " -"Druckerprofils verwendet. Wenn dieser Ausdruck als wahr bewertet wird, wird " -"dieses Profil als kompatibel mit dem aktiven Druckerprofil angesehen." - -#: src/libslic3r/PrintConfig.cpp:220 -msgid "Compatible print profiles condition" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:221 -msgid "" -"A boolean expression using the configuration values of an active print " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active print profile." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:235 -msgid "Complete individual objects" -msgstr "Kompatible Einzelobjekte" - -#: src/libslic3r/PrintConfig.cpp:236 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"Wenn mehrere Objekte oder Kopien gedruckt werden, wird bei dieser " -"Einstellung jedes Objekt vollständig gedruckt, bevor das nächste (angefangen " -"mit der Bodenschicht) begonnen wird. Diese Einstellung ist nützlich, um " -"Fehldrucke zu vermeiden. Slic3r sollte vor Extruderkollisionen warnen und " -"diese verhindern, aber seien Sie trotzdem aufmerksam." - -#: src/libslic3r/PrintConfig.cpp:245 -msgid "Enable auto cooling" -msgstr "Automatische Kühlung aktivieren" - -#: src/libslic3r/PrintConfig.cpp:246 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "" -"Diese Einstellung aktiviert the Logik, die die Druckgeschwindigkeit und " -"Lüftergeschwindigkeit automatisch gemäß der Schichtdruckdauer regelt." - -#: src/libslic3r/PrintConfig.cpp:252 -msgid "Cooling tube position" -msgstr "Position des Kühlschlauchs" - -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "Abstand des Mittelpunktes des Kühlrohres von der Extruderspitze " - -#: src/libslic3r/PrintConfig.cpp:261 -msgid "Cooling tube length" -msgstr "Länge des Kühlschlauchs" - -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "" -"Länge des Kühlschlauchs, um den Raum für Kühlbewegungen im Inneren zu " -"begrenzen " - -#: src/libslic3r/PrintConfig.cpp:271 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"Dies ist der Beschleunigungswert, auf den Ihr Drucker zurückgesetzt wird, " -"nachdem aufgabenspezifische Beschleunigungswerte (Aussenschichten/Infill) " -"verwendet wurden. Setzen Sie dies auf Null, um ein Zurückstellen der " -"Beschleunigungswerte zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:281 -msgid "Default filament profile" -msgstr "Standard-Filamentprofil" - -#: src/libslic3r/PrintConfig.cpp:282 -msgid "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." -msgstr "" -"Standard-Filamentprofil, das dem aktuellen Druckerprofil zugeordnet ist. Bei " -"Auswahl des aktuellen Druckerprofils wird dieses Filamentprofil aktiviert." - -#: src/libslic3r/PrintConfig.cpp:287 -msgid "Default print profile" -msgstr "Standard-Druckprofil" - -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 -msgid "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." -msgstr "" -"Standarddruckprofil, das dem aktuellen Druckerprofil zugeordnet ist. Bei " -"Auswahl des aktuellen Druckerprofils wird dieses Druckprofil aktiviert." - -#: src/libslic3r/PrintConfig.cpp:293 -msgid "Disable fan for the first" -msgstr "Ventilator für die Ersten" - -#: src/libslic3r/PrintConfig.cpp:294 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" -"Sie können einen positiven Wert eingeben, um den Lüfter vollständig für die " -"ersten Schichten auszuschalten, damit er die Haftung nicht beeinträchtigt." - -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "layers" -msgstr "Schichten" - -#: src/libslic3r/PrintConfig.cpp:304 -msgid "Don't support bridges" -msgstr "Brücken nicht unterstützen" - -#: src/libslic3r/PrintConfig.cpp:306 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "" -"Experimentelle Option zur Verhinderung der Bildung von Trägermaterial unter " -"Überbrückungsflächen." - -#: src/libslic3r/PrintConfig.cpp:313 -msgid "Distance between copies" -msgstr "Abstand zwischen Kopien" - -#: src/libslic3r/PrintConfig.cpp:314 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Abstand für die automatische Druckplattenbelegung." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Elephant foot compensation" -msgstr "Elefantenfuss Kompensation" - -#: src/libslic3r/PrintConfig.cpp:324 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"Die erste Schicht wird in der XY-Ebene um den vorgegebenen Wert verkleinert, " -"um das Ausquetschen in der ersten Schicht (\"Elephant Foot\"-Effekt) zu " -"kompensieren." - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "" -"Dieser G-Code wird am Ende der Ausgabedatei angehängt. Sie können " -"Platzhaltervariablen für alle Slic3r-Einstellungen verwenden." - -#: src/libslic3r/PrintConfig.cpp:345 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"Diese Endprozedur wird am Ende der Ausgabedatei vor dem DruckerEnde G-Code " -"eingefügt. Beachten Sie, dass Sie Platzhaltervariablen für alle Slic3r-" -"Einstellungen verwenden können. Wenn Sie über mehrere Extruder verfügen, " -"wird der G-Code in der Extruderreihenfolge verarbeitet." - -#: src/libslic3r/PrintConfig.cpp:356 -msgid "Ensure vertical shell thickness" -msgstr "Stelle die vertikale Hüllenstärke sicher" - -#: src/libslic3r/PrintConfig.cpp:358 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" -"Fügen Sie stabiles Infill in der Nähe von schrägen Flächen hinzu, um die " -"vertikale Schalenstärke zu gewährleisten (obere und untere massive " -"Schichten)." - -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Boden- und Deckenfüllmuster" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "" -"Füllmuster für die obere und untere Füllung. Dies wirkt sich nur auf die " -"äußere sichtbare Schicht aus, nicht aber auf die angrenzenden soliden " -"Konturen." - -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 -msgid "External perimeters" -msgstr "Aussenschichten" - -#: src/libslic3r/PrintConfig.cpp:388 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für externe Aussenschichten anzugeben. Falls auf Null belassen, wird die " -"Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der " -"Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. " -"200%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "mm or % (leave 0 for default)" -msgstr "mm oder % (für Standardwert auf Null belassen)" - -#: src/libslic3r/PrintConfig.cpp:399 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Diese separate Einstellung wirkt sich auf die Geschwindigkeit der äusseren " -"(sichtbaren) Aussenschichten aus. Als Prozentwert eingegeben (z.B. 80%), " -"wird sie ausgehend von der obigen Geschwindigkeitseinstellung für " -"Aussenschichten berechnet. Für die automatische Berechnung auf Null setzen." - -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 -msgid "mm/s or %" -msgstr "mm/s oder %" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "External perimeters first" -msgstr "Aussenkonturen zuerst drucken" - -#: src/libslic3r/PrintConfig.cpp:411 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "" -"Drucken Sie Konturumfänge von der äußersten zur innersten Kontur anstatt der " -"standardmäßigen umgekehrten Reihenfolge." - -#: src/libslic3r/PrintConfig.cpp:418 -msgid "Extra perimeters if needed" -msgstr "Extra Konturen wenn notwendig" - -#: src/libslic3r/PrintConfig.cpp:420 -#, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" -"Fügen Sie bei Bedarf weitere Perimeter hinzu, um Spalten in schrägen Wänden " -"zu vermeiden. Slic3r fügt immer wieder Perimeter hinzu, bis mehr als 70% der " -"unmittelbar darüber liegenden Schleife unterstützt werden." - -#: src/libslic3r/PrintConfig.cpp:431 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" -"Der Extruder, der verwendet werden soll, falls keine sonstigen " -"Extrudereinstellungen angegeben wurden. Dies übersteuert die Angaben für die " -"Aussenschicht- und Infill-Extruder, aber nicht die Angabe des Extruders für " -"die Stützen." - -#: src/libslic3r/PrintConfig.cpp:444 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"Stellen Sie dies auf den vertikalen Abstand zwischen Ihrer Düsenspitze und " -"(in der Regel) den X-Wagenstangen ein. Mit anderen Worten, das ist die Höhe " -"des Abstandszylinders um Ihren Extruder herum und stellt die maximale Tiefe " -"dar, die der Extruder vor der Kollision mit anderen Druckobjekten sehen kann." - -#: src/libslic3r/PrintConfig.cpp:455 -msgid "Radius" -msgstr "Radius" - -#: src/libslic3r/PrintConfig.cpp:456 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"Stellen Sie dies auf den Freiraumradius um Ihren Extruder ein. Wenn der " -"Extruder nicht zentriert ist, wählen Sie zur Sicherheit den größten Wert. " -"Diese Einstellung wird verwendet, um Kollisionen zu prüfen und die grafische " -"Vorschau auf der Druckplatte anzuzeigen." - -#: src/libslic3r/PrintConfig.cpp:467 -msgid "Extruder Color" -msgstr "Extruder Farbe" - -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "" -"Dies wird nur als visuelles Hilfsmittel in der Slic3r-Benutzeroberfläche " -"verwendet." - -#: src/libslic3r/PrintConfig.cpp:475 -msgid "Extruder offset" -msgstr "Extruder Offset" - -#: src/libslic3r/PrintConfig.cpp:476 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"Wenn Ihre Firmware die Verschiebung des Extruders nicht beherrscht, " -"benötigen Sie den G-Code, um sie zu berücksichtigen. Mit dieser Option " -"können Sie die Verschiebung jedes Extruders in Bezug auf den ersten Extruder " -"festlegen. Es erwartet positive Koordinaten (sie werden von der XY-" -"Koordinate subtrahiert)." - -#: src/libslic3r/PrintConfig.cpp:486 -msgid "Extrusion axis" -msgstr "Extrusionsachse" - -#: src/libslic3r/PrintConfig.cpp:487 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"Verwenden Sie diese Einstellung, um den Buchstaben der Achse anzugeben, die " -"mit Ihrem Extruder verknüpft ist (normalerweise E, aber bei manchen Druckern " -"ist dies A)." - -#: src/libslic3r/PrintConfig.cpp:493 -msgid "Extrusion multiplier" -msgstr "Extrusionsfaktor" - -#: src/libslic3r/PrintConfig.cpp:494 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"Dieser Faktor ändert die Extrusionsmenge proportional. Sie müssen diese " -"Einstellung möglicherweise anpassen, um schöne Oberflächen und korrekte " -"Hüllendicken zu erhalten. Die üblichen Werte bewegen sich zwischen 0,9 und " -"1,1. Falls Sie grössere Anpassungen eingeben müssen, kontrollieren Sie auch " -"den Filamentdurchmesser und die E-Schritte in Ihrer Firmware." - -#: src/libslic3r/PrintConfig.cpp:503 -msgid "Default extrusion width" -msgstr "Standardextrusionsbreite" - -#: src/libslic3r/PrintConfig.cpp:505 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"zuzulassen. Falls auf Null belassen, wird Slic3r die Extrusionsbreiten vom " -"Durchmesser der Druckdüse ableiten (siehe die Hilfstexte für die " -"Extrusionsbreite für Aussenschichten, Infill usw.). Falls als Prozentwert (z." -"B. 230%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:509 -msgid "mm or % (leave 0 for auto)" -msgstr "mm oder % (für automatischen Wert auf Null belassen)" - -#: src/libslic3r/PrintConfig.cpp:515 -msgid "Keep fan always on" -msgstr "Ventilator ständig laufen lassen" - -#: src/libslic3r/PrintConfig.cpp:516 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"Wenn diese Option aktiviert ist, wird der Lüfter niemals deaktiviert und " -"läuft mindestens mit seiner Minimaldrehzahl weiter. Sinnvoll für PLA, " -"ungeignet für ABS." - -#: src/libslic3r/PrintConfig.cpp:522 -msgid "Enable fan if layer print time is below" -msgstr "Ventilator anschalten wenn die Schichtdruckzeit geringer ist als" - -#: src/libslic3r/PrintConfig.cpp:523 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"Wenn die Druckzeit der Ebenen unter dieser Anzahl von Sekunden liegt, wird " -"der Lüfter aktiviert und seine Geschwindigkeit durch Interpolation der " -"minimalen und maximalen Geschwindigkeiten berechnet." - -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 -msgid "approximate seconds" -msgstr "ungefähre Sekunden" - -#: src/libslic3r/PrintConfig.cpp:534 -msgid "Color" -msgstr "Farbe" - -#: src/libslic3r/PrintConfig.cpp:541 -msgid "Filament notes" -msgstr "Filament Bemerkungen" - -#: src/libslic3r/PrintConfig.cpp:542 -msgid "You can put your notes regarding the filament here." -msgstr "Sie können Ihre Notizen zum Filament hier eingeben." - -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 -msgid "Max volumetric speed" -msgstr "Maximale Volumengeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:552 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"Maximale volumetrische Geschwindigkeit, die für dieses Filament zulässig " -"ist. Begrenzt die maximale volumetrische Geschwindigkeit eines Drucks auf " -"das Minimum von Druck- und Filament-Volumengeschwindigkeit. Wird auf Null " -"gesetzt, wenn es keine Begrenzung gibt." - -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "mm³/s" - -#: src/libslic3r/PrintConfig.cpp:562 -msgid "Loading speed" -msgstr "Ladegeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "" -"Geschwindigkeit, mit der Filament auf dem Reinigungsturm geladen wird. " - -#: src/libslic3r/PrintConfig.cpp:571 -msgid "Loading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:580 -msgid "Unloading speed" -msgstr "Entladegeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:581 -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " -msgstr "" -"Geschwindigkeit, mit der Filament auf dem Reinigungsturm entladen wird " -"(betrifft nicht den ersten Teil des Entladens direkt nach dem Rammen). " - -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:591 -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:599 -msgid "Delay after unloading" -msgstr "Verzögerung nach dem Entladen" - -#: src/libslic3r/PrintConfig.cpp:600 -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " -msgstr "" -"Wartezeit, nachdem das Filament entladen wurde. Dies kann zu zuverlässigeren " -"Werkzeugwechseln beitragen bei flexiblen Materialien, die mehr Zeit zum " -"Schrumpfen auf ihre ursprüngliche Grösse brauchen. " - -#: src/libslic3r/PrintConfig.cpp:610 -msgid "Number of cooling moves" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:611 -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:620 -msgid "Speed of the first cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:629 -msgid "Minimal purge on wipe tower" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:630 -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:635 -msgid "mm³" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:641 -msgid "Speed of the last cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:650 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:651 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:659 -msgid "Ramming parameters" -msgstr "Rammparameter" - -#: src/libslic3r/PrintConfig.cpp:660 -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " -msgstr "" -"Diese Zeichenfolge wird vom RammDialog angepasst und enthält für das Rammen " -"spezifische Parameter " - -#: src/libslic3r/PrintConfig.cpp:667 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"Geben Sie hier Ihren Filamentdurchmesser ein. Eine hohe Genauigkeit ist " -"erforderlich, also verwenden Sie einen Messschieber und führen Sie mehrere " -"Messungen entlang des Filaments durch, um dann den Mittelwert zu berechnen." - -#: src/libslic3r/PrintConfig.cpp:685 -msgid "Density" -msgstr "Dichte" - -#: src/libslic3r/PrintConfig.cpp:686 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"Geben Sie hier Ihre Filamentdichte ein. Dies dient ausschließlich " -"statistischen Zwecken. Ein vernünftiger Weg ist es, eine bekannte " -"Filamentlänge zu wiegen und das Verhältnis von Länge zu Volumen zu " -"berechnen. Besser ist es, das Volumen direkt durch Verdrängung zu berechnen." - -#: src/libslic3r/PrintConfig.cpp:689 -msgid "g/cm³" -msgstr "g/cm³" - -#: src/libslic3r/PrintConfig.cpp:695 -msgid "Filament type" -msgstr "Filament Typ" - -#: src/libslic3r/PrintConfig.cpp:696 -msgid "The filament material type for use in custom G-codes." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:712 -msgid "Soluble material" -msgstr "Lösliches Material" - -#: src/libslic3r/PrintConfig.cpp:713 -msgid "Soluble material is most likely used for a soluble support." -msgstr "Lösliches Material wird meistens für lösliche Stützen verwendet." - -#: src/libslic3r/PrintConfig.cpp:719 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "" -"Geben Sie hier Ihre Filamentkosten pro kg ein. Dies dient ausschließlich " -"statistischen Zwecken." - -#: src/libslic3r/PrintConfig.cpp:720 -msgid "money/kg" -msgstr "Kosten/kg" - -#: src/libslic3r/PrintConfig.cpp:729 -msgid "Fill angle" -msgstr "Füllwinkel" - -#: src/libslic3r/PrintConfig.cpp:731 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"Standard-Grundwinkel für die Ausrichtung der Füllung. Hierfür werden " -"Kreuzschraffuren verwendet. Brücken werden mit der besten Richtung gefüllt, " -"die Slic3r erkennen kann, so dass diese Einstellung sie nicht beeinflusst." - -#: src/libslic3r/PrintConfig.cpp:744 -msgid "Fill density" -msgstr "Fülldichte" - -#: src/libslic3r/PrintConfig.cpp:746 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Infilldichte. Als Prozentwert von 0% - 100% ausgedrückt." - -#: src/libslic3r/PrintConfig.cpp:782 -msgid "Fill pattern" -msgstr "Füllmuster" - -#: src/libslic3r/PrintConfig.cpp:784 -msgid "Fill pattern for general low-density infill." -msgstr "Füllmuster für allgemeines Infill mit niedriger Dichte." - -#: src/libslic3r/PrintConfig.cpp:801 -msgid "Grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:802 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Cubic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:805 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:808 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:809 -msgid "Gyroid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 -msgid "First layer" -msgstr "Erste Schicht" - -#: src/libslic3r/PrintConfig.cpp:817 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "" -"Die Beschleunigung, die Ihr Drucker für die erste Schicht verwendet. Setzen " -"Sie dies auf Null, um die Beschleunigungskontrolle bei der ersten Schicht zu " -"deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:827 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "" -"Druckbetttemperatur für die erste Schicht. Setzen Sie diesen Wert auf Null, " -"um die Befehle zur Steuerung der Betttemperatur im Ausgang zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:837 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für die erste Druckschicht anzugeben. Sie können damit eine dickere " -"Extrusion für bessere Haftung erzwingen. Falls auf Null belassen, wird die " -"Standard-Extrusionsbreite verwendet. Falls als Prozentwert (z.B. 120%) " -"angegeben, wird dieser ausgehend von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:848 -msgid "First layer height" -msgstr "Höhe der ersten Schicht" - -#: src/libslic3r/PrintConfig.cpp:850 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"Wenn mit sehr kleinen Schichthöhen gedruckt wird, möchten Sie vielleicht " -"trotzdem eine dickere Bodenschicht drucken, um die Haftung sowie die " -"Toleranz bei nicht perfekt ebenen Druckplatten zu verbessern. Dieser Wert " -"kann als Absolutwert oder als Prozentwert (z.B. 150%) der " -"Standardschichthöhe angegeben werden." - -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 -msgid "mm or %" -msgstr "mm oder %" - -#: src/libslic3r/PrintConfig.cpp:860 -msgid "First layer speed" -msgstr "Druckgeschwindigkeit der ersten Schicht" - -#: src/libslic3r/PrintConfig.cpp:861 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"Wird diese Geschwindigkeit als Absolutwert in mm/s angegeben, so wird sie " -"auf alle Druckbewegungen der ersten Lage angewendet, unabhängig von ihrem " -"Typ. In Prozent ausgedrückt (z.B. 40%) skaliert es die voreingestellten " -"Geschwindigkeiten." - -#: src/libslic3r/PrintConfig.cpp:872 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"Extrudertemperatur für die erste Schicht. Wenn Sie die Temperatur während " -"des Druckvorgangs manuell regeln möchten, setzen Sie diesen Wert auf Null, " -"um die Temperatursteuerbefehle in der Ausgabedatei zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:882 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" -"Geschwindigkeit, mit der kleine Lücken mit kurzen Zickzackbewegungen gefüllt " -"werden. Beschränken Sie diese auf einen mässigen Wert, um übermässiges " -"Rütteln und Resonanzprobleme zu vermeiden. Auf Null gesetzt, wird das Füllen " -"kleiner Lücken deaktiviert." - -#: src/libslic3r/PrintConfig.cpp:890 -msgid "Verbose G-code" -msgstr "Ausführlicher G-Code" - -#: src/libslic3r/PrintConfig.cpp:891 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Aktivieren Sie diese Option, um eine kommentierte G-Code-Datei zu erhalten, " -"wobei jede Zeile durch einen beschreibenden Text erklärt wird. Wenn Sie von " -"einer SD-Karte drucken, kann die zusätzliche Dateigröße dazu führen, dass " -"Ihre Firmware langsamer wird." - -#: src/libslic3r/PrintConfig.cpp:899 -msgid "G-code flavor" -msgstr "G-Code Typ" - -#: src/libslic3r/PrintConfig.cpp:900 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"Einige G/M-Code-Befehle, einschließlich Temperatursteuerung und andere, sind " -"nicht universell. Stellen Sie diese Option auf die Firmware Ihres Druckers " -"ein, um eine kompatible Ausgabe zu erhalten. Die Eigenschaft \"Keine " -"Extrusion\" verhindert, dass Slic3r überhaupt einen Extrusionswert " -"exportiert." - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:929 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:930 -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:939 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "" -"Diese Stellung bestimmt die Beschleunigung des Druckers für Infill. Setzen " -"Sie dies auf Null, um die Beschleunigungskontrolle für Infill zu " -"deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:948 -msgid "Combine infill every" -msgstr "Infill kombinieren alle" - -#: src/libslic3r/PrintConfig.cpp:950 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"Diese Einstellung erlaubt es, Infill zu kombinieren und die Druckdauer zu " -"verringern, indem dickere Infill-Schichten gedruckt werden, während " -"gleichzeitig dünne Aussenschichten und damit die Genauigkeit erhalten " -"bleiben." - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "Combine infill every n layers" -msgstr "Kombiniere das Infill all n Schichten" - -#: src/libslic3r/PrintConfig.cpp:960 -msgid "Infill extruder" -msgstr "Infill Extruder" - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "The extruder to use when printing infill." -msgstr "Extruder der beim Infill benutzt wird." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für den Infill anzugeben. Falls auf Null belassen, wird die Standard-" -"Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser " -"der Druckdüse x 1,125 verwendet. Dickere Extrusionsbreiten sind vorteilhaft, " -"um den Infill zu beschleunigen und um die Teile stärker zu machen. Falls als " -"Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend von der Schichthöhe " -"berechnet." - -#: src/libslic3r/PrintConfig.cpp:981 -msgid "Infill before perimeters" -msgstr "Infill vor Kontur" - -#: src/libslic3r/PrintConfig.cpp:982 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "" -"Diese Einstellungen kehrt die Druckreihenfolge von Aussenschichten und " -"Infill um, sodass der Infill zuerst gedruckt wird." - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "Only infill where needed" -msgstr "Infill nur wo es notwendig ist drucken" - -#: src/libslic3r/PrintConfig.cpp:990 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"Diese Einstellung beschränkt den Infill auf die Bereiche, die tatsächlich " -"für das Stützen von Decken benötigt werden (der Infill dient hier als " -"internes Stützmaterial). Falls aktiviert, kann dies die Erstellung des G-" -"Codes wegen zusätzlichen Kontrollschritten verlangsamen." - -#: src/libslic3r/PrintConfig.cpp:998 -msgid "Infill/perimeters overlap" -msgstr "Infill/Kontur Überlappung" - -#: src/libslic3r/PrintConfig.cpp:1000 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"Diese Einstellung fügt eine zusätzliche Überlappung zwischen Aussenschichten " -"und Infill ein, um die Haftung zu verbessern. Theoretisch sollte dies nicht " -"notwendig sein, doch vorhandenes Getriebespiel könnte Lücken erzeugen. Als " -"Prozentwert eingegeben (z.B. 15%) wird sie ausgehend von der " -"Extrusionsbreite für die Aussenschicht ausgerechnet." - -#: src/libslic3r/PrintConfig.cpp:1012 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "Druckgeschwindigkeit für den Infill. Für Automatik auf Null setzen." - -#: src/libslic3r/PrintConfig.cpp:1020 -msgid "Inherits profile" -msgstr "Übernimmt Profil" - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Name of the profile, from which this profile inherits." -msgstr "Name des Profils, von dem dieses Profil abgeleitet wurde." - -#: src/libslic3r/PrintConfig.cpp:1032 -msgid "Interface shells" -msgstr "Schnittstellenshells" - -#: src/libslic3r/PrintConfig.cpp:1033 -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." -msgstr "" -"Erzwingt die Erzeugung von festen Schalen zwischen benachbarten Materialien/" -"Volumina. Geeignet für Multiextruderdrucke mit transluzenten Materialien " -"oder manuell löslichen Trägermaterialien." - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"Dieser benutzerdefinierte Code wird bei jedem Schichtwechsel eingefügt, " -"direkt nach der Z-Bewegung und bevor der Extruder zum ersten Lagenpunkt " -"fährt. Beachten Sie, dass Sie Platzhaltervariablen für alle Slic3r-" -"Einstellungen sowie [layer_num] und [layer_z] verwenden können." - -#: src/libslic3r/PrintConfig.cpp:1054 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1055 -msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 -msgid "Max" -msgstr "Max" - -#: src/libslic3r/PrintConfig.cpp:1164 -msgid "This setting represents the maximum speed of your fan." -msgstr "Diese Einstellung bestimmt die maximale Geschwindigkeit Ihres Lüfters." - -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" -"Dies ist die höchste druckbare Schichthöhe für diesen Extruder, mit der die " -"variable Schichthöhe und Stützschichthöhe abgedeckt wird. Die maximale " -"empfohlene Schichthöhe beträgt 75% der Extrusionsbreite, um eine angemessene " -"Zwischenlagenhaftung zu erreichen. Bei Einstellung auf 0 ist die Lagenhöhe " -"auf 75% des Düsendurchmessers begrenzt." - -#: src/libslic3r/PrintConfig.cpp:1185 -msgid "Max print speed" -msgstr "Maximale Druckgeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:1186 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"Wenn andere Geschwindigkeitseinstellungen auf Null gesetzt wurden, wird " -"Slic3r die optimale Geschwindigkeit automatisch berechnen, um den " -"Extruderdruck konstant zu halten. Diese experimentelle Einstellung erlaubt " -"Ihnen, die höchste zulässige Druckgeschwindigkeit anzugeben." - -#: src/libslic3r/PrintConfig.cpp:1197 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "" -"Diese experimentelle Einstellung gibt die maximale volumetrische " -"Geschwindigkeit an, die von Ihrem Extruder unterstützt wird." - -#: src/libslic3r/PrintConfig.cpp:1206 -msgid "Max volumetric slope positive" -msgstr "Max. volumetrische Steigung positiv" - -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" -"Diese experimentelle Einstellung beschränkt die Änderungsgeschwindigkeit der " -"Extrusionsmenge. Ein Wert von 1.8 mm³/s² gewährleistet, dass eine Änderung " -"der Extrusionsmenge von 1.8 mm³/s (0.45mm Extrusionsbreite, 0.2mm " -"Extrusionshöhe, Vorschub 20 mm/s) zu 5.4 mm³/s (Vorschub 60 mm/s) mindestens " -"2 Sekunden dauern wird." - -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: src/libslic3r/PrintConfig.cpp:1218 -msgid "Max volumetric slope negative" -msgstr "Max. volumetrische Steigung negativ" - -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 -msgid "Min" -msgstr "Min" - -#: src/libslic3r/PrintConfig.cpp:1231 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "" -"Diese Einstellung gibt den minimalen PWM-Wert an, den Ihr Lüfter für den " -"Betrieb benötigt." - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" -"Dies ist die niedrigste druckbare Schichthöhe für diesen Extruder und " -"begrenzt die Auflösung bei variabler Schichthöhe. Typische Werte liegen " -"zwischen 0,05 mm und 0,1 mm." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Min print speed" -msgstr "Minimale Druckgeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "Slic3r will not scale speed down below this speed." -msgstr "" -"Slic3r wird die Geschwindigkeit nicht unterhalb dieser Geschwindigkeit " -"skalieren." - -#: src/libslic3r/PrintConfig.cpp:1259 -msgid "Minimal filament extrusion length" -msgstr "Minimale Filament Extrusionlänge" - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"Erzeugt nicht weniger als die Anzahl der Schürzenschleifen, die benötigt " -"wird, um die angegebene Menge an Filament auf der unteren Schicht zu " -"verbrauchen. Bei Multiextruder-Maschinen gilt dieses Minimum für jeden " -"Extruder." - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Configuration notes" -msgstr "Konfigurationsnotizen" - -#: src/libslic3r/PrintConfig.cpp:1271 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Sie können hier Ihre persönlichen Notizen eingeben. Der Text wird dem " -"Header vom G-Code hinzugefügt." - -#: src/libslic3r/PrintConfig.cpp:1281 -msgid "Nozzle diameter" -msgstr "Düsendurchmesser" - -#: src/libslic3r/PrintConfig.cpp:1282 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "Durchmesser der Extruderdüse (z.B.: 0.5, 0.35 usw.)" - -#: src/libslic3r/PrintConfig.cpp:1288 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1289 -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "Hostname, IP oder URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 -msgid "Only retract when crossing perimeters" -msgstr "Nur bei Umfangsüberquerungen einziehen" - -#: src/libslic3r/PrintConfig.cpp:1326 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "" -"Deaktiviert den Einzug, wenn der Verfahrweg die Perimeter der oberen Schicht " -"nicht überschreitet (und somit ist der Auslauf wahrscheinlich unsichtbar)." - -#: src/libslic3r/PrintConfig.cpp:1334 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" -"Mit dieser Option wird die Temperatur der inaktiven Extruder gesenkt, um ein " -"Materialnachsickern zu verhindern. Es aktiviert automatisch eine hohe " -"Schürze und bewegt die Extruder bei Temperaturänderungen ausserhalb dieser " -"Schürze." - -#: src/libslic3r/PrintConfig.cpp:1342 -msgid "Output filename format" -msgstr "Ausgabe Dateinamen Format" - -#: src/libslic3r/PrintConfig.cpp:1343 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"Sie können alle Konfigurationsoptionen als Variablen in dieser Vorlage " -"benutzen. Zum Beispiel: [layer_height], [fill_density] usw. Sie können " -"auch [timestamp], [year], [month], [day], [hour], [minute], [second], " -"[version], [input_filename], und [input_filename_base] benutzen." - -#: src/libslic3r/PrintConfig.cpp:1353 -msgid "Detect bridging perimeters" -msgstr "Umfangbrücken entdecken" - -#: src/libslic3r/PrintConfig.cpp:1355 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"Experimentelle Option zur Anpassung des Durchflusses für Überhänge " -"(Brückenvolumenfluss wird verwendet), zur Anwendung der " -"Brückengeschwindigkeit und zur Aktivierung des Lüfters." - -#: src/libslic3r/PrintConfig.cpp:1362 -msgid "Filament parking position" -msgstr "Filament Parkposition" - -#: src/libslic3r/PrintConfig.cpp:1363 -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " -msgstr "" -"Abstand der Extruderspitze von der Position, an der das Filament beim " -"Entladen abgestellt wird. Dies sollte mit dem Wert in der Drucker-Firmware " -"übereinstimmen. " - -#: src/libslic3r/PrintConfig.cpp:1372 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1373 -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 -msgid "Perimeters" -msgstr "Konturen" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"Dies ist die Beschleunigung, die der Drucker für Aussenschichten benutzen " -"wird. Ein hoher Wert wie 9000 ergibt üblicherweise gute Resultate falls Ihre " -"Hardware mithalten kann. Setzen Sie dies auf Null, um die " -"Beschleunigungskontrolle bei Aussenschichten zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:1392 -msgid "Perimeter extruder" -msgstr "Umfang Extruder" - -#: src/libslic3r/PrintConfig.cpp:1394 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "" -"Extruder der beim Umfang und Rand Drucken benutzt werden soll. Der erste " -"Extruder ist 1." - -#: src/libslic3r/PrintConfig.cpp:1404 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für Aussenschichten anzugeben. Dünnere Extrusionsbreiten sind vorteilhaft, " -"um genauere Oberflächen zu erhalten. Falls auf Null belassen, wird die " -"Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der " -"Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. " -"200%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" -"Geschwindigkeit für Aussenschichten (Konturen, bzw. vertikale Hüllen). Für " -"Automatik auf Null setzen." - -#: src/libslic3r/PrintConfig.cpp:1427 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"Diese Stellung bestimmt die Anzahl der Aussenschichten, die für jede Schicht " -"erzeugt werden. Slic3r kann diese Zahl automatisch vergrössern, wenn es " -"schräge Oberflächen erkennt, die sich mit einer höheren Zahl von " -"Aussenschichten besser drucken lassen, wenn die \"Zusätzliche " -"Aussenschichten falls notwendig\" Option aktiviert ist." - -#: src/libslic3r/PrintConfig.cpp:1431 -msgid "(minimum)" -msgstr "(Minimum)" - -#: src/libslic3r/PrintConfig.cpp:1439 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Wenn Sie den Ausgabe-G-Code durch eigene Skripte verarbeiten wollen, geben " -"Sie hier einfach die absoluten Pfade an. Trennen Sie mehrere Skripte durch " -"ein Semikolon. Skripten werden als erstes Argument die absoluten Pfad zur G-" -"Code-Datei übergeben, und sie können auf die Slic3r-" -"Konfigurationseinstellungen zugreifen, indem sie Umgebungsvariablen lesen." - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "Printer type" -msgstr "Druckertyp" - -#: src/libslic3r/PrintConfig.cpp:1453 -msgid "Type of the printer." -msgstr "Druckertyp." - -#: src/libslic3r/PrintConfig.cpp:1457 -msgid "Printer notes" -msgstr "Drucker Anmerkungen" - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "You can put your notes regarding the printer here." -msgstr "Sie können Ihre Bemerkungen zum Drucker hier eingeben." - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "Printer vendor" -msgstr "Druckerhersteller" - -#: src/libslic3r/PrintConfig.cpp:1468 -msgid "Name of the printer vendor." -msgstr "Name des Druckerherstellers." - -#: src/libslic3r/PrintConfig.cpp:1472 -msgid "Printer variant" -msgstr "Druckervariante" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." -msgstr "" -"Name der Druckervariante. Beispielsweise können die Druckervarianten durch " -"einen Düsendurchmesser unterschieden werden." - -#: src/libslic3r/PrintConfig.cpp:1483 -msgid "Raft layers" -msgstr "Raft Schichten" - -#: src/libslic3r/PrintConfig.cpp:1485 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "" -"Das Objekt wird um diese Anzahl von Schichten angehoben, und darunter wird " -"Trägermaterial erzeugt." - -#: src/libslic3r/PrintConfig.cpp:1494 -msgid "Resolution" -msgstr "Auflösung" - -#: src/libslic3r/PrintConfig.cpp:1495 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"Minimale Detailauflösung, die verwendet wird, um die Eingabedatei zu " -"vereinfachen, um den Slicingjob zu beschleunigen und den Speicherverbrauch " -"zu reduzieren. Hochauflösende Modelle weisen oft mehr Details auf, als der " -"Drucker wiedergeben kann. Setzen Sie den Wert auf Null, um die Vereinfachung " -"zu deaktivieren und die volle Auflösung des Eingangsdatei zu verwenden." - -#: src/libslic3r/PrintConfig.cpp:1506 -msgid "Minimum travel after retraction" -msgstr "Minimalbewegung nach Einziehen" - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "" -"Der Einzug wird nicht ausgelöst, wenn die Fahrbewegungen kürzer als diese " -"Länge sind." - -#: src/libslic3r/PrintConfig.cpp:1514 -msgid "Retract amount before wipe" -msgstr "Einzugslänge vor einer Reinigung" - -#: src/libslic3r/PrintConfig.cpp:1515 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" -"Bei Bowden-Extrudern kann es ratsam sein, vor der Reinigungsbewegung einen " -"kurzen Einzug auszuführen." - -#: src/libslic3r/PrintConfig.cpp:1523 -msgid "Retract on layer change" -msgstr "Bei Schichtwechsel Einziehen" - -#: src/libslic3r/PrintConfig.cpp:1524 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "Diese Stellung erzwingt einen Einzug bei jeder Z-Bewegung." - -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 -msgid "Length" -msgstr "Länge" - -#: src/libslic3r/PrintConfig.cpp:1531 -msgid "Retraction Length" -msgstr "Einzugslänge" - -#: src/libslic3r/PrintConfig.cpp:1532 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"Wenn der Einzug ausgelöst wird, wird das Filament um diese Länge " -"eingezogen. (Die Länge wird am unverarbeiteten Filament vor dem Extruder " -"gemessen)." - -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 -msgid "mm (zero to disable)" -msgstr "mm (Null eingeben zum deaktivieren)" - -#: src/libslic3r/PrintConfig.cpp:1540 -msgid "Retraction Length (Toolchange)" -msgstr "Einzugslänge (Werkzeugwechsel)" - -#: src/libslic3r/PrintConfig.cpp:1541 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"Wenn der Einzug vor dem Werkzeugwechsel ausgelöst wird, wird das Filament um " -"diese Länge eingezogen. (Die Länge wird am unverarbeiteten Filament vor dem " -"Extruder gemessen)." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Lift Z" -msgstr "Z Hebung" - -#: src/libslic3r/PrintConfig.cpp:1551 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"Wenn Sie diesen Wert auf einen positiven Wert setzen, wird Z bei jedem " -"Auslösen eines Einzugs schnell angehoben. Bei Verwendung mehrerer Extruder " -"wird nur die Einstellung für den ersten Extruder berücksichtigt." - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Above Z" -msgstr "Über Z" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Only lift Z above" -msgstr "Z nur Anheben über" - -#: src/libslic3r/PrintConfig.cpp:1561 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"Wenn Sie diesen Wert auf einen positiven Wert setzen, erfolgt der Z-Hub nur " -"oberhalb des angegebenen absoluten Z-Wertes. Sie können diese Einstellung " -"für das Auslassen von Z-Hüben auf den ersten Ebenen einstellen." - -#: src/libslic3r/PrintConfig.cpp:1569 -msgid "Below Z" -msgstr "Unter Z" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Only lift Z below" -msgstr "Z anheben nur unter" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"Wenn Sie diesen Wert auf einen positiven Wert setzen, erfolgt der Z-Hub nur " -"unterhalb des angegebenen absoluten Z-Wertes. Sie können diese Einstellung " -"so einstellen, dass der Z-Hub auf die ersten Lagen begrenzt wird." - -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 -msgid "Extra length on restart" -msgstr "Extra Länge bei Neustart" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"Wenn der Einzug nach der Zwischenbewegung kompensiert wurde, wird der " -"Extruder diese zusätzliche Menge an Filament ausgeben. Diese Einstellung " -"wird selten benötigt." - -#: src/libslic3r/PrintConfig.cpp:1590 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Wenn der Einzug nach dem Werkzeugwechsel kompensiert wurde, wird der " -"Extruder diese zusätzliche Menge an Filament ausgeben." - -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 -msgid "Retraction Speed" -msgstr "Einzugsgeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:1600 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "Die Einzugsgeschwindigkeit (sie betrifft nur den Extruderantrieb)." - -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 -msgid "Deretraction Speed" -msgstr "Wiedereinzugsgeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" -"Die Geschwindigkeit, mit der ein Filament nach dem Einzug wieder in den " -"Extruder vorgeschoben wird. Falls Null, wird die Einzugsgeschwindigkeit " -"verwendet." - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "Seam position" -msgstr "Nahtposition" - -#: src/libslic3r/PrintConfig.cpp:1619 -msgid "Position of perimeters starting points." -msgstr "Position des Startpunktes des Umfangs." - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1627 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1628 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 -msgid "Direction" -msgstr "Richtung" - -#: src/libslic3r/PrintConfig.cpp:1638 -msgid "Preferred direction of the seam" -msgstr "Bevorzugte Richtung für die Naht" - -#: src/libslic3r/PrintConfig.cpp:1639 -msgid "Seam preferred direction" -msgstr "Bevorzugte Richtung für Nähte" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "Jitter" -msgstr "Jitter" - -#: src/libslic3r/PrintConfig.cpp:1649 -msgid "Seam preferred direction jitter" -msgstr "Bevorzugte Zitterrichtung für Nähte" - -#: src/libslic3r/PrintConfig.cpp:1650 -msgid "Preferred direction of the seam - jitter" -msgstr "Bevorzugte Zitterrichtung für die Naht" - -#: src/libslic3r/PrintConfig.cpp:1661 -msgid "USB/serial port for printer connection." -msgstr "USB-/serielle Schnittstelle für den Druckeranschluss." - -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Serielle Portgeschwindigkeit" - -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "" -"Geschwindigkeit (baud) des USB/seriellen Ports für den Drucker Anschluß." - -#: src/libslic3r/PrintConfig.cpp:1679 -msgid "Distance from object" -msgstr "Abstand vom Objekt" - -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "" -"Distanz zwischen Schürze und Objekt. Auf Null stellen um die Schürze an das " -"Objekt zu verbinden und einen Rand für bessere Haftung zu generieren." - -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "Skirt height" -msgstr "Schürzenhöhe" - -#: src/libslic3r/PrintConfig.cpp:1689 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "" -"Höhe der Schürze in Schichten. Eine hohe Schürze kann gegen Zugluft " -"schützen." - -#: src/libslic3r/PrintConfig.cpp:1697 -msgid "Loops (minimum)" -msgstr "Schleifen (minimal)" - -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "Skirt Loops" -msgstr "Schleifen für die Schürze" - -#: src/libslic3r/PrintConfig.cpp:1699 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"Anzahl der Schleifen für die Schürze. Wenn die Option Minimale " -"Extrusionslänge gesetzt ist, kann die Anzahl der Schleifen größer sein als " -"die hier konfigurierte. Setzen Sie diesen Wert auf Null, um die Schürze " -"komplett zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:1708 -msgid "Slow down if layer print time is below" -msgstr "Langsamer drucken wenn die Schichtdruckzeit geringer ist als" - -#: src/libslic3r/PrintConfig.cpp:1709 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"Wenn die Druckzeit der Ebene unter dieser Anzahl von Sekunden liegt, wird " -"die Geschwindigkeit des Druckvorgangs verringert, um die Zeitdauer auf " -"diesen Wert zu verlängern." - -#: src/libslic3r/PrintConfig.cpp:1720 -msgid "Small perimeters" -msgstr "Dünne Aussenschichten" - -#: src/libslic3r/PrintConfig.cpp:1722 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Diese separate Einstellung wirkt sich auf die Geschwindigkeit von " -"Aussenschichten mit einem Radius <= 6,5 mm (üblicherweise Bohrungen) aus. " -"Als Prozentwert eingegeben (z.B. 80%), wird sie ausgehend von der obigen " -"Geschwindigkeitseinstellung für Aussenschichten berechnet. Für eine " -"automatische Berechnung setzen Sie dies auf Null." - -#: src/libslic3r/PrintConfig.cpp:1732 -msgid "Solid infill threshold area" -msgstr "Massives Infill Flächen Schwellwert" - -#: src/libslic3r/PrintConfig.cpp:1734 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "" -"Feste Füllung für Bereiche, die eine kleinere Fläche als die angegebene " -"Schwelle aufweisen." - -#: src/libslic3r/PrintConfig.cpp:1735 -msgid "mm²" -msgstr "mm²" - -#: src/libslic3r/PrintConfig.cpp:1742 -msgid "Solid infill extruder" -msgstr "Massives Infill Extruder" - -#: src/libslic3r/PrintConfig.cpp:1744 -msgid "The extruder to use when printing solid infill." -msgstr "Der Extruder der beim Drucken von solidem Infill benutzt werden soll." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "Solid infill every" -msgstr "Massives Infill alle" - -#: src/libslic3r/PrintConfig.cpp:1753 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"Diese Einstellung erzwingt eine stabile Schicht nach einer vorgegebenen " -"Anzahl von Schichten. Null deaktiviert diese Einstellung. Sie können jeden " -"Wert eingeben (z.B. 9999); Slic3r wird automatisch die grösstmögliche Anzahl " -"von Schichten wählen, die in Abhängigkeit von Düsendurchmesser und " -"Schichthöhe kombiniert werden können." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für den Infill bei stabilen Flächen anzugeben. Falls auf Null belassen, wird " -"die Standard-Extrusionsbreite verwendet (falls angeben), ansonsten wird der " -"Durchmesser der Druckdüse x 1,125 verwendet. Falls als Prozentwert (z.B. " -"90%) angegeben, wird dieser ausgehend von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" -"Druckgeschwindigkeit für stabile Bereiche (obere/untere/innenliegende " -"waagrechte Hüllen). Sie kann als Prozentwert (z.B. 80%) der oben " -"eingegebenen standardmässigen Infill-Geschwindigkeit angegeben werden. Für " -"Automatik auf Null setzen." - -#: src/libslic3r/PrintConfig.cpp:1789 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "" -"Anzahl der zu erzeugenden festen Schichten auf der Ober- und Unterseite." - -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "Spiral vase" -msgstr "Spiralvasenmodus" - -#: src/libslic3r/PrintConfig.cpp:1797 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"Dieses Verfahren erhöht die Z-Position allmählich, während eine einfache " -"Hülle gedruckt wird, um jeglichen sichtbaren Saum zu vermeiden. Diese Option " -"setzt eine einzige Aussenschicht, keinen Infill, keine stabilen " -"Deckenschichten und keine Stützen voraus. Sie können immer noch eine " -"beliebige Anzahl von Bodenschichten sowie Schleifen für Schürzen und Rand " -"einstellen. Die Methode funktioniert nicht, wenn mehr als ein Objekt " -"gedruckt wird." - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "Temperature variation" -msgstr "Temperaturen" - -#: src/libslic3r/PrintConfig.cpp:1807 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" -"Der anzuwendende Temperaturunterschied, wenn kein Extruder aktiv ist. Dies " -"aktiviert eine \"Wegwerf-\"Schürze über die ganze Druckhöhe, auf der die " -"Düsen periodisch gereinigt werden." - -#: src/libslic3r/PrintConfig.cpp:1818 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Dieser Startvorgang wird am Anfang eingefügt, nachdem das Heizbett die " -"Zieltemperatur erreicht hat und der Extruder gerade erst mit dem Aufheizen " -"begonnen hat, und bevor der Extruder fertig aufgeheizt ist. Falls Slic3r " -"M104 oder M190 in Ihren benutzerdefinierten Codes erkennt, werden solche " -"Befehle nicht automatisch vorangestellt, sodass Sie die Reihenfolge der " -"Heizbefehle und anderer benutzerdefinierter Aktionen anpassen können. " -"Beachten Sie, dass Sie Platzhaltervariablen für alle Slic3r-Einstellungen " -"verwenden können, sodass Sie einen \"M109 S[first_layer_temperature]\"-" -"Befehl an beliebiger Stelle platzieren können." - -#: src/libslic3r/PrintConfig.cpp:1834 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"Dieser Startvorgang wird am Anfang nach dem G-Code für den Druckerstart " -"eingefügt. Damit können Einstellungen für ein bestimmtes Filament " -"übersteuert werden. Falls Slic3r M104, M109, M140 oder M190 in Ihren " -"benutzerdefinierten Codes erkennt, werden solche Befehle nicht automatisch " -"vorangestellt, sodass Sie die Reihenfolge der Heizbefehle und anderer " -"benutzerdefinierter Aktionen anpassen können. Beachten Sie, dass Sie " -"Platzhaltervariablen für alle Slic3r-Einstellungen verwenden können, sodass " -"Sie einen \"M109 S[first_layer_temperature]\"-Befehl an beliebiger Stelle " -"platzieren können. Falls Sie mehrere Extruder haben, wird der G-Code in der " -"Reihenfolge der Extruder ausgeführt." - -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Single Extruder Multi Material" -msgstr "Einzelner Extruder mit Multi-Material" - -#: src/libslic3r/PrintConfig.cpp:1851 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "Der Drucker multiplext mehrere Filamente in einem Hotend." - -#: src/libslic3r/PrintConfig.cpp:1857 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1858 -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1864 -msgid "Generate support material" -msgstr "Generiere Stützstrukturen" - -#: src/libslic3r/PrintConfig.cpp:1866 -msgid "Enable support material generation." -msgstr "Aktiviert Generierung von Stützstrukturen." - -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1873 -msgid "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1880 -msgid "XY separation between an object and its support" -msgstr "XY-Abstand zwischen einem Objekt und seinen Stützen" - -#: src/libslic3r/PrintConfig.cpp:1882 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" -"XY-Abstand zwischen einem Objekt und seinen Stützen. Falls in Prozenten " -"angegeben (z.B. 50%), wird der Abstand von der Breite der Aussenschicht " -"ausgehend berechnet." - -#: src/libslic3r/PrintConfig.cpp:1893 -msgid "Pattern angle" -msgstr "Muster Winkel" - -#: src/libslic3r/PrintConfig.cpp:1895 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "" -"Verwenden Sie diese Einstellung, um das Muster für das Stützmaterial auf der " -"horizontalen Ebene zu drehen." - -#: src/libslic3r/PrintConfig.cpp:1906 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "" -"Nur dann Stützen schaffen, wenn sie auf der Druckplattform aufbauen. " -"Erstellt keine Stützstrukturen, die auf dem Ausdruck gründen würden." - -#: src/libslic3r/PrintConfig.cpp:1913 -msgid "Contact Z distance" -msgstr "Kontakt Z-Abstand" - -#: src/libslic3r/PrintConfig.cpp:1915 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"Der vertikale Abstand zwischen Objekt und Trägermaterialschnittstelle. Wenn " -"Sie diesen Wert auf 0 setzen, wird Slic3r auch verhindern, dass Bridge-Flow " -"und -Geschwindigkeit für die erste Objektschicht verwendet werden." - -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1929 -msgid "Enforce support for the first" -msgstr "Erzwinge Stützstrukturen bei den ersten" - -#: src/libslic3r/PrintConfig.cpp:1931 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"Generiere Stützmaterial für die angegebene Anzahl von Schichten, die von " -"unten gezählt werden, unabhängig davon, ob normales Stützmaterial aktiviert " -"ist oder nicht und unabhängig von einer Winkelschwelle. Dies ist nützlich, " -"um die Haftung von Objekten mit einem sehr dünnen oder schlechten Standfuß " -"auf der Bauplatte zu erhöhen." - -#: src/libslic3r/PrintConfig.cpp:1937 -msgid "Enforce support for the first n layers" -msgstr "Erzwinge Stützmaterial bei den ersten n Schichten" - -#: src/libslic3r/PrintConfig.cpp:1943 -msgid "Support material/raft/skirt extruder" -msgstr "Stützmaterial/Raft/Schürzen Extruder" - -#: src/libslic3r/PrintConfig.cpp:1945 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" -"Der Extruder, der für den Druck von Stützmaterial, Raft und Schürze " -"verwendet wird (1+, oder Null um den aktuellen Extruder für die Minimierung " -"von Werkzeugwechseln zu verwenden)." - -#: src/libslic3r/PrintConfig.cpp:1955 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für das Stützmaterial anzugeben. Falls auf Null belassen, wird die Standard-" -"Extrusionsbreite verwendet (falls angeben), ansonsten wird der Durchmesser " -"der Druckdüse verwendet. Als Prozentwert (z.B. 90%) angegeben, wird dieser " -"ausgehend von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:1964 -msgid "Interface loops" -msgstr "Kontaktschleifen" - -#: src/libslic3r/PrintConfig.cpp:1966 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Decken Sie die obere Kontaktschicht der Stützen mit Schleifen ab. " -"Standardmäßig deaktiviert." - -#: src/libslic3r/PrintConfig.cpp:1972 -msgid "Support material/raft interface extruder" -msgstr "Stützmaterial/Raft Schnittstellen Extruder" - -#: src/libslic3r/PrintConfig.cpp:1974 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" -"Der Extruder, der für den Druck von Schnittstellen zum Stützmaterial " -"verwendet wird (1+, oder Null um den aktuellen Extruder für die Minimierung " -"von Werkzeugwechseln zu verwenden). Dies betrifft auch den Raft." - -#: src/libslic3r/PrintConfig.cpp:1982 -msgid "Interface layers" -msgstr "Schnittstellen Schichten" - -#: src/libslic3r/PrintConfig.cpp:1984 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "" -"Anzahl der Schnittstellenschichten, die zwischen Objekt(en) und " -"Trägermaterial eingefügt werden sollen." - -#: src/libslic3r/PrintConfig.cpp:1992 -msgid "Interface pattern spacing" -msgstr "Schnittstellenmuster Abstand" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "" -"Abstand zwischen den Schnittstellenlinien. Auf Null stellen, um ein solides " -"Interface zu erhalten." - -#: src/libslic3r/PrintConfig.cpp:2004 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"Geschwindigkeit für den Druck von Trägermaterial-Schnittstellenschichten. " -"Wenn es als Prozentsatz (z.B. 50%) ausgedrückt wird, wird es über die " -"Geschwindigkeit des Trägermaterials berechnet." - -#: src/libslic3r/PrintConfig.cpp:2013 -msgid "Pattern" -msgstr "Muster" - -#: src/libslic3r/PrintConfig.cpp:2015 -msgid "Pattern used to generate support material." -msgstr "Unterstützungsmaterialmuster." - -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2028 -msgid "Pattern spacing" -msgstr "Muster Abstand" - -#: src/libslic3r/PrintConfig.cpp:2030 -msgid "Spacing between support material lines." -msgstr "Abstand zwischen Stützmateriallinien." - -#: src/libslic3r/PrintConfig.cpp:2040 -msgid "Speed for printing support material." -msgstr "Druckgeschwindigkeit des Stützmaterials." - -#: src/libslic3r/PrintConfig.cpp:2047 -msgid "Synchronize with object layers" -msgstr "Mit Objektschichten synchronisieren" - -#: src/libslic3r/PrintConfig.cpp:2049 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" -"Stützschichten mit den Druckschichten des Objekts synchronisieren. Dies ist " -"nützlich bei Multi-Material-Druckern, bei denen der Wechsel des Extruders " -"kostenaufwendig ist." - -#: src/libslic3r/PrintConfig.cpp:2056 -msgid "Overhang threshold" -msgstr "Überhangsschwellwert" - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" -"Für Überhänge, deren Neigungswinkel (90° = vertikal) oberhalb der " -"vorgegebenen Schwelle liegt, wird kein Stützmaterial erzeugt. Mit anderen " -"Worten, dieser Wert stellt die größte horizontale Steigung (gemessen von der " -"horizontalen Ebene) dar, die Sie ohne Trägermaterial drucken können. Für die " -"automatische Erkennung auf Null setzen (empfohlen)." - -#: src/libslic3r/PrintConfig.cpp:2071 -msgid "With sheath around the support" -msgstr "Mit Umhüllung der Stützen" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" -"Fügen Sie eine Sheath (eine einzelne Druckkontur) um die Basisschicht herum " -"hinzu. Das macht das Stützmaterial zuverlässiger, aber auch schwieriger zu " -"entfernen." - -#: src/libslic3r/PrintConfig.cpp:2081 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "" -"Extrudertemperatur für Schichten nach der ersten Schicht. Setzen Sie diesen " -"Wert auf Null, um die Temperaturregelbefehle im Ausgabedatei zu deaktivieren." - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "Temperatur" - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Detect thin walls" -msgstr "Dünne Wände erkennen" - -#: src/libslic3r/PrintConfig.cpp:2092 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"Erkennen von Wänden mit einfacher Breite (Teile, bei denen zwei Extrusionen " -"nicht passen und wir sie in eine einzige Druckspur zusammenfassen müssen)." - -#: src/libslic3r/PrintConfig.cpp:2099 -msgid "Threads" -msgstr "Threads" - -#: src/libslic3r/PrintConfig.cpp:2100 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "" -"Threads werden benutzt, um mehrere zeitaufwendige Berechnungen gleichzeitig " -"auszuführen. Die optimale Anzahl beträgt etwas mehr als die Anzahl der " -"verfügbaren Kerne/Prozessoren." - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"Dieser Code wird unmittelbar vor jedem Extruderwechsel eingefügt. Beachten " -"Sie, dass Sie Platzhaltervariablen für alle Slic3r-Einstellungen sowie für " -"[previous_extruder] und [next_extruder] verwenden können." - -#: src/libslic3r/PrintConfig.cpp:2125 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" -"Setzen Sie dies auf einen Nicht-Nullwert, um eine manuelle Extrusionsbreite " -"für die oberen Aussenflächen anzugeben. Dünnere Extrusionsbreiten sind " -"vorteilhaft, um Engstellen auszufüllen und um eine schönere Oberfläche zu " -"erhalten. Falls auf Null belassen, wird die Standard-Extrusionsbreite " -"verwendet (falls angeben), ansonsten wird der Durchmesser der Druckdüse " -"verwendet. Falls als Prozentwert (z.B. 90%) angegeben, wird dieser ausgehend " -"von der Schichthöhe berechnet." - -#: src/libslic3r/PrintConfig.cpp:2137 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" -"Druckgeschwindigkeit für die oberen stabilen Schichten (betrifft nur die " -"obersten Aussenschichten und nicht deren innenliegende stabilen Schichten). " -"Wir empfehlen, diesen Wert zu reduzieren, um eine schönere Oberfläche zu " -"erhalten. Dies kann als Prozentwert (z.B. 80%) der oben eingegebenen " -"Geschwindigkeit für stabiles Infill angegeben werden. Für Automatik auf Null " -"setzen." - -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Decke" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "Number of solid layers to generate on top surfaces." -msgstr "Anzahl der zu erzeugenden festen Schichten auf der Oberseite." - -#: src/libslic3r/PrintConfig.cpp:2153 -msgid "Top solid layers" -msgstr "Obere stabile Schichten" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "Bewegungsgeschwindigkeit (zwischen weit entfernten Extrusionsorten)." - -#: src/libslic3r/PrintConfig.cpp:2168 -msgid "Use firmware retraction" -msgstr "Firmware-Einzug aktivieren" - -#: src/libslic3r/PrintConfig.cpp:2169 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Diese experimentelle Einstellung benutzt G10 und G11 Befehle, damit die " -"Druckerfirmware den Einzug übernimmt. Dies wird nur von neueren Marlin-" -"Versionen unterstützt." - -#: src/libslic3r/PrintConfig.cpp:2176 -msgid "Use relative E distances" -msgstr "Relative Abstände für Extrusion benutzen" - -#: src/libslic3r/PrintConfig.cpp:2177 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "" -"Wenn Ihre Firmware relative E-Werte benötigt, diese Option aktivieren, " -"ansonsten lassen Sie sie unmarkiert. Die meisten Firmwares verwenden " -"absolute Werte." - -#: src/libslic3r/PrintConfig.cpp:2184 -msgid "Use volumetric E" -msgstr "Volumetrisches E benutzen" - -#: src/libslic3r/PrintConfig.cpp:2185 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"Diese experimentelle Einstellung generiert E-Koordinaten in Kubikmillimetern " -"stat in linearen Millimetern. Wenn die Firmware den Filamentdurchmesser " -"noch nicht kennt, können Sie Befehle wie 'M200 D[filament_diameter_0] T0' in " -"den Start-G-Code eingeben, um den volumetrischen Modus zu aktivieren und den " -"in Slic3r angegebenen Filamentdurchmesser zu benutzen. Dies wird nur von " -"neueren Marlin-Versionen unterstützt." - -#: src/libslic3r/PrintConfig.cpp:2196 -msgid "Enable variable layer height feature" -msgstr "Variable Schichthöhen aktivieren" - -#: src/libslic3r/PrintConfig.cpp:2197 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" -"Mit einigen Druckern oder Druckerkonfigurationen ist es schwierig, mit einer " -"variablen Schichthöhe zu drucken. Standardmässig aktiviert." - -#: src/libslic3r/PrintConfig.cpp:2204 -msgid "Wipe while retracting" -msgstr "Während Einzug reinigen" - -#: src/libslic3r/PrintConfig.cpp:2205 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "" -"Diese Einstellung wird die Düse während dem Einzug bewegen, um mögliche " -"Tropfen bei einem undichten Extruder zu minimieren." - -#: src/libslic3r/PrintConfig.cpp:2213 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" -"Multi-Material-Drucker müssen eventuell Extruder bei Werkzeugwechseln vor- " -"oder nachspülen. Extrudieren Sie das überschüssige Material in den " -"Reinigungsturm." - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Purging volumes - load/unload volumes" -msgstr "Reinigungsvolumen - Lade-/Entladevolumen" - -#: src/libslic3r/PrintConfig.cpp:2221 -msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " -msgstr "" -"Dieser Vektor speichert die erforderlichen Volumina für den Wechsel von/zu " -"jedem am Reinigungsturm verwendeten Werkzeug. Diese Werte werden verwendet, " -"um die Erstellung des vollen Reinigungsvolumens zu vereinfachen. " - -#: src/libslic3r/PrintConfig.cpp:2228 -msgid "Purging volumes - matrix" -msgstr "Reinigungsvolumen - Matrix" - -#: src/libslic3r/PrintConfig.cpp:2229 -msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " -msgstr "" -"Diese Matrix beschreibt die Volumina (in Kubikmillimetern), die benötigt " -"werden, um das neue Filament auf dem Reinigungsturm für ein bestimmtes " -"Werkzeugpaar zu reinigen. " - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Position X" -msgstr "X-Position" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "X-Koordinate der linken vorderen Ecke der Reinigungssäule" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Position Y" -msgstr "Y-Position" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Y-Koordinate der linken vorderen Ecke der Reinigungssäule" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Width of a wipe tower" -msgstr "Breite der Reinigungssäule" - -#: src/libslic3r/PrintConfig.cpp:2263 -msgid "Wipe tower rotation angle" -msgstr "Rotationswinkel des Reinigungsturms" - -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Rotationswinkel des Reinigungsturms bezogen auf die X-Achse " - -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "Grad" - -#: src/libslic3r/PrintConfig.cpp:2272 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2273 -msgid "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2281 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2289 -msgid "Maximal bridging distance" -msgstr "Maximaler Überbrückungsabstand" - -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Maximalabstand zwischen Stützen auf spärlichen Infill-Abschnitten. " - -#: src/libslic3r/PrintConfig.cpp:2297 -msgid "XY Size Compensation" -msgstr "XY-Grössenausgleich" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"Das Objekt wird in der XY-Ebene um den konfigurierten Wert (negativ = " -"einwärts, positiv = auswärts) vergrößert/verkleinert. Dies kann bei der " -"Feinabstimmung von Lochgrößen hilfreich sein." - -#: src/libslic3r/PrintConfig.cpp:2308 -msgid "Z offset" -msgstr "Z-Abstand" - -#: src/libslic3r/PrintConfig.cpp:2309 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"Dieser Wert wird zu allen Z-Koordinaten im ausgegebenen G-Code hinzuaddiert " -"oder davon abgezogen. Damit kann eine fehlerhafte Z-Endanschlagsposition " -"kompensiert werden: wenn z.B. bei Ihrem Nullwert die Druckdüse sich beim " -"Endanschlag 0.3mm über der Druckplatte befindet, setzen Sie diesen Wert auf " -"-0.3 (oder stellen Sie Ihren Endanschlag neu ein)." - -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2380 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2381 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2387 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2389 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2396 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2402 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2410 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2411 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2489 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2494 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2496 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2512 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2514 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2521 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2523 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2530 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2531 -msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2540 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2542 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2546 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2548 -msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2557 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2559 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2566 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2568 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2575 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2577 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2584 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2586 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2593 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2595 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2631 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2636 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2645 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2654 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2663 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 -msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "Gemischt" - -#: src/libslic3r/GCode/PreviewData.cpp:396 -msgid "Height (mm)" -msgstr "Höhe (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Breite (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:400 -msgid "Speed (mm/s)" -msgstr "Geschwindigkeit (mm/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:402 -msgid "Volumetric flow rate (mm3/s)" -msgstr "Volumetrische Flussrate (mm3/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" diff --git a/resources/localization/en_US/Slic3rPE_en.po b/resources/localization/en_US/PrusaSlicer_en.po similarity index 65% rename from resources/localization/en_US/Slic3rPE_en.po rename to resources/localization/en_US/PrusaSlicer_en.po index ddf8ebe4c..9e5335586 100644 --- a/resources/localization/en_US/Slic3rPE_en.po +++ b/resources/localization/en_US/PrusaSlicer_en.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: 2019-01-17 15:05+0100\n" +"POT-Creation-Date: 2019-04-09 14:34+0200\n" +"PO-Revision-Date: 2019-04-09 15:04+0200\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,11 +17,11 @@ msgstr "" "Language-Team: \n" "X-Generator: Poedit 2.0.8\n" -#: src/slic3r/GUI/AboutDialog.cpp:33 +#: src/slic3r/GUI/AboutDialog.cpp:35 msgid "About Slic3r" msgstr "About Slic3r" -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 +#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52 msgid "Version" msgstr "Version" @@ -29,25 +29,25 @@ msgstr "Version" msgid "Shape" msgstr "Shape" -#: src/slic3r/GUI/BedShapeDialog.cpp:50 +#: src/slic3r/GUI/BedShapeDialog.cpp:51 msgid "Rectangular" msgstr "Rectangular" -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 +#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136 +#: src/slic3r/GUI/Tab.cpp:2185 msgid "Size" msgstr "Size" -#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/BedShapeDialog.cpp:56 msgid "Size in X and Y of the rectangular plate." msgstr "Size in X and Y of the rectangular plate." -#: src/slic3r/GUI/BedShapeDialog.cpp:61 +#: src/slic3r/GUI/BedShapeDialog.cpp:62 msgid "Origin" msgstr "Origin" -#: src/slic3r/GUI/BedShapeDialog.cpp:62 +#: src/slic3r/GUI/BedShapeDialog.cpp:63 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." @@ -55,47 +55,47 @@ msgstr "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." -#: src/slic3r/GUI/BedShapeDialog.cpp:66 +#: src/slic3r/GUI/BedShapeDialog.cpp:67 msgid "Circular" msgstr "Circular" -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 +#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111 +#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 +#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:209 +#: src/libslic3r/PrintConfig.cpp:284 src/libslic3r/PrintConfig.cpp:292 +#: src/libslic3r/PrintConfig.cpp:342 src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:483 +#: src/libslic3r/PrintConfig.cpp:501 src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1244 src/libslic3r/PrintConfig.cpp:1262 +#: src/libslic3r/PrintConfig.cpp:1314 src/libslic3r/PrintConfig.cpp:1324 +#: src/libslic3r/PrintConfig.cpp:1445 src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1494 src/libslic3r/PrintConfig.cpp:1502 +#: src/libslic3r/PrintConfig.cpp:1512 src/libslic3r/PrintConfig.cpp:1520 +#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1611 +#: src/libslic3r/PrintConfig.cpp:1827 src/libslic3r/PrintConfig.cpp:1897 +#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123 +#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293 +#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377 +#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450 +#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506 +#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532 +#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555 msgid "mm" msgstr "mm" -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 +#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676 msgid "Diameter" msgstr "Diameter" -#: src/slic3r/GUI/BedShapeDialog.cpp:71 +#: src/slic3r/GUI/BedShapeDialog.cpp:72 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." @@ -103,66 +103,66 @@ msgstr "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 +#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239 #: src/libslic3r/GCode/PreviewData.cpp:175 msgid "Custom" msgstr "Custom" -#: src/slic3r/GUI/BedShapeDialog.cpp:79 +#: src/slic3r/GUI/BedShapeDialog.cpp:80 msgid "Load shape from STL..." msgstr "Load shape from STL..." -#: src/slic3r/GUI/BedShapeDialog.cpp:125 +#: src/slic3r/GUI/BedShapeDialog.cpp:126 msgid "Settings" msgstr "Settings" -#: src/slic3r/GUI/BedShapeDialog.cpp:298 +#: src/slic3r/GUI/BedShapeDialog.cpp:299 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 +#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252 msgid "Error! " msgstr "Error! " -#: src/slic3r/GUI/BedShapeDialog.cpp:324 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 msgid "The selected file contains no geometry." msgstr "The selected file contains no geometry." -#: src/slic3r/GUI/BedShapeDialog.cpp:328 +#: src/slic3r/GUI/BedShapeDialog.cpp:329 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" "The selected file contains several disjoint areas. This is not supported." -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507 msgid "Bed Shape" msgstr "Bed Shape" -#: src/slic3r/GUI/BonjourDialog.cpp:54 +#: src/slic3r/GUI/BonjourDialog.cpp:55 msgid "Network lookup" msgstr "Network lookup" -#: src/slic3r/GUI/BonjourDialog.cpp:67 +#: src/slic3r/GUI/BonjourDialog.cpp:72 msgid "Address" msgstr "Address" -#: src/slic3r/GUI/BonjourDialog.cpp:68 +#: src/slic3r/GUI/BonjourDialog.cpp:73 msgid "Hostname" msgstr "Hostname" -#: src/slic3r/GUI/BonjourDialog.cpp:69 +#: src/slic3r/GUI/BonjourDialog.cpp:74 msgid "Service name" msgstr "Service name" -#: src/slic3r/GUI/BonjourDialog.cpp:70 +#: src/slic3r/GUI/BonjourDialog.cpp:76 msgid "OctoPrint version" msgstr "OctoPrint version" -#: src/slic3r/GUI/BonjourDialog.cpp:188 +#: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "Searching for devices" -#: src/slic3r/GUI/BonjourDialog.cpp:195 +#: src/slic3r/GUI/BonjourDialog.cpp:225 msgid "Finished" msgstr "Finished" @@ -182,113 +182,118 @@ msgstr "" "Value was changed and is not equal to the system value or the last saved " "preset" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17 msgid "Upgrade" msgstr "Upgrade" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19 msgid "Downgrade" msgstr "Downgrade" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21 msgid "Before roll back" msgstr "Before roll back" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23 msgid "User" msgstr "User" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26 msgid "Unknown" msgstr "Unknown" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38 msgid "Active: " msgstr "Active: " -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 msgid "slic3r version" msgstr "slic3r version" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250 msgid "print" msgstr "print" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 msgid "filaments" msgstr "filaments" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254 msgid "printer" msgstr "printer" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872 msgid "vendor" msgstr "vendor" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 msgid "version" msgstr "version" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 msgid "min slic3r version" msgstr "min slic3r version" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54 msgid "max slic3r version" msgstr "max slic3r version" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "model" msgstr "model" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "variants" msgstr "variants" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 msgid "Incompatible with this Slic3r" msgstr "Incompatible with this Slic3r" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72 msgid "Activate" msgstr "Activate" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98 msgid "Configuration Snapshots" msgstr "Configuration Snapshots" -#: src/slic3r/GUI/ConfigWizard.cpp:92 +#: src/slic3r/GUI/ConfigWizard.cpp:111 msgid "nozzle" msgstr "nozzle" -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "(default)" -msgstr "(default)" +#: src/slic3r/GUI/ConfigWizard.cpp:115 +msgid "Alternate nozzles:" +msgstr "Alternate nozzles:" -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Select all" +#: src/slic3r/GUI/ConfigWizard.cpp:181 +msgid "All standard" +msgstr "All standard" -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "Select none" +#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909 +msgid "All" +msgstr "All" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414 +#: src/libslic3r/GCode/PreviewData.cpp:162 +msgid "None" +msgstr "None" + +#: src/slic3r/GUI/ConfigWizard.cpp:284 #, c-format msgid "Welcome to the Slic3r %s" msgstr "Welcome to the Slic3r %s" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:284 msgid "Welcome" msgstr "Welcome" -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 +#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600 #, c-format msgid "Run %s" msgstr "Run %s" -#: src/slic3r/GUI/ConfigWizard.cpp:234 +#: src/slic3r/GUI/ConfigWizard.cpp:290 #, c-format msgid "" "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " @@ -297,7 +302,7 @@ msgstr "" "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " "configuration; just a few settings and you will be ready to print." -#: src/slic3r/GUI/ConfigWizard.cpp:238 +#: src/slic3r/GUI/ConfigWizard.cpp:294 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" @@ -305,27 +310,40 @@ msgstr "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "Other vendors" +#: src/slic3r/GUI/ConfigWizard.cpp:325 +#, c-format +msgid "%s Family" +msgstr "%s Family" -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "Custom setup" +#: src/slic3r/GUI/ConfigWizard.cpp:362 +msgid "Custom Printer Setup" +msgstr "Custom Printer Setup" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:362 +msgid "Custom Printer" +msgstr "Custom Printer" + +#: src/slic3r/GUI/ConfigWizard.cpp:364 +msgid "Define a custom printer profile" +msgstr "Define a custom printer profile" + +#: src/slic3r/GUI/ConfigWizard.cpp:366 +msgid "Custom profile name:" +msgstr "Custom profile name:" + +#: src/slic3r/GUI/ConfigWizard.cpp:390 msgid "Automatic updates" msgstr "Automatic updates" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:390 msgid "Updates" msgstr "Updates" -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 +#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59 msgid "Check for application updates" msgstr "Check for application updates" -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 +#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 msgid "" "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " "version becomes available a notification is displayed at the next " @@ -337,11 +355,11 @@ msgstr "" "application startup (never during program usage). This is only a " "notification mechanisms, no automatic installation is done." -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 +#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67 msgid "Update built-in Presets automatically" msgstr "Update built-in Presets automatically" -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " @@ -353,7 +371,7 @@ msgstr "" "When a new preset version becomes available it is offered at application " "startup." -#: src/slic3r/GUI/ConfigWizard.cpp:308 +#: src/slic3r/GUI/ConfigWizard.cpp:409 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." @@ -361,7 +379,7 @@ msgstr "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." -#: src/slic3r/GUI/ConfigWizard.cpp:313 +#: src/slic3r/GUI/ConfigWizard.cpp:414 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." @@ -369,55 +387,55 @@ msgstr "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." -#: src/slic3r/GUI/ConfigWizard.cpp:320 +#: src/slic3r/GUI/ConfigWizard.cpp:421 msgid "Other Vendors" msgstr "Other Vendors" -#: src/slic3r/GUI/ConfigWizard.cpp:322 +#: src/slic3r/GUI/ConfigWizard.cpp:423 msgid "Pick another vendor supported by Slic3r PE:" msgstr "Pick another vendor supported by Slic3r PE:" -#: src/slic3r/GUI/ConfigWizard.cpp:381 +#: src/slic3r/GUI/ConfigWizard.cpp:469 msgid "Firmware Type" msgstr "Firmware Type" -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 +#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870 msgid "Firmware" msgstr "Firmware" -#: src/slic3r/GUI/ConfigWizard.cpp:385 +#: src/slic3r/GUI/ConfigWizard.cpp:473 msgid "Choose the type of firmware used by your printer." msgstr "Choose the type of firmware used by your printer." -#: src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/ConfigWizard.cpp:507 msgid "Bed Shape and Size" msgstr "Bed Shape and Size" -#: src/slic3r/GUI/ConfigWizard.cpp:422 +#: src/slic3r/GUI/ConfigWizard.cpp:510 msgid "Set the shape of your printer's bed." msgstr "Set the shape of your printer's bed." -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:524 msgid "Filament and Nozzle Diameters" msgstr "Filament and Nozzle Diameters" -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:524 msgid "Print Diameters" msgstr "Print Diameters" -#: src/slic3r/GUI/ConfigWizard.cpp:452 +#: src/slic3r/GUI/ConfigWizard.cpp:540 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "Enter the diameter of your printer's hot end nozzle." -#: src/slic3r/GUI/ConfigWizard.cpp:455 +#: src/slic3r/GUI/ConfigWizard.cpp:543 msgid "Nozzle Diameter:" msgstr "Nozzle Diameter:" -#: src/slic3r/GUI/ConfigWizard.cpp:465 +#: src/slic3r/GUI/ConfigWizard.cpp:553 msgid "Enter the diameter of your filament." msgstr "Enter the diameter of your filament." -#: src/slic3r/GUI/ConfigWizard.cpp:466 +#: src/slic3r/GUI/ConfigWizard.cpp:554 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." @@ -425,35 +443,35 @@ msgstr "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." -#: src/slic3r/GUI/ConfigWizard.cpp:469 +#: src/slic3r/GUI/ConfigWizard.cpp:557 msgid "Filament Diameter:" msgstr "Filament Diameter:" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "Extruder and Bed Temperatures" msgstr "Extruder and Bed Temperatures" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "Temperatures" msgstr "Temperatures" -#: src/slic3r/GUI/ConfigWizard.cpp:503 +#: src/slic3r/GUI/ConfigWizard.cpp:591 msgid "Enter the temperature needed for extruding your filament." msgstr "Enter the temperature needed for extruding your filament." -#: src/slic3r/GUI/ConfigWizard.cpp:504 +#: src/slic3r/GUI/ConfigWizard.cpp:592 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -#: src/slic3r/GUI/ConfigWizard.cpp:507 +#: src/slic3r/GUI/ConfigWizard.cpp:595 msgid "Extrusion Temperature:" msgstr "Extrusion Temperature:" -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 +#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610 msgid "°C" msgstr "°C" -#: src/slic3r/GUI/ConfigWizard.cpp:517 +#: src/slic3r/GUI/ConfigWizard.cpp:605 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." @@ -461,7 +479,7 @@ msgstr "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." -#: src/slic3r/GUI/ConfigWizard.cpp:518 +#: src/slic3r/GUI/ConfigWizard.cpp:606 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." @@ -469,64 +487,78 @@ msgstr "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." -#: src/slic3r/GUI/ConfigWizard.cpp:521 +#: src/slic3r/GUI/ConfigWizard.cpp:609 msgid "Bed Temperature:" msgstr "Bed Temperature:" -#: src/slic3r/GUI/ConfigWizard.cpp:833 +#: src/slic3r/GUI/ConfigWizard.cpp:1001 +msgid "Select all standard printers" +msgstr "Select all standard printers" + +#: src/slic3r/GUI/ConfigWizard.cpp:1004 msgid "< &Back" msgstr "< &Back" -#: src/slic3r/GUI/ConfigWizard.cpp:834 +#: src/slic3r/GUI/ConfigWizard.cpp:1005 msgid "&Next >" msgstr "&Next >" -#: src/slic3r/GUI/ConfigWizard.cpp:835 +#: src/slic3r/GUI/ConfigWizard.cpp:1006 msgid "&Finish" msgstr "&Finish" -#: src/slic3r/GUI/ConfigWizard.cpp:906 +#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 +#: src/slic3r/GUI/ProgressStatusBar.cpp:28 +msgid "Cancel" +msgstr "Cancel" + +#: src/slic3r/GUI/ConfigWizard.cpp:1021 +msgid "Prusa FFF Technology Printers" +msgstr "Prusa FFF Technology Printers" + +#: src/slic3r/GUI/ConfigWizard.cpp:1024 +msgid "Prusa MSLA Technology Printers" +msgstr "Prusa MSLA Technology Printers" + +#: src/slic3r/GUI/ConfigWizard.cpp:1111 msgid "Configuration Wizard" msgstr "Configuration Wizard" -#: src/slic3r/GUI/ConfigWizard.cpp:907 +#: src/slic3r/GUI/ConfigWizard.cpp:1112 msgid "Configuration &Wizard" msgstr "Configuration &Wizard" -#: src/slic3r/GUI/ConfigWizard.cpp:909 +#: src/slic3r/GUI/ConfigWizard.cpp:1114 msgid "Configuration Assistant" msgstr "Configuration Assistant" -#: src/slic3r/GUI/ConfigWizard.cpp:910 +#: src/slic3r/GUI/ConfigWizard.cpp:1115 msgid "Configuration &Assistant" msgstr "Configuration &Assistant" -#: src/slic3r/GUI/Field.cpp:109 +#: src/slic3r/GUI/Field.cpp:112 msgid "default value" msgstr "default value" -#: src/slic3r/GUI/Field.cpp:112 +#: src/slic3r/GUI/Field.cpp:115 msgid "parameter name" msgstr "parameter name" -#: src/slic3r/GUI/Field.cpp:140 +#: src/slic3r/GUI/Field.cpp:143 #, c-format msgid "%s doesn't support percentage" msgstr "%s doesn't support percentage" -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" +#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180 +msgid "Invalid numeric input." +msgstr "Invalid numeric input." -#: src/slic3r/GUI/Field.cpp:153 +#: src/slic3r/GUI/Field.cpp:162 msgid "Input value is out of range" msgstr "Input value is out of range" -#: src/slic3r/GUI/Field.cpp:176 +#: src/slic3r/GUI/Field.cpp:188 #, c-format msgid "" "Do you mean %d%% instead of %d %s?\n" @@ -537,40 +569,35 @@ msgstr "" "Select YES if you want to change this value to %d%%, \n" "or NO if you are sure that %d %s is a correct value." -#: src/slic3r/GUI/Field.cpp:179 +#: src/slic3r/GUI/Field.cpp:191 msgid "Parameter validation" msgstr "Parameter validation" -#: src/slic3r/GUI/FirmwareDialog.cpp:133 +#: src/slic3r/GUI/FirmwareDialog.cpp:141 msgid "Flash!" msgstr "Flash!" -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "Cancel" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 +#: src/slic3r/GUI/FirmwareDialog.cpp:143 msgid "Flashing in progress. Please do not disconnect the printer!" msgstr "Flashing in progress. Please do not disconnect the printer!" -#: src/slic3r/GUI/FirmwareDialog.cpp:245 +#: src/slic3r/GUI/FirmwareDialog.cpp:187 +msgid "Flashing failed: " +msgstr "Flashing failed: " + +#: src/slic3r/GUI/FirmwareDialog.cpp:268 msgid "Flashing succeeded!" msgstr "Flashing succeeded!" -#: src/slic3r/GUI/FirmwareDialog.cpp:246 +#: src/slic3r/GUI/FirmwareDialog.cpp:269 msgid "Flashing failed. Please see the avrdude log below." msgstr "Flashing failed. Please see the avrdude log below." -#: src/slic3r/GUI/FirmwareDialog.cpp:247 +#: src/slic3r/GUI/FirmwareDialog.cpp:270 msgid "Flashing cancelled." msgstr "Flashing cancelled." -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "Flashing failed: %s" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 +#: src/slic3r/GUI/FirmwareDialog.cpp:308 #, c-format msgid "" "This firmware hex file does not match the printer model.\n" @@ -587,60 +614,81 @@ msgstr "" "Do you want to continue and flash this hex file anyway?\n" "Please only continue if you are sure this is the right thing to do." -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 +#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431 +#, c-format msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." +"Multiple %s devices found. Please only connect one at a time for flashing." msgstr "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." +"Multiple %s devices found. Please only connect one at a time for flashing." -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "The device could not have been found" +#: src/slic3r/GUI/FirmwareDialog.cpp:412 +#, c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB " +"connector ..." +msgstr "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB " +"connector ..." -#: src/slic3r/GUI/FirmwareDialog.cpp:581 +#: src/slic3r/GUI/FirmwareDialog.cpp:525 +#, c-format +msgid "The %s device could not have been found" +msgstr "The %s device could not have been found" + +#: src/slic3r/GUI/FirmwareDialog.cpp:603 #, c-format msgid "Error accessing port at %s: %s" msgstr "Error accessing port at %s: %s" -#: src/slic3r/GUI/FirmwareDialog.cpp:690 +#: src/slic3r/GUI/FirmwareDialog.cpp:605 +#, c-format +msgid "Error: %s" +msgstr "Error: %s" + +#: src/slic3r/GUI/FirmwareDialog.cpp:735 msgid "Firmware flasher" msgstr "Firmware flasher" -#: src/slic3r/GUI/FirmwareDialog.cpp:712 +#: src/slic3r/GUI/FirmwareDialog.cpp:762 msgid "Firmware image:" msgstr "Firmware image:" -#: src/slic3r/GUI/FirmwareDialog.cpp:716 +#: src/slic3r/GUI/FirmwareDialog.cpp:766 msgid "Serial port:" msgstr "Serial port:" -#: src/slic3r/GUI/FirmwareDialog.cpp:718 +#: src/slic3r/GUI/FirmwareDialog.cpp:768 msgid "Autodetected" msgstr "Autodetected" -#: src/slic3r/GUI/FirmwareDialog.cpp:719 +#: src/slic3r/GUI/FirmwareDialog.cpp:769 msgid "Rescan" msgstr "Rescan" -#: src/slic3r/GUI/FirmwareDialog.cpp:726 +#: src/slic3r/GUI/FirmwareDialog.cpp:776 msgid "Progress:" msgstr "Progress:" -#: src/slic3r/GUI/FirmwareDialog.cpp:729 +#: src/slic3r/GUI/FirmwareDialog.cpp:779 msgid "Status:" msgstr "Status:" -#: src/slic3r/GUI/FirmwareDialog.cpp:730 +#: src/slic3r/GUI/FirmwareDialog.cpp:780 msgid "Ready" msgstr "Ready" -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "Advanced: avrdude output log" +#: src/slic3r/GUI/FirmwareDialog.cpp:800 +msgid "Advanced: Output log" +msgstr "Advanced: Output log" -#: src/slic3r/GUI/FirmwareDialog.cpp:809 +#: src/slic3r/GUI/FirmwareDialog.cpp:811 +#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +msgid "Close" +msgstr "Close" + +#: src/slic3r/GUI/FirmwareDialog.cpp:859 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" @@ -648,158 +696,251 @@ msgstr "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" -#: src/slic3r/GUI/FirmwareDialog.cpp:810 +#: src/slic3r/GUI/FirmwareDialog.cpp:860 msgid "Confirmation" msgstr "Confirmation" -#: src/slic3r/GUI/FirmwareDialog.cpp:813 +#: src/slic3r/GUI/FirmwareDialog.cpp:863 msgid "Cancelling..." msgstr "Cancelling..." -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 +#: src/slic3r/GUI/GLCanvas3D.cpp:709 msgid "Detected object outside print volume" msgstr "Detected object outside print volume" -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 +#: src/slic3r/GUI/GLCanvas3D.cpp:710 msgid "Detected toolpath outside print volume" msgstr "Detected toolpath outside print volume" -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "Rotate" +#: src/slic3r/GUI/GLCanvas3D.cpp:711 +msgid "Some objects are not visible when editing supports" +msgstr "Some objects are not visible when editing supports" -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "Rotation (deg)" +#: src/slic3r/GUI/GLCanvas3D.cpp:713 +msgid "" +"Detected object outside print volume\n" +"Resolve a clash to continue slicing/export process correctly" +msgstr "" +"Detected object outside print volume\n" +"Resolve a clash to continue slicing/export process correctly" -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "Scale" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "Scale (%)" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "Move" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "Position (mm)" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "Displacement (mm)" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "Place on face" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "Left mouse click - add point" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "Right mouse click - remove point" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "Generate points automatically" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "Remove all points" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "SLA Support Points" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 msgid "Rotate lower part upwards" msgstr "Rotate lower part upwards" -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 msgid "Perform cut" msgstr "Perform cut" -#: src/slic3r/GUI/GLGizmo.cpp:2276 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 msgid "Cut object:" msgstr "Cut object:" -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 +msgid "Cut [C]" +msgstr "Cut [C]" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006 msgid "Cut" msgstr "Cut" -#: src/slic3r/GUI/GLGizmo.cpp:2466 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 msgid "Keep upper part" msgstr "Keep upper part" -#: src/slic3r/GUI/GLGizmo.cpp:2467 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 msgid "Keep lower part" msgstr "Keep lower part" -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "Notice" +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 +msgid "Place on face [F]" +msgstr "Place on face [F]" -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "Attempt to free unreferenced scalar" +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 +msgid "Move [M]" +msgstr "Move [M]" -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +msgid "Position (mm)" +msgstr "Position (mm)" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +msgid "Displacement (mm)" +msgstr "Displacement (mm)" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 +msgid "Rotate [R]" +msgstr "Rotate [R]" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 +msgid "Rotation (deg)" +msgstr "Rotation (deg)" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 +msgid "Scale [S]" +msgstr "Scale [S]" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 +msgid "Scale (%)" +msgstr "Scale (%)" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 +msgid "Left mouse click - add point" +msgstr "Left mouse click - add point" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 +msgid "Right mouse click - remove point" +msgstr "Right mouse click - remove point" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 +msgid "Shift + Left (+ drag) - select point(s)" +msgstr "Shift + Left (+ drag) - select point(s)" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606 +msgid "Head diameter: " +msgstr "Head diameter: " + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618 +msgid "Lock supports under new islands" +msgstr "Lock supports under new islands" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622 +msgid "Remove selected points" +msgstr "Remove selected points" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679 +msgid "Remove all points" +msgstr "Remove all points" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +msgid "Apply changes" +msgstr "Apply changes" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636 +msgid "Discard changes" +msgstr "Discard changes" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644 +msgid "Minimal points distance: " +msgstr "Minimal points distance: " + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655 +msgid "Support points density: " +msgstr "Support points density: " + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 +msgid "Auto-generate points [A]" +msgstr "Auto-generate points [A]" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 +msgid "Manual editing [M]" +msgstr "Manual editing [M]" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738 +msgid "SLA Support Points [L]" +msgstr "SLA Support Points [L]" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767 +msgid "Do you want to save your manually edited support points ?\n" +msgstr "Do you want to save your manually edited support points ?\n" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768 +msgid "Save changes?" +msgstr "Save changes?" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 +msgid "" +"Autogeneration will erase all manually edited points.\n" +"\n" +"Are you sure you want to do it?\n" +msgstr "" +"Autogeneration will erase all manually edited points.\n" +"\n" +"Are you sure you want to do it?\n" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" msgstr "Warning" -#: src/slic3r/GUI/GUI_App.cpp:377 +#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "It's impossible to print multi-part object(s) with SLA technology." + +#: src/slic3r/GUI/GUI.cpp:148 +msgid "Please check and fix your object list." +msgstr "Please check and fix your object list." + +#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679 +#: src/slic3r/GUI/Tab.cpp:2722 +msgid "Attention!" +msgstr "Attention!" + +#: src/slic3r/GUI/GUI.cpp:282 +msgid "Notice" +msgstr "Notice" + +#: src/slic3r/GUI/GUI_App.cpp:318 +msgid "Changing of an application language" +msgstr "Changing of an application language" + +#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335 +msgid "Recreating" +msgstr "Recreating" + +#: src/slic3r/GUI/GUI_App.cpp:339 +msgid "Loading of a current presets" +msgstr "Loading of a current presets" + +#: src/slic3r/GUI/GUI_App.cpp:347 +msgid "Loading of a mode view" +msgstr "Loading of a mode view" + +#: src/slic3r/GUI/GUI_App.cpp:429 msgid "Choose one file (3MF):" msgstr "Choose one file (3MF):" -#: src/slic3r/GUI/GUI_App.cpp:389 +#: src/slic3r/GUI/GUI_App.cpp:441 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/GUI_App.cpp:451 +#: src/slic3r/GUI/GUI_App.cpp:454 msgid "Array of language names and identifiers should have the same size." msgstr "Array of language names and identifiers should have the same size." -#: src/slic3r/GUI/GUI_App.cpp:461 +#: src/slic3r/GUI/GUI_App.cpp:464 msgid "Select the language" msgstr "Select the language" -#: src/slic3r/GUI/GUI_App.cpp:461 +#: src/slic3r/GUI/GUI_App.cpp:464 msgid "Language" msgstr "Language" -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 +#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067 +#: src/libslic3r/PrintConfig.cpp:298 msgid "Default" msgstr "Default" -#: src/slic3r/GUI/GUI_App.cpp:609 +#: src/slic3r/GUI/GUI_App.cpp:603 msgid "&Configuration Snapshots" msgstr "&Configuration Snapshots" -#: src/slic3r/GUI/GUI_App.cpp:609 +#: src/slic3r/GUI/GUI_App.cpp:603 msgid "Inspect / activate configuration snapshots" msgstr "Inspect / activate configuration snapshots" -#: src/slic3r/GUI/GUI_App.cpp:610 +#: src/slic3r/GUI/GUI_App.cpp:604 msgid "Take Configuration &Snapshot" msgstr "Take Configuration &Snapshot" -#: src/slic3r/GUI/GUI_App.cpp:610 +#: src/slic3r/GUI/GUI_App.cpp:604 msgid "Capture a configuration snapshot" msgstr "Capture a configuration snapshot" -#: src/slic3r/GUI/GUI_App.cpp:613 +#: src/slic3r/GUI/GUI_App.cpp:607 msgid "&Preferences" msgstr "&Preferences" @@ -807,7 +948,7 @@ msgstr "&Preferences" msgid "Application preferences" msgstr "Application preferences" -#: src/slic3r/GUI/GUI_App.cpp:616 +#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446 msgid "Simple" msgstr "Simple" @@ -815,12 +956,14 @@ msgstr "Simple" msgid "Simple View Mode" msgstr "Simple View Mode" -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 +#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73 +#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992 +#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093 +#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890 +#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186 +#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987 +#: src/libslic3r/PrintConfig.cpp:2173 msgid "Advanced" msgstr "Advanced" @@ -828,7 +971,7 @@ msgstr "Advanced" msgid "Advanced View Mode" msgstr "Advanced View Mode" -#: src/slic3r/GUI/GUI_App.cpp:618 +#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448 msgid "Expert" msgstr "Expert" @@ -836,573 +979,716 @@ msgstr "Expert" msgid "Expert View Mode" msgstr "Expert View Mode" -#: src/slic3r/GUI/GUI_App.cpp:620 +#: src/slic3r/GUI/GUI_App.cpp:623 msgid "Mode" msgstr "Mode" -#: src/slic3r/GUI/GUI_App.cpp:620 +#: src/slic3r/GUI/GUI_App.cpp:623 msgid "Slic3r View Mode" msgstr "Slic3r View Mode" -#: src/slic3r/GUI/GUI_App.cpp:622 +#: src/slic3r/GUI/GUI_App.cpp:625 msgid "Change Application &Language" msgstr "Change Application &Language" -#: src/slic3r/GUI/GUI_App.cpp:624 +#: src/slic3r/GUI/GUI_App.cpp:627 msgid "Flash printer &firmware" msgstr "Flash printer &firmware" -#: src/slic3r/GUI/GUI_App.cpp:624 +#: src/slic3r/GUI/GUI_App.cpp:627 msgid "Upload a firmware image into an Arduino based printer" msgstr "Upload a firmware image into an Arduino based printer" -#: src/slic3r/GUI/GUI_App.cpp:636 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "Taking configuration snapshot" msgstr "Taking configuration snapshot" -#: src/slic3r/GUI/GUI_App.cpp:636 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "Snapshot name" msgstr "Snapshot name" -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "Application will be restarted" +#: src/slic3r/GUI/GUI_App.cpp:676 +msgid "Application will be restarted after language change." +msgstr "Application will be restarted after language change." -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "Attention!" +#: src/slic3r/GUI/GUI_App.cpp:677 +msgid "3D-Scene will be cleaned." +msgstr "3D-Scene will be cleaned." -#: src/slic3r/GUI/GUI_App.cpp:691 +#: src/slic3r/GUI/GUI_App.cpp:678 +msgid "Please, check your changes before." +msgstr "Please, check your changes before." + +#: src/slic3r/GUI/GUI_App.cpp:706 msgid "&Configuration" msgstr "&Configuration" -#: src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/GUI_App.cpp:726 msgid "You have unsaved changes " msgstr "You have unsaved changes " -#: src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/GUI_App.cpp:726 msgid ". Discard changes and continue anyway?" msgstr ". Discard changes and continue anyway?" -#: src/slic3r/GUI/GUI_App.cpp:712 +#: src/slic3r/GUI/GUI_App.cpp:727 msgid "Unsaved Presets" msgstr "Unsaved Presets" -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65 +#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149 +#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1304 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042 msgid "Layers and Perimeters" msgstr "Layers and Perimeters" -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66 +#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981 +#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742 +#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997 +#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675 msgid "Infill" msgstr "Infill" -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67 +#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010 +#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333 +#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779 +#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1793 +#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1815 +#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1838 +#: src/libslic3r/PrintConfig.cpp:1859 src/libslic3r/PrintConfig.cpp:1870 +#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1904 src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1929 src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1947 +#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969 +#: src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" msgstr "Support material" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "Speed" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667 +#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877 +#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157 msgid "Extruders" msgstr "Extruders" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 +msgid "Pad and Support" +msgstr "Pad and Support" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215 +#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198 +#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870 +#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360 +#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646 +#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028 +msgid "Speed" +msgstr "Speed" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829 +#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860 +#: src/libslic3r/PrintConfig.cpp:2017 msgid "Extrusion Width" msgstr "Extrusion Width" -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410 +#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310 +#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384 +#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420 +#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438 +#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476 +#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2504 msgid "Supports" msgstr "Supports" -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 +#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337 +#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553 +#: src/libslic3r/PrintConfig.cpp:2562 msgid "Pad" msgstr "Pad" -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 +#: src/slic3r/GUI/GUI_ObjectList.cpp:173 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45 msgid "Name" msgstr "Name" -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 +#: src/slic3r/GUI/GUI_ObjectList.cpp:201 msgid "Right button click the icon to change the object settings" msgstr "Right button click the icon to change the object settings" -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:209 #, c-format msgid "Auto-repaired (%d errors):\n" msgstr "Auto-repaired (%d errors):\n" -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:212 msgid "degenerate facets" msgstr "degenerate facets" -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 +#: src/slic3r/GUI/GUI_ObjectList.cpp:213 msgid "edges fixed" msgstr "edges fixed" -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 +#: src/slic3r/GUI/GUI_ObjectList.cpp:214 msgid "facets removed" msgstr "facets removed" -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 +#: src/slic3r/GUI/GUI_ObjectList.cpp:215 msgid "facets added" msgstr "facets added" -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:216 msgid "facets reversed" msgstr "facets reversed" -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:217 msgid "backwards edges" msgstr "backwards edges" -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 +#: src/slic3r/GUI/GUI_ObjectList.cpp:231 msgid "Right button click the icon to fix STL through Netfabb" msgstr "Right button click the icon to fix STL through Netfabb" -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 +#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430 +#: src/libslic3r/PrintConfig.cpp:454 msgid "Extruder" msgstr "Extruder" -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 +#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963 +#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199 +#, c-format +msgid "Quick Add Settings (%s)" +msgstr "Quick Add Settings (%s)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:746 msgid "Select showing settings" msgstr "Select showing settings" -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:874 msgid "Load" msgstr "Load" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911 +#: src/slic3r/GUI/GUI_ObjectList.cpp:914 msgid "Box" msgstr "Box" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Cylinder" msgstr "Cylinder" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Sphere" msgstr "Sphere" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Slab" msgstr "Slab" -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 +#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906 msgid "Add part" msgstr "Add part" -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 +#: src/slic3r/GUI/GUI_ObjectList.cpp:891 msgid "Add modifier" msgstr "Add modifier" -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 +#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910 msgid "Add support enforcer" msgstr "Add support enforcer" -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 +#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913 msgid "Add support blocker" msgstr "Add support blocker" -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 +#: src/slic3r/GUI/GUI_ObjectList.cpp:934 msgid "Split to parts" msgstr "Split to parts" -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:942 msgid "Add settings" msgstr "Add settings" -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 msgid "Change type" msgstr "Change type" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1016 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +msgid "Set as a Separated Object" +msgstr "Set as a Separated Object" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1024 +msgid "Rename" +msgstr "Rename" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1034 +msgid "Fix through the Netfabb" +msgstr "Fix through the Netfabb" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861 +msgid "Export as STL" +msgstr "Export as STL" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1048 +msgid "Change extruder" +msgstr "Change extruder" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1073 +msgid "Select new extruder for the object/part" +msgstr "Select new extruder for the object/part" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825 +#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860 +msgid "Delete" +msgstr "Delete" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +msgid "Set as a Separated Objects" +msgstr "Set as a Separated Objects" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1374 +msgid "Generic" +msgstr "Generic" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1516 msgid "You can't delete the last solid part from object." msgstr "You can't delete the last solid part from object." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1533 msgid "You can't delete the last intance from object." msgstr "You can't delete the last intance from object." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" "The selected object couldn't be split because it contains only one part." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1676 msgid "Group manipulation" msgstr "Group manipulation" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1688 msgid "Object manipulation" msgstr "Object manipulation" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1698 msgid "Object Settings to modify" msgstr "Object Settings to modify" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1702 msgid "Part Settings to modify" msgstr "Part Settings to modify" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 msgid "Part manipulation" msgstr "Part manipulation" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1717 msgid "Instance manipulation" msgstr "Instance manipulation" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +msgid "Object or Instance" +msgstr "Object or Instance" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +msgid "Part" +msgstr "Part" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +msgid "Unsupported selection" +msgstr "Unsupported selection" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 +#, c-format +msgid "You started your selection with %s Item." +msgstr "You started your selection with %s Item." + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2244 +#, c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "In this mode you can select only other %s Items%s" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 +msgid "of a current Object" +msgstr "of a current Object" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2252 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117 +msgid "Info" +msgstr "Info" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2366 msgid "You can't change a type of the last solid part of the object." msgstr "You can't change a type of the last solid part of the object." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2373 msgid "Select type of part" msgstr "Select type of part" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "Enter new name" +msgstr "Enter new name" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "Renaming" +msgstr "Renaming" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2554 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191 +#: src/slic3r/GUI/Tab.cpp:3195 msgid "The supplied name is not valid;" msgstr "The supplied name is not valid;" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2555 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192 msgid "the following characters are not allowed:" msgstr "the following characters are not allowed:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2653 +msgid "Set extruder for selected items" +msgstr "Set extruder for selected items" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2654 +msgid "Select extruder number for selected objects and/or parts" +msgstr "Select extruder number for selected objects and/or parts" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2667 +msgid "Select extruder number:" +msgstr "Select extruder number:" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2668 +msgid "This extruder will be set for selected items" +msgstr "This extruder will be set for selected items" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25 msgid "Object Manipulation" msgstr "Object Manipulation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47 msgid "Object name" msgstr "Object name" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160 msgid "Position" msgstr "Position" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Rotation" msgstr "Rotation" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3070 +msgid "Scale" +msgstr "Scale" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162 msgid "Scale factors" msgstr "Scale factors" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220 +#: src/libslic3r/PrintConfig.cpp:3055 +msgid "Rotate" +msgstr "Rotate" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219 msgid "Translate" msgstr "Translate" -#: src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 +msgid "Additional Settings" +msgstr "Additional Settings" + +#: src/slic3r/GUI/GUI_Preview.cpp:209 msgid "View" msgstr "View" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525 #: src/libslic3r/GCode/PreviewData.cpp:394 msgid "Feature type" msgstr "Feature type" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467 msgid "Height" msgstr "Height" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135 msgid "Width" msgstr "Width" -#: src/slic3r/GUI/GUI_Preview.cpp:242 +#: src/slic3r/GUI/GUI_Preview.cpp:216 msgid "Volumetric flow rate" msgstr "Volumetric flow rate" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525 +#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404 msgid "Tool" msgstr "Tool" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523 #: src/libslic3r/GCode/PreviewData.cpp:406 msgid "Color Print" msgstr "Color Print" -#: src/slic3r/GUI/GUI_Preview.cpp:247 +#: src/slic3r/GUI/GUI_Preview.cpp:221 msgid "Show" msgstr "Show" -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 msgid "Feature types" msgstr "Feature types" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 msgid "Perimeter" msgstr "Perimeter" -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 msgid "External perimeter" msgstr "External perimeter" -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 msgid "Overhang perimeter" msgstr "Overhang perimeter" -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 msgid "Internal infill" msgstr "Internal infill" -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" msgstr "Solid infill" -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" msgstr "Top solid infill" -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 msgid "Bridge infill" msgstr "Bridge infill" -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" msgstr "Gap fill" -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001 #: src/libslic3r/GCode/PreviewData.cpp:171 msgid "Skirt" msgstr "Skirt" -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" msgstr "Support material interface" -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081 #: src/libslic3r/GCode/PreviewData.cpp:174 msgid "Wipe tower" msgstr "Wipe tower" -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049 msgid "Travel" msgstr "Travel" -#: src/slic3r/GUI/GUI_Preview.cpp:270 +#: src/slic3r/GUI/GUI_Preview.cpp:244 msgid "Retractions" msgstr "Retractions" -#: src/slic3r/GUI/GUI_Preview.cpp:271 +#: src/slic3r/GUI/GUI_Preview.cpp:245 msgid "Unretractions" msgstr "Unretractions" -#: src/slic3r/GUI/GUI_Preview.cpp:272 +#: src/slic3r/GUI/GUI_Preview.cpp:246 msgid "Shells" msgstr "Shells" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 msgid "Slic3r Prusa Edition - Keyboard Shortcuts" msgstr "Slic3r Prusa Edition - Keyboard Shortcuts" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "Main Shortcuts" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:100 msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" msgstr "Open project STL/OBJ/AMF/3MF with config, delete bed" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 msgid "Import STL/OBJ/AMF/3MF without config, keep bed" msgstr "Import STL/OBJ/AMF/3MF without config, keep bed" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 msgid "Load Config from .ini/amf/3mf/gcode" msgstr "Load Config from .ini/amf/3mf/gcode" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725 +#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957 msgid "Export G-code" msgstr "Export G-code" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 msgid "Save project (3MF)" msgstr "Save project (3MF)" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "Load Config from .ini/amf/3mf/gcode and merge" msgstr "Load Config from .ini/amf/3mf/gcode and merge" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "(Re)slice" msgstr "(Re)slice" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Quick slice" msgstr "Quick slice" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat last quick slice" msgstr "Repeat last quick slice" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "Select Plater Tab" msgstr "Select Plater Tab" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 msgid "Quick slice and Save as" msgstr "Quick slice and Save as" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Select Print Settings Tab" msgstr "Select Print Settings Tab" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Select Filament Settings Tab" msgstr "Select Filament Settings Tab" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Select Printer Settings Tab" msgstr "Select Printer Settings Tab" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 msgid "Switch to 3D" msgstr "Switch to 3D" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 msgid "Switch to Preview" msgstr "Switch to Preview" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10 msgid "Preferences" msgstr "Preferences" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +#: src/slic3r/GUI/PrintHostDialogs.cpp:134 msgid "Print host upload queue" msgstr "Print host upload queue" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 msgid "Camera view " msgstr "Camera view " -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Add Instance to selected object " msgstr "Add Instance to selected object " -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 msgid "Remove Instance from selected object" msgstr "Remove Instance from selected object" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Show keyboard shortcuts list" msgstr "Show keyboard shortcuts list" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "Switch between 3D and Preview" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Select multiple object/Move multiple object" msgstr "Select multiple object/Move multiple object" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +msgid "Main Shortcuts" +msgstr "Main Shortcuts" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 msgid "Arrange" msgstr "Arrange" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 msgid "Select All objects" msgstr "Select All objects" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Delete selected" msgstr "Delete selected" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Delete All" msgstr "Delete All" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Gizmo move" msgstr "Gizmo move" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Gizmo scale" msgstr "Gizmo scale" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Gizmo rotate" msgstr "Gizmo rotate" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Gizmo cut" msgstr "Gizmo cut" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 msgid "Gizmo Place face on bed" msgstr "Gizmo Place face on bed" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 msgid "Gizmo SLA support points" msgstr "Gizmo SLA support points" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#, no-c-format +msgid "" +"Press to snap by 5% in Gizmo scale\n" +"or by 1mm in Gizmo move" +msgstr "" +"Press to snap by 5% in Gizmo scale\n" +"or by 1mm in Gizmo move" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "" +"Press to scale or rotate selected objects\n" +"around their own center" +msgstr "" +"Press to scale or rotate selected objects\n" +"around their own center" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:142 msgid "Zoom to Bed" msgstr "Zoom to Bed" @@ -1431,591 +1717,637 @@ msgstr "Unselect gizmo, keep object selection" msgid "Plater Shortcuts" msgstr "Plater Shortcuts" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Arrow Up" msgstr "Arrow Up" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Upper Layer" msgstr "Upper Layer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "Arrow Down" msgstr "Arrow Down" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Lower Layer" msgstr "Lower Layer" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Preview Shortcuts" msgstr "Preview Shortcuts" -#: src/slic3r/GUI/MainFrame.cpp:53 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +msgid "Move current slider thump Up" +msgstr "Move current slider thump Up" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Move current slider thump Down" +msgstr "Move current slider thump Down" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Arrow Left" +msgstr "Arrow Left" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Set upper thumb to current slider thumb" +msgstr "Set upper thumb to current slider thumb" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Arrow Right" +msgstr "Arrow Right" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Set lower thumb to current slider thumb" +msgstr "Set lower thumb to current slider thumb" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Add color change marker for current layer" +msgstr "Add color change marker for current layer" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Delete color change marker for current layer" +msgstr "Delete color change marker for current layer" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Layers Slider Shortcuts" +msgstr "Layers Slider Shortcuts" + +#: src/slic3r/GUI/MainFrame.cpp:54 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -#: src/slic3r/GUI/MainFrame.cpp:130 +#: src/slic3r/GUI/MainFrame.cpp:160 msgid "Plater" msgstr "Plater" -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "&Open" +#: src/slic3r/GUI/MainFrame.cpp:273 +msgid "&Open Project" +msgstr "&Open Project" -#: src/slic3r/GUI/MainFrame.cpp:236 +#: src/slic3r/GUI/MainFrame.cpp:273 msgid "Open a project file" msgstr "Open a project file" -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "&Save" +#: src/slic3r/GUI/MainFrame.cpp:275 +msgid "&Save Project" +msgstr "&Save Project" -#: src/slic3r/GUI/MainFrame.cpp:238 +#: src/slic3r/GUI/MainFrame.cpp:275 msgid "Save current project file" msgstr "Save current project file" -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "Save &as" +#: src/slic3r/GUI/MainFrame.cpp:277 +msgid "Save Project &as" +msgstr "Save Project &as" -#: src/slic3r/GUI/MainFrame.cpp:240 +#: src/slic3r/GUI/MainFrame.cpp:277 msgid "Save current project file as" msgstr "Save current project file as" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:283 msgid "Import STL/OBJ/AM&F/3MF" msgstr "Import STL/OBJ/AM&F/3MF" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:283 msgid "Load a model" msgstr "Load a model" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:286 msgid "Import &Config" msgstr "Import &Config" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:286 msgid "Load exported configuration file" msgstr "Load exported configuration file" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:288 msgid "Import Config from &project" msgstr "Import Config from &project" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:288 msgid "Load configuration from project file" msgstr "Load configuration from project file" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:291 msgid "Import Config &Bundle" msgstr "Import Config &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:291 msgid "Load presets from a bundle" msgstr "Load presets from a bundle" -#: src/slic3r/GUI/MainFrame.cpp:256 +#: src/slic3r/GUI/MainFrame.cpp:293 msgid "&Import" msgstr "&Import" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export &G-code" msgstr "Export &G-code" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export current plate as G-code" msgstr "Export current plate as G-code" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export plate as &STL" msgstr "Export plate as &STL" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export current plate as STL" msgstr "Export current plate as STL" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export plate as &AMF" msgstr "Export plate as &AMF" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export current plate as AMF" msgstr "Export current plate as AMF" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export &Config" msgstr "Export &Config" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export current configuration to file" msgstr "Export current configuration to file" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export Config &Bundle" msgstr "Export Config &Bundle" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export all presets to file" msgstr "Export all presets to file" -#: src/slic3r/GUI/MainFrame.cpp:271 +#: src/slic3r/GUI/MainFrame.cpp:308 msgid "&Export" msgstr "&Export" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:314 msgid "Quick Slice" msgstr "Quick Slice" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:314 msgid "Slice a file into a G-code" msgstr "Slice a file into a G-code" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:320 msgid "Quick Slice and Save As" msgstr "Quick Slice and Save As" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:320 msgid "Slice a file into a G-code, save as" msgstr "Slice a file into a G-code, save as" -#: src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat Last Quick Slice" msgstr "Repeat Last Quick Slice" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:334 msgid "(Re)Slice &Now" msgstr "(Re)Slice &Now" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:334 msgid "Start new slicing process" msgstr "Start new slicing process" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:337 msgid "&Repair STL file" msgstr "&Repair STL file" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:337 msgid "Automatically repair an STL file" msgstr "Automatically repair an STL file" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:340 msgid "&Quit" msgstr "&Quit" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:340 msgid "Quit Slic3r" msgstr "Quit Slic3r" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:374 msgid "&Select all" msgstr "&Select all" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:374 msgid "Selects all objects" msgstr "Selects all objects" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "&Delete selected" msgstr "&Delete selected" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "Deletes the current selection" msgstr "Deletes the current selection" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:379 msgid "Delete &all" msgstr "Delete &all" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:379 msgid "Deletes all objects" msgstr "Deletes all objects" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:392 msgid "&Plater Tab" msgstr "&Plater Tab" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:392 msgid "Show the plater" msgstr "Show the plater" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:399 msgid "P&rint Settings Tab" msgstr "P&rint Settings Tab" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:399 msgid "Show the print settings" msgstr "Show the print settings" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "&Filament Settings Tab" msgstr "&Filament Settings Tab" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "Show the filament settings" msgstr "Show the filament settings" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Print&er Settings Tab" msgstr "Print&er Settings Tab" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Show the printer settings" msgstr "Show the printer settings" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:407 msgid "3&D" msgstr "3&D" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:407 msgid "Show the 3D editing view" msgstr "Show the 3D editing view" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "Pre&view" msgstr "Pre&view" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "Show the 3D slices preview" msgstr "Show the 3D slices preview" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:430 msgid "Print &Host Upload Queue" msgstr "Print &Host Upload Queue" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:430 msgid "Display the Print Host Upload Queue window" msgstr "Display the Print Host Upload Queue window" -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "&Iso" +#: src/slic3r/GUI/MainFrame.cpp:439 +msgid "Iso" +msgstr "Iso" -#: src/slic3r/GUI/MainFrame.cpp:388 +#: src/slic3r/GUI/MainFrame.cpp:439 msgid "Iso View" msgstr "Iso View" -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "&Top" +#: src/slic3r/GUI/MainFrame.cpp:441 +msgid "Top" +msgstr "Top" -#: src/slic3r/GUI/MainFrame.cpp:390 +#: src/libslic3r/PrintConfig.cpp:2041 +msgctxt "Layers" +msgid "Top" +msgstr "Top" + +#: src/slic3r/GUI/MainFrame.cpp:441 msgid "Top View" msgstr "Top View" -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "&Bottom" +#: src/slic3r/GUI/MainFrame.cpp:442 +msgid "Bottom" +msgstr "Bottom" -#: src/slic3r/GUI/MainFrame.cpp:391 +#: src/libslic3r/PrintConfig.cpp:148 +msgctxt "Layers" +msgid "Bottom" +msgstr "Bottom" + +#: src/slic3r/GUI/MainFrame.cpp:442 msgid "Bottom View" msgstr "Bottom View" -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "&Front" +#: src/slic3r/GUI/MainFrame.cpp:443 +msgid "Front" +msgstr "Front" -#: src/slic3r/GUI/MainFrame.cpp:392 +#: src/slic3r/GUI/MainFrame.cpp:443 msgid "Front View" msgstr "Front View" -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "R&ear" +#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561 +msgid "Rear" +msgstr "Rear" -#: src/slic3r/GUI/MainFrame.cpp:393 +#: src/slic3r/GUI/MainFrame.cpp:444 msgid "Rear View" msgstr "Rear View" -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "&Left" +#: src/slic3r/GUI/MainFrame.cpp:445 +msgid "Left" +msgstr "Left" -#: src/slic3r/GUI/MainFrame.cpp:394 +#: src/slic3r/GUI/MainFrame.cpp:445 msgid "Left View" msgstr "Left View" -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "&Right" +#: src/slic3r/GUI/MainFrame.cpp:446 +msgid "Right" +msgstr "Right" -#: src/slic3r/GUI/MainFrame.cpp:395 +#: src/slic3r/GUI/MainFrame.cpp:446 msgid "Right View" msgstr "Right View" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:460 msgid "Prusa 3D &Drivers" msgstr "Prusa 3D &Drivers" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:460 msgid "Open the Prusa3D drivers download page in your browser" msgstr "Open the Prusa3D drivers download page in your browser" -#: src/slic3r/GUI/MainFrame.cpp:411 +#: src/slic3r/GUI/MainFrame.cpp:462 msgid "Prusa Edition &Releases" msgstr "Prusa Edition &Releases" -#: src/slic3r/GUI/MainFrame.cpp:411 +#: src/slic3r/GUI/MainFrame.cpp:462 msgid "Open the Prusa Edition releases page in your browser" msgstr "Open the Prusa Edition releases page in your browser" -#: src/slic3r/GUI/MainFrame.cpp:417 +#: src/slic3r/GUI/MainFrame.cpp:468 msgid "Slic3r &Website" msgstr "Slic3r &Website" -#: src/slic3r/GUI/MainFrame.cpp:417 +#: src/slic3r/GUI/MainFrame.cpp:468 msgid "Open the Slic3r website in your browser" msgstr "Open the Slic3r website in your browser" -#: src/slic3r/GUI/MainFrame.cpp:419 +#: src/slic3r/GUI/MainFrame.cpp:470 msgid "Slic3r &Manual" msgstr "Slic3r &Manual" -#: src/slic3r/GUI/MainFrame.cpp:419 +#: src/slic3r/GUI/MainFrame.cpp:470 msgid "Open the Slic3r manual in your browser" msgstr "Open the Slic3r manual in your browser" -#: src/slic3r/GUI/MainFrame.cpp:422 +#: src/slic3r/GUI/MainFrame.cpp:473 msgid "System &Info" msgstr "System &Info" -#: src/slic3r/GUI/MainFrame.cpp:422 +#: src/slic3r/GUI/MainFrame.cpp:473 msgid "Show system information" msgstr "Show system information" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:475 msgid "Show &Configuration Folder" msgstr "Show &Configuration Folder" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:475 msgid "Show user configuration folder (datadir)" msgstr "Show user configuration folder (datadir)" -#: src/slic3r/GUI/MainFrame.cpp:426 +#: src/slic3r/GUI/MainFrame.cpp:477 msgid "Report an I&ssue" msgstr "Report an I&ssue" -#: src/slic3r/GUI/MainFrame.cpp:426 +#: src/slic3r/GUI/MainFrame.cpp:477 msgid "Report an issue on the Slic3r Prusa Edition" msgstr "Report an issue on the Slic3r Prusa Edition" -#: src/slic3r/GUI/MainFrame.cpp:428 +#: src/slic3r/GUI/MainFrame.cpp:479 msgid "&About Slic3r" msgstr "&About Slic3r" -#: src/slic3r/GUI/MainFrame.cpp:428 +#: src/slic3r/GUI/MainFrame.cpp:479 msgid "Show about dialog" msgstr "Show about dialog" -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "&Keyboard Shortcuts" +#: src/slic3r/GUI/MainFrame.cpp:482 +msgid "Keyboard Shortcuts" +msgstr "Keyboard Shortcuts" -#: src/slic3r/GUI/MainFrame.cpp:431 +#: src/slic3r/GUI/MainFrame.cpp:482 msgid "Show the list of the keyboard shortcuts" msgstr "Show the list of the keyboard shortcuts" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:490 msgid "&File" msgstr "&File" -#: src/slic3r/GUI/MainFrame.cpp:440 +#: src/slic3r/GUI/MainFrame.cpp:491 msgid "&Edit" msgstr "&Edit" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "&Window" msgstr "&Window" -#: src/slic3r/GUI/MainFrame.cpp:442 +#: src/slic3r/GUI/MainFrame.cpp:493 msgid "&View" msgstr "&View" -#: src/slic3r/GUI/MainFrame.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:496 msgid "&Help" msgstr "&Help" -#: src/slic3r/GUI/MainFrame.cpp:472 +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:538 msgid "No previously sliced file." msgstr "No previously sliced file." -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 +#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219 msgid "Error" msgstr "Error" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:544 msgid "Previously sliced file (" msgstr "Previously sliced file (" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:544 msgid ") not found." msgstr ") not found." -#: src/slic3r/GUI/MainFrame.cpp:493 +#: src/slic3r/GUI/MainFrame.cpp:545 msgid "File Not Found" msgstr "File Not Found" -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 +#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152 msgid "Save " msgstr "Save " -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "SVG" msgstr "SVG" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "G-code" msgstr "G-code" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid " file as:" msgstr " file as:" -#: src/slic3r/GUI/MainFrame.cpp:548 +#: src/slic3r/GUI/MainFrame.cpp:595 msgid "Save zip file as:" msgstr "Save zip file as:" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:3348 msgid "Slicing" msgstr "Slicing" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:607 msgid "Processing " msgstr "Processing " -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:630 msgid " was successfully sliced." msgstr " was successfully sliced." -#: src/slic3r/GUI/MainFrame.cpp:585 +#: src/slic3r/GUI/MainFrame.cpp:632 msgid "Slicing Done!" msgstr "Slicing Done!" -#: src/slic3r/GUI/MainFrame.cpp:600 +#: src/slic3r/GUI/MainFrame.cpp:647 msgid "Select the STL file to repair:" msgstr "Select the STL file to repair:" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:661 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "Save OBJ file (less prone to coordinate errors than STL) as:" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:676 msgid "Your file was repaired." msgstr "Your file was repaired." -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051 msgid "Repair" msgstr "Repair" -#: src/slic3r/GUI/MainFrame.cpp:643 +#: src/slic3r/GUI/MainFrame.cpp:690 msgid "Save configuration as:" msgstr "Save configuration as:" -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774 msgid "Select configuration to load:" msgstr "Select configuration to load:" -#: src/slic3r/GUI/MainFrame.cpp:700 +#: src/slic3r/GUI/MainFrame.cpp:747 msgid "Save presets bundle as:" msgstr "Save presets bundle as:" -#: src/slic3r/GUI/MainFrame.cpp:751 +#: src/slic3r/GUI/MainFrame.cpp:798 #, c-format msgid "%d presets successfully imported." msgstr "%d presets successfully imported." -#: src/slic3r/GUI/MsgDialog.cpp:66 +#: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r error" msgstr "Slic3r error" -#: src/slic3r/GUI/MsgDialog.cpp:66 +#: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r has encountered an error" msgstr "Slic3r has encountered an error" -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "Copy to clipboard" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/Plater.cpp:126 +#: src/slic3r/GUI/Plater.cpp:137 msgid "Volume" msgstr "Volume" -#: src/slic3r/GUI/Plater.cpp:127 +#: src/slic3r/GUI/Plater.cpp:138 msgid "Facets" msgstr "Facets" -#: src/slic3r/GUI/Plater.cpp:128 +#: src/slic3r/GUI/Plater.cpp:139 msgid "Materials" msgstr "Materials" -#: src/slic3r/GUI/Plater.cpp:131 +#: src/slic3r/GUI/Plater.cpp:142 msgid "Manifold" msgstr "Manifold" -#: src/slic3r/GUI/Plater.cpp:174 +#: src/slic3r/GUI/Plater.cpp:188 msgid "Sliced Info" msgstr "Sliced Info" -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 +#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998 msgid "Used Filament (m)" msgstr "Used Filament (m)" -#: src/slic3r/GUI/Plater.cpp:194 +#: src/slic3r/GUI/Plater.cpp:208 msgid "Used Filament (mm³)" msgstr "Used Filament (mm³)" -#: src/slic3r/GUI/Plater.cpp:195 +#: src/slic3r/GUI/Plater.cpp:209 msgid "Used Filament (g)" msgstr "Used Filament (g)" -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 +#: src/slic3r/GUI/Plater.cpp:210 +msgid "Used Material (unit)" +msgstr "Used Material (unit)" + +#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013 +#: src/libslic3r/PrintConfig.cpp:716 msgid "Cost" msgstr "Cost" -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985 +#: src/slic3r/GUI/Plater.cpp:1027 msgid "Estimated printing time" msgstr "Estimated printing time" -#: src/slic3r/GUI/Plater.cpp:198 +#: src/slic3r/GUI/Plater.cpp:213 msgid "Number of tool changes" msgstr "Number of tool changes" -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "Support" +#: src/slic3r/GUI/Plater.cpp:290 +msgid "Click to edit preset" +msgstr "Click to edit preset" -#: src/slic3r/GUI/Plater.cpp:364 +#: src/slic3r/GUI/Plater.cpp:413 msgid "Select what kind of support do you need" msgstr "Select what kind of support do you need" -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "None" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 +#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:2419 msgid "Support on build plate only" msgstr "Support on build plate only" -#: src/slic3r/GUI/Plater.cpp:367 +#: src/slic3r/GUI/Plater.cpp:416 msgid "Everywhere" msgstr "Everywhere" -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 +#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007 msgid "Brim" msgstr "Brim" -#: src/slic3r/GUI/Plater.cpp:381 +#: src/slic3r/GUI/Plater.cpp:440 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." @@ -2023,50 +2355,55 @@ msgstr "" "This flag enables the brim that will be printed around each object on the " "first layer." -#: src/slic3r/GUI/Plater.cpp:390 +#: src/slic3r/GUI/Plater.cpp:448 msgid "Purging volumes" msgstr "Purging volumes" -#: src/slic3r/GUI/Plater.cpp:556 +#: src/slic3r/GUI/Plater.cpp:673 msgid "Print settings" msgstr "Print settings" -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 +#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421 +#: src/slic3r/GUI/Tab.cpp:1422 msgid "Filament" msgstr "Filament" -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 +#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252 msgid "SLA print" msgstr "SLA print" -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 +#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253 msgid "SLA material" msgstr "SLA material" -#: src/slic3r/GUI/Plater.cpp:560 +#: src/slic3r/GUI/Plater.cpp:677 msgid "Printer" msgstr "Printer" -#: src/slic3r/GUI/Plater.cpp:588 +#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674 msgid "Send to printer" msgstr "Send to printer" -#: src/slic3r/GUI/Plater.cpp:607 +#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:3470 msgid "Slice now" msgstr "Slice now" -#: src/slic3r/GUI/Plater.cpp:787 +#: src/slic3r/GUI/Plater.cpp:860 +msgid "Hold Shift to Slice & Export G-code" +msgstr "Hold Shift to Slice & Export G-code" + +#: src/slic3r/GUI/Plater.cpp:931 #, c-format msgid "%d (%d shells)" msgstr "%d (%d shells)" -#: src/slic3r/GUI/Plater.cpp:792 +#: src/slic3r/GUI/Plater.cpp:936 #, c-format msgid "Auto-repaired (%d errors)" msgstr "Auto-repaired (%d errors)" -#: src/slic3r/GUI/Plater.cpp:795 +#: src/slic3r/GUI/Plater.cpp:939 #, c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " @@ -2075,36 +2412,48 @@ msgstr "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" -#: src/slic3r/GUI/Plater.cpp:805 +#: src/slic3r/GUI/Plater.cpp:949 msgid "Yes" msgstr "Yes" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:972 +msgid "Used Material (ml)" +msgstr "Used Material (ml)" + +#: src/slic3r/GUI/Plater.cpp:975 +msgid "object(s)" +msgstr "object(s)" + +#: src/slic3r/GUI/Plater.cpp:975 +msgid "supports and pad" +msgstr "supports and pad" + +#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "objects" msgstr "objects" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "wipe tower" msgstr "wipe tower" -#: src/slic3r/GUI/Plater.cpp:855 +#: src/slic3r/GUI/Plater.cpp:1030 msgid "normal mode" msgstr "normal mode" -#: src/slic3r/GUI/Plater.cpp:859 +#: src/slic3r/GUI/Plater.cpp:1034 msgid "silent mode" msgstr "silent mode" -#: src/slic3r/GUI/Plater.cpp:1304 +#: src/slic3r/GUI/Plater.cpp:1544 msgid "Loading" msgstr "Loading" -#: src/slic3r/GUI/Plater.cpp:1314 +#: src/slic3r/GUI/Plater.cpp:1554 #, c-format msgid "Processing input file %s\n" msgstr "Processing input file %s\n" -#: src/slic3r/GUI/Plater.cpp:1366 +#: src/slic3r/GUI/Plater.cpp:1612 msgid "" "This file contains several objects positioned at multiple heights. Instead " "of considering them as multiple objects, should I consider\n" @@ -2114,11 +2463,23 @@ msgstr "" "of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?\n" -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 +#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707 msgid "Multi-part object detected" msgstr "Multi-part object detected" -#: src/slic3r/GUI/Plater.cpp:1388 +#: src/slic3r/GUI/Plater.cpp:1650 +msgid "" +"This file cannot be loaded in simple mode. Do you want to switch to expert " +"mode?\n" +msgstr "" +"This file cannot be loaded in simple mode. Do you want to switch to expert " +"mode?\n" + +#: src/slic3r/GUI/Plater.cpp:1651 +msgid "Detected advanced data" +msgstr "Detected advanced data" + +#: src/slic3r/GUI/Plater.cpp:1684 #, c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " @@ -2127,7 +2488,7 @@ msgstr "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" -#: src/slic3r/GUI/Plater.cpp:1408 +#: src/slic3r/GUI/Plater.cpp:1704 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -2137,11 +2498,11 @@ msgstr "" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?\n" -#: src/slic3r/GUI/Plater.cpp:1424 +#: src/slic3r/GUI/Plater.cpp:1720 msgid "Loaded" msgstr "Loaded" -#: src/slic3r/GUI/Plater.cpp:1492 +#: src/slic3r/GUI/Plater.cpp:1812 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." @@ -2149,47 +2510,51 @@ msgstr "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." -#: src/slic3r/GUI/Plater.cpp:1493 +#: src/slic3r/GUI/Plater.cpp:1813 msgid "Object too large?" msgstr "Object too large?" -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "Export print config" +#: src/slic3r/GUI/Plater.cpp:1863 +msgid "Export STL file:" +msgstr "Export STL file:" -#: src/slic3r/GUI/Plater.cpp:1538 +#: src/slic3r/GUI/Plater.cpp:1870 +msgid "Export AMF file:" +msgstr "Export AMF file:" + +#: src/slic3r/GUI/Plater.cpp:1876 msgid "Save file as:" msgstr "Save file as:" -#: src/slic3r/GUI/Plater.cpp:1702 +#: src/slic3r/GUI/Plater.cpp:2042 msgid "Arranging canceled" msgstr "Arranging canceled" -#: src/slic3r/GUI/Plater.cpp:1705 +#: src/slic3r/GUI/Plater.cpp:2045 msgid "Arranging" msgstr "Arranging" -#: src/slic3r/GUI/Plater.cpp:1736 +#: src/slic3r/GUI/Plater.cpp:2079 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "Could not arrange model objects! Some geometries may be invalid." -#: src/slic3r/GUI/Plater.cpp:1740 +#: src/slic3r/GUI/Plater.cpp:2083 msgid "Arranging done." msgstr "Arranging done." -#: src/slic3r/GUI/Plater.cpp:1782 +#: src/slic3r/GUI/Plater.cpp:2124 msgid "Orientation search canceled" msgstr "Orientation search canceled" -#: src/slic3r/GUI/Plater.cpp:1787 +#: src/slic3r/GUI/Plater.cpp:2129 msgid "Searching for optimal orientation" msgstr "Searching for optimal orientation" -#: src/slic3r/GUI/Plater.cpp:1797 +#: src/slic3r/GUI/Plater.cpp:2190 msgid "Orientation found." msgstr "Orientation found." -#: src/slic3r/GUI/Plater.cpp:1818 +#: src/slic3r/GUI/Plater.cpp:2211 msgid "" "The selected object can't be split because it contains more than one volume/" "material." @@ -2197,170 +2562,179 @@ msgstr "" "The selected object can't be split because it contains more than one volume/" "material." -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 +#: src/slic3r/GUI/Plater.cpp:2337 +msgid "Invalid data" +msgstr "Invalid data" + +#: src/slic3r/GUI/Plater.cpp:2346 +msgid "Ready to slice" +msgstr "Ready to slice" + +#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220 msgid "Cancelling" msgstr "Cancelling" -#: src/slic3r/GUI/Plater.cpp:1962 +#: src/slic3r/GUI/Plater.cpp:2396 msgid "Another export job is currently running." msgstr "Another export job is currently running." -#: src/slic3r/GUI/Plater.cpp:2215 +#: src/slic3r/GUI/Plater.cpp:2656 msgid "Export failed" msgstr "Export failed" -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 +#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221 msgid "Cancelled" msgstr "Cancelled" -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "Delete" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "Remove the selected object" - -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759 +#: src/slic3r/GUI/Plater.cpp:2831 msgid "Increase copies" msgstr "Increase copies" -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843 +msgid "Remove the selected object" +msgstr "Remove the selected object" + +#: src/slic3r/GUI/Plater.cpp:2831 msgid "Place one more copy of the selected object" msgstr "Place one more copy of the selected object" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2833 msgid "Decrease copies" msgstr "Decrease copies" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2833 msgid "Remove one copy of the selected object" msgstr "Remove one copy of the selected object" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2835 msgid "Set number of copies" msgstr "Set number of copies" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2835 msgid "Change the number of copies of the selected object" msgstr "Change the number of copies of the selected object" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2858 msgid "Reload from Disk" msgstr "Reload from Disk" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2858 msgid "Reload the selected file from Disk" msgstr "Reload the selected file from Disk" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "Export object as STL" +#: src/slic3r/GUI/Plater.cpp:2861 +msgid "Export the selected object as STL file" +msgstr "Export the selected object as STL file" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "Export this single object as STL file" - -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2873 msgid "Along X axis" msgstr "Along X axis" -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2873 msgid "Mirror the selected object along the X axis" msgstr "Mirror the selected object along the X axis" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2875 msgid "Along Y axis" msgstr "Along Y axis" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2875 msgid "Mirror the selected object along the Y axis" msgstr "Mirror the selected object along the Y axis" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2877 msgid "Along Z axis" msgstr "Along Z axis" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2877 msgid "Mirror the selected object along the Z axis" msgstr "Mirror the selected object along the Z axis" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Mirror" msgstr "Mirror" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Mirror the selected object" msgstr "Mirror the selected object" -#: src/slic3r/GUI/Plater.cpp:2400 +#: src/slic3r/GUI/Plater.cpp:2898 msgid "To objects" msgstr "To objects" -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 +#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920 msgid "Split the selected object into individual objects" msgstr "Split the selected object into individual objects" -#: src/slic3r/GUI/Plater.cpp:2402 +#: src/slic3r/GUI/Plater.cpp:2900 msgid "To parts" msgstr "To parts" -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940 msgid "Split the selected object into individual sub-parts" msgstr "Split the selected object into individual sub-parts" -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920 +#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075 msgid "Split" msgstr "Split" -#: src/slic3r/GUI/Plater.cpp:2405 +#: src/slic3r/GUI/Plater.cpp:2903 msgid "Split the selected object" msgstr "Split the selected object" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:2926 msgid "Optimize orientation" msgstr "Optimize orientation" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:2926 msgid "Optimize the rotation of the object for better print results." msgstr "Optimize the rotation of the object for better print results." -#: src/slic3r/GUI/Plater.cpp:2795 +#: src/slic3r/GUI/Plater.cpp:3342 msgid "Save G-code file as:" msgstr "Save G-code file as:" -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "Save Zip file as:" +#: src/slic3r/GUI/Plater.cpp:3342 +msgid "Save SL1 file as:" +msgstr "Save SL1 file as:" -#: src/slic3r/GUI/Plater.cpp:2845 +#: src/slic3r/GUI/Plater.cpp:3397 #, c-format msgid "STL file exported to %s" msgstr "STL file exported to %s" -#: src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/Plater.cpp:3413 #, c-format msgid "AMF file exported to %s" msgstr "AMF file exported to %s" -#: src/slic3r/GUI/Plater.cpp:2864 +#: src/slic3r/GUI/Plater.cpp:3416 #, c-format msgid "Error exporting AMF file %s" msgstr "Error exporting AMF file %s" -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Plater.cpp:3442 #, c-format msgid "3MF file exported to %s" msgstr "3MF file exported to %s" -#: src/slic3r/GUI/Plater.cpp:2894 +#: src/slic3r/GUI/Plater.cpp:3445 #, c-format msgid "Error exporting 3MF file %s" msgstr "Error exporting 3MF file %s" -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 +#: src/slic3r/GUI/Plater.cpp:3673 +msgid "Export" +msgstr "Export" + +#: src/slic3r/GUI/Plater.cpp:3674 +msgid "Send G-code" +msgstr "Send G-code" + +#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762 +#: src/slic3r/GUI/Tab.cpp:1963 msgid "General" msgstr "General" @@ -2424,11 +2798,11 @@ msgstr "" "When checked, the print and filament presets are shown in the preset editor " "even if they are marked as incompatible with the active printer" -#: src/slic3r/GUI/Preferences.cpp:90 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "Use legacy OpenGL 1.1 rendering" msgstr "Use legacy OpenGL 1.1 rendering" -#: src/slic3r/GUI/Preferences.cpp:92 +#: src/slic3r/GUI/Preferences.cpp:93 msgid "" "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " "try to check this checkbox. This will disable the layer height editing and " @@ -2438,26 +2812,42 @@ msgstr "" "try to check this checkbox. This will disable the layer height editing and " "anti aliasing, so it is likely better to upgrade your graphics driver." -#: src/slic3r/GUI/Preferences.cpp:115 +#: src/slic3r/GUI/Preferences.cpp:101 +msgid "Use Retina resolution for the 3D scene" +msgstr "Use Retina resolution for the 3D scene" + +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "" +"If enabled, the 3D scene will be rendered in Retina resolution. If you are " +"experiencing 3D performance problems, disabling this option may help." +msgstr "" +"If enabled, the 3D scene will be rendered in Retina resolution. If you are " +"experiencing 3D performance problems, disabling this option may help." + +#: src/slic3r/GUI/Preferences.cpp:126 msgid "You need to restart Slic3r to make the changes effective." msgstr "You need to restart Slic3r to make the changes effective." -#: src/slic3r/GUI/Preset.cpp:170 +#: src/slic3r/GUI/Preset.cpp:207 msgid "modified" msgstr "modified" -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 +#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958 +#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043 +#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537 msgid "System presets" msgstr "System presets" -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 +#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047 +#: src/slic3r/GUI/PresetBundle.cpp:1542 msgid "User presets" msgstr "User presets" -#: src/slic3r/GUI/Preset.cpp:1157 +#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247 +msgid "Add a new printer" +msgstr "Add a new printer" + +#: src/slic3r/GUI/Preset.cpp:1251 msgid "filament" msgstr "filament" @@ -2597,48 +2987,44 @@ msgstr "Recommended object thin wall thickness for layer height %.2f and " msgid "%d lines: %.2lf mm" msgstr "%d lines: %.2lf mm" -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 +#: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Send G-Code to printer host" msgstr "Send G-Code to printer host" -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 +#: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Upload to Printer Host with the following filename:" msgstr "Upload to Printer Host with the following filename:" -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 +#: src/slic3r/GUI/PrintHostDialogs.cpp:34 msgid "Start printing after upload" msgstr "Start printing after upload" -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +#: src/slic3r/GUI/PrintHostDialogs.cpp:41 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "Use forward slashes ( / ) as a directory separator if needed." -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Cancel selected" msgstr "Cancel selected" -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Show error message" msgstr "Show error message" -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "Close" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 +#: src/slic3r/GUI/PrintHostDialogs.cpp:198 +#: src/slic3r/GUI/PrintHostDialogs.cpp:217 msgid "Enqueued" msgstr "Enqueued" -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 +#: src/slic3r/GUI/PrintHostDialogs.cpp:218 msgid "Uploading" msgstr "Uploading" -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 +#: src/slic3r/GUI/PrintHostDialogs.cpp:222 msgid "Completed" msgstr "Completed" -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 +#: src/slic3r/GUI/PrintHostDialogs.cpp:260 msgid "Error uploading to print host:" msgstr "Error uploading to print host:" @@ -2651,10 +3037,10 @@ msgid "Time" msgstr "Time" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670 +#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250 +#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315 msgid "s" msgstr "s" @@ -2662,35 +3048,35 @@ msgstr "s" msgid "Volumetric speed" msgstr "Volumetric speed" -#: src/slic3r/GUI/SysInfoDialog.cpp:40 +#: src/slic3r/GUI/SysInfoDialog.cpp:44 msgid "Slic3r Prusa Edition - System Information" msgstr "Slic3r Prusa Edition - System Information" -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228 msgid "Compatible printers" msgstr "Compatible printers" -#: src/slic3r/GUI/Tab.cpp:50 +#: src/slic3r/GUI/Tab.cpp:51 msgid "Select the printers this profile is compatible with." msgstr "Select the printers this profile is compatible with." -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243 msgid "Compatible print profiles" msgstr "Compatible print profiles" -#: src/slic3r/GUI/Tab.cpp:56 +#: src/slic3r/GUI/Tab.cpp:57 msgid "Select the print profiles this profile is compatible with." msgstr "Select the print profiles this profile is compatible with." -#: src/slic3r/GUI/Tab.cpp:118 +#: src/slic3r/GUI/Tab.cpp:132 msgid "Save current " msgstr "Save current " -#: src/slic3r/GUI/Tab.cpp:119 +#: src/slic3r/GUI/Tab.cpp:133 msgid "Delete this preset" msgstr "Delete this preset" -#: src/slic3r/GUI/Tab.cpp:131 +#: src/slic3r/GUI/Tab.cpp:145 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -2698,181 +3084,181 @@ msgstr "" "Hover the cursor over buttons to find more information \n" "or click this button." -#: src/slic3r/GUI/Tab.cpp:824 +#: src/slic3r/GUI/Tab.cpp:858 msgid "It's a default preset." msgstr "It's a default preset." -#: src/slic3r/GUI/Tab.cpp:825 +#: src/slic3r/GUI/Tab.cpp:859 msgid "It's a system preset." msgstr "It's a system preset." -#: src/slic3r/GUI/Tab.cpp:826 +#: src/slic3r/GUI/Tab.cpp:860 msgid "Current preset is inherited from " msgstr "Current preset is inherited from " -#: src/slic3r/GUI/Tab.cpp:831 +#: src/slic3r/GUI/Tab.cpp:865 msgid "It can't be deleted or modified. " msgstr "It can't be deleted or modified. " -#: src/slic3r/GUI/Tab.cpp:832 +#: src/slic3r/GUI/Tab.cpp:866 msgid "" "Any modifications should be saved as a new preset inherited from this one. " msgstr "" "Any modifications should be saved as a new preset inherited from this one. " -#: src/slic3r/GUI/Tab.cpp:833 +#: src/slic3r/GUI/Tab.cpp:867 msgid "To do that please specify a new name for the preset." msgstr "To do that please specify a new name for the preset." -#: src/slic3r/GUI/Tab.cpp:837 +#: src/slic3r/GUI/Tab.cpp:871 msgid "Additional information:" msgstr "Additional information:" -#: src/slic3r/GUI/Tab.cpp:843 +#: src/slic3r/GUI/Tab.cpp:877 msgid "printer model" msgstr "printer model" -#: src/slic3r/GUI/Tab.cpp:851 +#: src/slic3r/GUI/Tab.cpp:885 msgid "default print profile" msgstr "default print profile" -#: src/slic3r/GUI/Tab.cpp:854 +#: src/slic3r/GUI/Tab.cpp:888 msgid "default filament profile" msgstr "default filament profile" -#: src/slic3r/GUI/Tab.cpp:868 +#: src/slic3r/GUI/Tab.cpp:902 msgid "default SLA material profile" msgstr "default SLA material profile" -#: src/slic3r/GUI/Tab.cpp:872 +#: src/slic3r/GUI/Tab.cpp:906 msgid "default SLA print profile" msgstr "default SLA print profile" -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303 msgid "Layers and perimeters" msgstr "Layers and perimeters" -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 +#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55 msgid "Layer height" msgstr "Layer height" -#: src/slic3r/GUI/Tab.cpp:924 +#: src/slic3r/GUI/Tab.cpp:953 msgid "Vertical shells" msgstr "Vertical shells" -#: src/slic3r/GUI/Tab.cpp:935 +#: src/slic3r/GUI/Tab.cpp:964 msgid "Horizontal shells" msgstr "Horizontal shells" -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709 msgid "Solid layers" msgstr "Solid layers" -#: src/slic3r/GUI/Tab.cpp:941 +#: src/slic3r/GUI/Tab.cpp:970 msgid "Quality (slower slicing)" msgstr "Quality (slower slicing)" -#: src/slic3r/GUI/Tab.cpp:958 +#: src/slic3r/GUI/Tab.cpp:988 msgid "Reducing printing time" msgstr "Reducing printing time" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1000 msgid "Skirt and brim" msgstr "Skirt and brim" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1017 msgid "Raft" msgstr "Raft" -#: src/slic3r/GUI/Tab.cpp:991 +#: src/slic3r/GUI/Tab.cpp:1021 msgid "Options for support material and raft" msgstr "Options for support material and raft" -#: src/slic3r/GUI/Tab.cpp:1006 +#: src/slic3r/GUI/Tab.cpp:1036 msgid "Speed for print moves" msgstr "Speed for print moves" -#: src/slic3r/GUI/Tab.cpp:1018 +#: src/slic3r/GUI/Tab.cpp:1048 msgid "Speed for non-print moves" msgstr "Speed for non-print moves" -#: src/slic3r/GUI/Tab.cpp:1021 +#: src/slic3r/GUI/Tab.cpp:1051 msgid "Modifiers" msgstr "Modifiers" -#: src/slic3r/GUI/Tab.cpp:1024 +#: src/slic3r/GUI/Tab.cpp:1054 msgid "Acceleration control (advanced)" msgstr "Acceleration control (advanced)" -#: src/slic3r/GUI/Tab.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1061 msgid "Autospeed (advanced)" msgstr "Autospeed (advanced)" -#: src/slic3r/GUI/Tab.cpp:1037 +#: src/slic3r/GUI/Tab.cpp:1069 msgid "Multiple Extruders" msgstr "Multiple Extruders" -#: src/slic3r/GUI/Tab.cpp:1045 +#: src/slic3r/GUI/Tab.cpp:1077 msgid "Ooze prevention" msgstr "Ooze prevention" -#: src/slic3r/GUI/Tab.cpp:1062 +#: src/slic3r/GUI/Tab.cpp:1094 msgid "Extrusion width" msgstr "Extrusion width" -#: src/slic3r/GUI/Tab.cpp:1072 +#: src/slic3r/GUI/Tab.cpp:1104 msgid "Overlap" msgstr "Overlap" -#: src/slic3r/GUI/Tab.cpp:1075 +#: src/slic3r/GUI/Tab.cpp:1107 msgid "Flow" msgstr "Flow" -#: src/slic3r/GUI/Tab.cpp:1078 +#: src/slic3r/GUI/Tab.cpp:1116 msgid "Other" msgstr "Other" -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 +#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351 msgid "Output options" msgstr "Output options" -#: src/slic3r/GUI/Tab.cpp:1086 +#: src/slic3r/GUI/Tab.cpp:1120 msgid "Sequential printing" msgstr "Sequential printing" -#: src/slic3r/GUI/Tab.cpp:1088 +#: src/slic3r/GUI/Tab.cpp:1122 msgid "Extruder clearance (mm)" msgstr "Extruder clearance (mm)" -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 +#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352 msgid "Output file" msgstr "Output file" -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382 msgid "Post-processing scripts" msgstr "Post-processing scripts" -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 +#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145 +#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528 +#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936 +#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241 msgid "Notes" msgstr "Notes" -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 +#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535 +#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034 +#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357 msgid "Dependencies" msgstr "Dependencies" -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 +#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536 +#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035 +#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358 msgid "Profile dependencies" msgstr "Profile dependencies" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1198 #, no-c-format msgid "" "The Spiral Vase mode requires:\n" @@ -2893,11 +3279,11 @@ msgstr "" "\n" "Shall I adjust those settings in order to enable Spiral Vase?" -#: src/slic3r/GUI/Tab.cpp:1168 +#: src/slic3r/GUI/Tab.cpp:1205 msgid "Spiral Vase" msgstr "Spiral Vase" -#: src/slic3r/GUI/Tab.cpp:1191 +#: src/slic3r/GUI/Tab.cpp:1228 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -2915,11 +3301,11 @@ msgstr "" "\n" "Shall I adjust those settings in order to enable the Wipe Tower?" -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 +#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249 msgid "Wipe Tower" msgstr "Wipe Tower" -#: src/slic3r/GUI/Tab.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers.\n" @@ -2931,7 +3317,7 @@ msgstr "" "\n" "Shall I synchronize support layers in order to enable the Wipe Tower?" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1264 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters\n" @@ -2943,15 +3329,15 @@ msgstr "" "\n" "Shall I adjust those settings for supports?" -#: src/slic3r/GUI/Tab.cpp:1230 +#: src/slic3r/GUI/Tab.cpp:1267 msgid "Support Generator" msgstr "Support Generator" -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1309 msgid "The " msgstr "The " -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1309 #, no-c-format msgid "" " infill pattern is not supposed to work at 100% density.\n" @@ -2962,82 +3348,82 @@ msgstr "" "\n" "Shall I switch to rectilinear fill pattern?" -#: src/slic3r/GUI/Tab.cpp:1388 +#: src/slic3r/GUI/Tab.cpp:1429 msgid "Temperature " msgstr "Temperature " -#: src/slic3r/GUI/Tab.cpp:1394 +#: src/slic3r/GUI/Tab.cpp:1435 msgid "Bed" msgstr "Bed" -#: src/slic3r/GUI/Tab.cpp:1399 +#: src/slic3r/GUI/Tab.cpp:1440 msgid "Cooling" msgstr "Cooling" -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 +#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285 +#: src/libslic3r/PrintConfig.cpp:2097 msgid "Enable" msgstr "Enable" -#: src/slic3r/GUI/Tab.cpp:1411 +#: src/slic3r/GUI/Tab.cpp:1452 msgid "Fan settings" msgstr "Fan settings" -#: src/slic3r/GUI/Tab.cpp:1412 +#: src/slic3r/GUI/Tab.cpp:1453 msgid "Fan speed" msgstr "Fan speed" -#: src/slic3r/GUI/Tab.cpp:1420 +#: src/slic3r/GUI/Tab.cpp:1461 msgid "Cooling thresholds" msgstr "Cooling thresholds" -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Tab.cpp:1467 msgid "Filament properties" msgstr "Filament properties" -#: src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1471 msgid "Print speed override" msgstr "Print speed override" -#: src/slic3r/GUI/Tab.cpp:1440 +#: src/slic3r/GUI/Tab.cpp:1481 msgid "Toolchange parameters with single extruder MM printers" msgstr "Toolchange parameters with single extruder MM printers" -#: src/slic3r/GUI/Tab.cpp:1455 +#: src/slic3r/GUI/Tab.cpp:1496 msgid "Ramming settings" msgstr "Ramming settings" -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898 msgid "Custom G-code" msgstr "Custom G-code" -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 +#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899 +#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750 msgid "Start G-code" msgstr "Start G-code" -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 +#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368 msgid "End G-code" msgstr "End G-code" -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 +#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689 msgid " Browse " msgstr " Browse " -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838 msgid "Test" msgstr "Test" -#: src/slic3r/GUI/Tab.cpp:1615 +#: src/slic3r/GUI/Tab.cpp:1662 msgid "Could not get a valid Printer Host reference" msgstr "Could not get a valid Printer Host reference" -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851 msgid "Success!" msgstr "Success!" -#: src/slic3r/GUI/Tab.cpp:1636 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." @@ -3045,15 +3431,15 @@ msgstr "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." -#: src/slic3r/GUI/Tab.cpp:1648 +#: src/slic3r/GUI/Tab.cpp:1696 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -#: src/slic3r/GUI/Tab.cpp:1649 +#: src/slic3r/GUI/Tab.cpp:1697 msgid "Open CA certificate file" msgstr "Open CA certificate file" -#: src/slic3r/GUI/Tab.cpp:1676 +#: src/slic3r/GUI/Tab.cpp:1725 msgid "" "HTTPS CA File:\n" "\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " @@ -3067,141 +3453,149 @@ msgstr "" "\tTo use a custom CA file, please import your CA file into Certificate " "Store / Keychain." -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964 msgid "Size and coordinates" msgstr "Size and coordinates" -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 +#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968 +#: src/slic3r/GUI/Tab.cpp:2911 msgid " Set " msgstr " Set " -#: src/slic3r/GUI/Tab.cpp:1740 +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Capabilities" msgstr "Capabilities" -#: src/slic3r/GUI/Tab.cpp:1745 +#: src/slic3r/GUI/Tab.cpp:1795 msgid "Number of extruders of the printer." msgstr "Number of extruders of the printer." -#: src/slic3r/GUI/Tab.cpp:1773 +#: src/slic3r/GUI/Tab.cpp:1823 msgid "USB/Serial connection" msgstr "USB/Serial connection" -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 +#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590 msgid "Serial port" msgstr "Serial port" -#: src/slic3r/GUI/Tab.cpp:1779 +#: src/slic3r/GUI/Tab.cpp:1829 msgid "Rescan serial ports" msgstr "Rescan serial ports" -#: src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1851 msgid "Connection to printer works correctly." msgstr "Connection to printer works correctly." -#: src/slic3r/GUI/Tab.cpp:1804 +#: src/slic3r/GUI/Tab.cpp:1854 msgid "Connection failed." msgstr "Connection failed." -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 +#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022 msgid "Print Host upload" msgstr "Print Host upload" -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 +#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128 msgid "Before layer change G-code" msgstr "Before layer change G-code" -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 +#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030 msgid "After layer change G-code" msgstr "After layer change G-code" -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 +#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005 msgid "Tool change G-code" msgstr "Tool change G-code" -#: src/slic3r/GUI/Tab.cpp:1877 +#: src/slic3r/GUI/Tab.cpp:1929 msgid "Between objects G-code (for sequential printing)" msgstr "Between objects G-code (for sequential printing)" -#: src/slic3r/GUI/Tab.cpp:1938 +#: src/slic3r/GUI/Tab.cpp:1990 msgid "Display" msgstr "Display" -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 +#: src/slic3r/GUI/Tab.cpp:2001 +msgid "Tilt" +msgstr "Tilt" + +#: src/slic3r/GUI/Tab.cpp:2002 +msgid "Tilt time" +msgstr "Tilt time" + +#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223 msgid "Corrections" msgstr "Corrections" -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 +#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136 +#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 +#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1142 msgid "Machine limits" msgstr "Machine limits" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2088 msgid "Values in this column are for Full Power mode" msgstr "Values in this column are for Full Power mode" -#: src/slic3r/GUI/Tab.cpp:2026 +#: src/slic3r/GUI/Tab.cpp:2089 msgid "Full Power" msgstr "Full Power" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2094 msgid "Values in this column are for Silent mode" msgstr "Values in this column are for Silent mode" -#: src/slic3r/GUI/Tab.cpp:2032 +#: src/slic3r/GUI/Tab.cpp:2095 msgid "Silent" msgstr "Silent" -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Tab.cpp:2103 msgid "Maximum feedrates" msgstr "Maximum feedrates" -#: src/slic3r/GUI/Tab.cpp:2045 +#: src/slic3r/GUI/Tab.cpp:2108 msgid "Maximum accelerations" msgstr "Maximum accelerations" -#: src/slic3r/GUI/Tab.cpp:2052 +#: src/slic3r/GUI/Tab.cpp:2115 msgid "Jerk limits" msgstr "Jerk limits" -#: src/slic3r/GUI/Tab.cpp:2057 +#: src/slic3r/GUI/Tab.cpp:2120 msgid "Minimum feedrates" msgstr "Minimum feedrates" -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 +#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166 msgid "Single extruder MM setup" msgstr "Single extruder MM setup" -#: src/slic3r/GUI/Tab.cpp:2104 +#: src/slic3r/GUI/Tab.cpp:2167 msgid "Single extruder multimaterial parameters" msgstr "Single extruder multimaterial parameters" -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 +#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475 #, c-format msgid "Extruder %d" msgstr "Extruder %d" -#: src/slic3r/GUI/Tab.cpp:2125 +#: src/slic3r/GUI/Tab.cpp:2188 msgid "Layer height limits" msgstr "Layer height limits" -#: src/slic3r/GUI/Tab.cpp:2130 +#: src/slic3r/GUI/Tab.cpp:2193 msgid "Position (for multi-extruder printers)" msgstr "Position (for multi-extruder printers)" -#: src/slic3r/GUI/Tab.cpp:2133 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Retraction" msgstr "Retraction" -#: src/slic3r/GUI/Tab.cpp:2136 +#: src/slic3r/GUI/Tab.cpp:2199 msgid "Only lift Z" msgstr "Only lift Z" -#: src/slic3r/GUI/Tab.cpp:2149 +#: src/slic3r/GUI/Tab.cpp:2212 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" @@ -3209,11 +3603,11 @@ msgstr "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" -#: src/slic3r/GUI/Tab.cpp:2153 +#: src/slic3r/GUI/Tab.cpp:2216 msgid "Preview" msgstr "Preview" -#: src/slic3r/GUI/Tab.cpp:2284 +#: src/slic3r/GUI/Tab.cpp:2352 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -3223,93 +3617,89 @@ msgstr "" "\n" "Shall I disable it in order to enable Firmware Retraction?" -#: src/slic3r/GUI/Tab.cpp:2286 +#: src/slic3r/GUI/Tab.cpp:2354 msgid "Firmware Retraction" msgstr "Firmware Retraction" -#: src/slic3r/GUI/Tab.cpp:2565 +#: src/slic3r/GUI/Tab.cpp:2681 #, c-format msgid "Default preset (%s)" msgstr "Default preset (%s)" -#: src/slic3r/GUI/Tab.cpp:2566 +#: src/slic3r/GUI/Tab.cpp:2682 #, c-format msgid "Preset (%s)" msgstr "Preset (%s)" -#: src/slic3r/GUI/Tab.cpp:2583 +#: src/slic3r/GUI/Tab.cpp:2699 msgid "has the following unsaved changes:" msgstr "has the following unsaved changes:" -#: src/slic3r/GUI/Tab.cpp:2586 +#: src/slic3r/GUI/Tab.cpp:2702 msgid "is not compatible with printer" msgstr "is not compatible with printer" -#: src/slic3r/GUI/Tab.cpp:2587 +#: src/slic3r/GUI/Tab.cpp:2703 msgid "is not compatible with print profile" msgstr "is not compatible with print profile" -#: src/slic3r/GUI/Tab.cpp:2589 +#: src/slic3r/GUI/Tab.cpp:2705 msgid "and it has the following unsaved changes:" msgstr "and it has the following unsaved changes:" -#: src/slic3r/GUI/Tab.cpp:2592 +#: src/slic3r/GUI/Tab.cpp:2708 msgid "Discard changes and continue anyway?" msgstr "Discard changes and continue anyway?" -#: src/slic3r/GUI/Tab.cpp:2593 +#: src/slic3r/GUI/Tab.cpp:2709 msgid "Unsaved Changes" msgstr "Unsaved Changes" -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "It's impossible to print multi-part object(s) with SLA technology." - -#: src/slic3r/GUI/Tab.cpp:2605 +#: src/slic3r/GUI/Tab.cpp:2721 msgid "Please check your object list before preset changing." msgstr "Please check your object list before preset changing." -#: src/slic3r/GUI/Tab.cpp:2699 +#: src/slic3r/GUI/Tab.cpp:2801 +msgid "Copy" +msgstr "Copy" + +#: src/slic3r/GUI/Tab.cpp:2823 msgid "The supplied name is empty. It can't be saved." msgstr "The supplied name is empty. It can't be saved." -#: src/slic3r/GUI/Tab.cpp:2704 +#: src/slic3r/GUI/Tab.cpp:2828 msgid "Cannot overwrite a system profile." msgstr "Cannot overwrite a system profile." -#: src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Cannot overwrite an external profile." msgstr "Cannot overwrite an external profile." -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2858 msgid "remove" msgstr "remove" -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2858 msgid "delete" msgstr "delete" -#: src/slic3r/GUI/Tab.cpp:2735 +#: src/slic3r/GUI/Tab.cpp:2859 msgid "Are you sure you want to " msgstr "Are you sure you want to " -#: src/slic3r/GUI/Tab.cpp:2735 +#: src/slic3r/GUI/Tab.cpp:2859 msgid " the selected preset?" msgstr " the selected preset?" -#: src/slic3r/GUI/Tab.cpp:2736 +#: src/slic3r/GUI/Tab.cpp:2860 msgid "Remove" msgstr "Remove" -#: src/slic3r/GUI/Tab.cpp:2737 +#: src/slic3r/GUI/Tab.cpp:2861 msgid " Preset" msgstr " Preset" -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "All" - -#: src/slic3r/GUI/Tab.cpp:2869 +#: src/slic3r/GUI/Tab.cpp:2989 msgid "" "LOCKED LOCK;indicates that the settings are the same as the system values " "for the current option group" @@ -3317,7 +3707,7 @@ msgstr "" "LOCKED LOCK;indicates that the settings are the same as the system values " "for the current option group" -#: src/slic3r/GUI/Tab.cpp:2872 +#: src/slic3r/GUI/Tab.cpp:2992 msgid "" "UNLOCKED LOCK;indicates that some settings were changed and are not equal to " "the system values for the current option group.\n" @@ -3329,7 +3719,7 @@ msgstr "" "Click the UNLOCKED LOCK icon to reset all settings for current option group " "to the system values." -#: src/slic3r/GUI/Tab.cpp:2878 +#: src/slic3r/GUI/Tab.cpp:2998 msgid "" "WHITE BULLET;for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." @@ -3337,7 +3727,7 @@ msgstr "" "WHITE BULLET;for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." -#: src/slic3r/GUI/Tab.cpp:2882 +#: src/slic3r/GUI/Tab.cpp:3002 msgid "" "BACK ARROW;indicates that the settings were changed and are not equal to the " "last saved preset for the current option group.\n" @@ -3349,7 +3739,7 @@ msgstr "" "Click the BACK ARROW icon to reset all settings for the current option group " "to the last saved preset." -#: src/slic3r/GUI/Tab.cpp:2908 +#: src/slic3r/GUI/Tab.cpp:3028 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" @@ -3357,7 +3747,7 @@ msgstr "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" -#: src/slic3r/GUI/Tab.cpp:2910 +#: src/slic3r/GUI/Tab.cpp:3030 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system values for the current option group.\n" @@ -3367,11 +3757,11 @@ msgstr "" "equal to the system values for the current option group.\n" "Click to reset all settings for current option group to the system values." -#: src/slic3r/GUI/Tab.cpp:2913 +#: src/slic3r/GUI/Tab.cpp:3033 msgid "WHITE BULLET icon indicates a non system preset." msgstr "WHITE BULLET icon indicates a non system preset." -#: src/slic3r/GUI/Tab.cpp:2916 +#: src/slic3r/GUI/Tab.cpp:3036 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -3379,7 +3769,7 @@ msgstr "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." -#: src/slic3r/GUI/Tab.cpp:2918 +#: src/slic3r/GUI/Tab.cpp:3038 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -3391,13 +3781,13 @@ msgstr "" "Click to reset all settings for the current option group to the last saved " "preset." -#: src/slic3r/GUI/Tab.cpp:2924 +#: src/slic3r/GUI/Tab.cpp:3044 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system value." msgstr "" "LOCKED LOCK icon indicates that the value is the same as the system value." -#: src/slic3r/GUI/Tab.cpp:2925 +#: src/slic3r/GUI/Tab.cpp:3045 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system value.\n" @@ -3407,7 +3797,7 @@ msgstr "" "the system value.\n" "Click to reset current value to the system value." -#: src/slic3r/GUI/Tab.cpp:2931 +#: src/slic3r/GUI/Tab.cpp:3051 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -3415,7 +3805,7 @@ msgstr "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." -#: src/slic3r/GUI/Tab.cpp:2932 +#: src/slic3r/GUI/Tab.cpp:3052 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -3425,99 +3815,115 @@ msgstr "" "last saved preset.\n" "Click to reset current value to the last saved preset." -#: src/slic3r/GUI/Tab.cpp:3031 +#: src/slic3r/GUI/Tab.cpp:3152 msgid " as:" msgstr " as:" -#: src/slic3r/GUI/Tab.cpp:3075 +#: src/slic3r/GUI/Tab.cpp:3196 msgid "the following postfix are not allowed:" msgstr "the following postfix are not allowed:" -#: src/slic3r/GUI/Tab.cpp:3079 +#: src/slic3r/GUI/Tab.cpp:3200 msgid "The supplied name is not available." msgstr "The supplied name is not available." -#: src/slic3r/GUI/Tab.cpp:3092 +#: src/slic3r/GUI/Tab.cpp:3213 msgid "Material" msgstr "Material" -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305 msgid "Layers" msgstr "Layers" -#: src/slic3r/GUI/Tab.cpp:3098 +#: src/slic3r/GUI/Tab.cpp:3219 msgid "Exposure" msgstr "Exposure" -#: src/slic3r/GUI/Tab.cpp:3183 +#: src/slic3r/GUI/Tab.cpp:3313 msgid "Support head" msgstr "Support head" -#: src/slic3r/GUI/Tab.cpp:3188 +#: src/slic3r/GUI/Tab.cpp:3318 msgid "Support pillar" msgstr "Support pillar" -#: src/slic3r/GUI/Tab.cpp:3196 +#: src/slic3r/GUI/Tab.cpp:3328 msgid "Connection of the support sticks and junctions" msgstr "Connection of the support sticks and junctions" -#: src/slic3r/GUI/Tab.cpp:3200 +#: src/slic3r/GUI/Tab.cpp:3333 msgid "Automatic generation" msgstr "Automatic generation" -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 +#: src/slic3r/GUI/Tab.cpp:3395 +msgid "Head penetration should not be greater than the head width." +msgstr "Head penetration should not be greater than the head width." + +#: src/slic3r/GUI/Tab.cpp:3396 +msgid "Invalid Head penetration" +msgstr "Invalid Head penetration" + +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "Pinhead diameter should be smaller than the pillar diameter." + +#: src/slic3r/GUI/Tab.cpp:3409 +msgid "Invalid pinhead diameter" +msgstr "Invalid pinhead diameter" + +#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395 msgid "Print Settings" msgstr "Print Settings" -#: src/slic3r/GUI/Tab.hpp:311 +#: src/slic3r/GUI/Tab.hpp:325 msgid "Filament Settings" msgstr "Filament Settings" -#: src/slic3r/GUI/Tab.hpp:344 +#: src/slic3r/GUI/Tab.hpp:358 msgid "Printer Settings" msgstr "Printer Settings" -#: src/slic3r/GUI/Tab.hpp:367 +#: src/slic3r/GUI/Tab.hpp:381 msgid "Material Settings" msgstr "Material Settings" -#: src/slic3r/GUI/Tab.hpp:393 +#: src/slic3r/GUI/Tab.hpp:407 msgid "Save preset" msgstr "Save preset" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:29 msgid "Update available" msgstr "Update available" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:29 msgid "New version of Slic3r PE is available" msgstr "New version of Slic3r PE is available" -#: src/slic3r/GUI/UpdateDialogs.cpp:35 +#: src/slic3r/GUI/UpdateDialogs.cpp:36 msgid "To download, follow the link below." msgstr "To download, follow the link below." -#: src/slic3r/GUI/UpdateDialogs.cpp:42 +#: src/slic3r/GUI/UpdateDialogs.cpp:44 msgid "Current version:" msgstr "Current version:" -#: src/slic3r/GUI/UpdateDialogs.cpp:44 +#: src/slic3r/GUI/UpdateDialogs.cpp:46 msgid "New version:" msgstr "New version:" -#: src/slic3r/GUI/UpdateDialogs.cpp:52 +#: src/slic3r/GUI/UpdateDialogs.cpp:54 msgid "Don't notify about new releases any more" msgstr "Don't notify about new releases any more" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 +#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164 msgid "Configuration update" msgstr "Configuration update" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 +#: src/slic3r/GUI/UpdateDialogs.cpp:72 msgid "Configuration update is available" msgstr "Configuration update is available" -#: src/slic3r/GUI/UpdateDialogs.cpp:73 +#: src/slic3r/GUI/UpdateDialogs.cpp:75 msgid "" "Would you like to install it?\n" "\n" @@ -3533,15 +3939,15 @@ msgstr "" "\n" "Updated configuration bundles:" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 +#: src/slic3r/GUI/UpdateDialogs.cpp:111 msgid "Slic3r incompatibility" msgstr "Slic3r incompatibility" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 +#: src/slic3r/GUI/UpdateDialogs.cpp:111 msgid "Slic3r configuration is incompatible" msgstr "Slic3r configuration is incompatible" -#: src/slic3r/GUI/UpdateDialogs.cpp:112 +#: src/slic3r/GUI/UpdateDialogs.cpp:114 msgid "" "This version of Slic3r PE is not compatible with currently installed " "configuration bundles.\n" @@ -3561,24 +3967,24 @@ msgstr "" "run the initial configuration. Doing so will create a backup snapshot of the " "existing configuration before installing files compatible with this Slic3r.\n" -#: src/slic3r/GUI/UpdateDialogs.cpp:121 +#: src/slic3r/GUI/UpdateDialogs.cpp:123 #, c-format msgid "This Slic3r PE version: %s" msgstr "This Slic3r PE version: %s" -#: src/slic3r/GUI/UpdateDialogs.cpp:126 +#: src/slic3r/GUI/UpdateDialogs.cpp:128 msgid "Incompatible bundles:" msgstr "Incompatible bundles:" -#: src/slic3r/GUI/UpdateDialogs.cpp:142 +#: src/slic3r/GUI/UpdateDialogs.cpp:144 msgid "Exit Slic3r" msgstr "Exit Slic3r" -#: src/slic3r/GUI/UpdateDialogs.cpp:145 +#: src/slic3r/GUI/UpdateDialogs.cpp:147 msgid "Re-configure" msgstr "Re-configure" -#: src/slic3r/GUI/UpdateDialogs.cpp:166 +#: src/slic3r/GUI/UpdateDialogs.cpp:168 #, c-format msgid "" "Slic3r PE now uses an updated configuration structure.\n" @@ -3605,15 +4011,15 @@ msgstr "" "Please proceed with the %s that follows to set up the new presets and to " "choose whether to enable automatic preset updates." -#: src/slic3r/GUI/UpdateDialogs.cpp:182 +#: src/slic3r/GUI/UpdateDialogs.cpp:184 msgid "For more information please visit our wiki page:" msgstr "For more information please visit our wiki page:" -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 msgid "Ramming customization" msgstr "Ramming customization" -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" "extruder MM printer. Its purpose is to properly shape the end of the " @@ -3635,27 +4041,27 @@ msgstr "" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 msgid "Total ramming time" msgstr "Total ramming time" -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 msgid "Total rammed volume" msgstr "Total rammed volume" -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 msgid "Ramming line width" msgstr "Ramming line width" -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 msgid "Ramming line spacing" msgstr "Ramming line spacing" -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 msgid "Wipe tower - Purging volume adjustment" msgstr "Wipe tower - Purging volume adjustment" -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 msgid "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." @@ -3663,23 +4069,23 @@ msgstr "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 msgid "Extruder changed to" msgstr "Extruder changed to" -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 msgid "unloaded" msgstr "unloaded" -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 msgid "loaded" msgstr "loaded" -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 msgid "Tool #" msgstr "Tool #" -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." @@ -3687,15 +4093,15 @@ msgstr "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 msgid "Volume to purge (mm³) when the filament is being" msgstr "Volume to purge (mm³) when the filament is being" -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 msgid "From" msgstr "From" -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 msgid "" "Switching to simple settings will discard changes done in the advanced " "mode!\n" @@ -3707,75 +4113,105 @@ msgstr "" "\n" "Do you want to proceed?" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show simplified settings" msgstr "Show simplified settings" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show advanced settings" msgstr "Show advanced settings" -#: src/slic3r/Utils/OctoPrint.cpp:65 +#: src/slic3r/GUI/wxExtensions.cpp:2398 +#, c-format +msgid "Switch to the %s mode" +msgstr "Switch to the %s mode" + +#: src/slic3r/GUI/wxExtensions.cpp:2399 +#, c-format +msgid "Current mode is %s" +msgstr "Current mode is %s" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "Connection to Duet works correctly." + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "Could not connect to Duet" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "Unknown error occured" + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "Wrong password" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "Could not get resources to create a new connection" + +#: src/slic3r/Utils/OctoPrint.cpp:69 #, c-format msgid "Mismatched type of print host: %s" msgstr "Mismatched type of print host: %s" -#: src/slic3r/Utils/OctoPrint.cpp:80 +#: src/slic3r/Utils/OctoPrint.cpp:84 msgid "Connection to OctoPrint works correctly." msgstr "Connection to OctoPrint works correctly." -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Could not connect to OctoPrint" msgstr "Could not connect to OctoPrint" -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Note: OctoPrint version at least 1.1.0 is required." -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:195 msgid "Connection to Prusa SLA works correctly." msgstr "Connection to Prusa SLA works correctly." -#: src/slic3r/Utils/OctoPrint.cpp:186 +#: src/slic3r/Utils/OctoPrint.cpp:200 msgid "Could not connect to Prusa SLA" msgstr "Could not connect to Prusa SLA" -#: src/slic3r/Utils/PresetUpdater.cpp:571 +#: src/slic3r/Utils/PresetUpdater.cpp:583 #, c-format msgid "requires min. %s and max. %s" msgstr "requires min. %s and max. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:576 +#: src/slic3r/Utils/PresetUpdater.cpp:588 #, c-format msgid "requires min. %s" msgstr "requires min. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:578 +#: src/slic3r/Utils/PresetUpdater.cpp:590 #, c-format msgid "requires max. %s" msgstr "requires max. %s" #: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "Exporting the source model" +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" +msgstr "Exporting source model" #: src/slic3r/Utils/FixModelByWin10.cpp:235 msgid "Failed loading the input model." msgstr "Failed loading the input model." #: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "Repairing the model by the Netfabb service" +msgid "Repairing model by the Netfabb service" +msgstr "Repairing model by the Netfabb service" #: src/slic3r/Utils/FixModelByWin10.cpp:248 msgid "Mesh repair failed." msgstr "Mesh repair failed." #: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "Loading the repaired model" +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" +msgstr "Loading repaired model" #: src/slic3r/Utils/FixModelByWin10.cpp:263 #: src/slic3r/Utils/FixModelByWin10.cpp:270 @@ -3783,110 +4219,294 @@ msgstr "Loading the repaired model" msgid "Saving mesh into the 3MF container failed." msgstr "Saving mesh into the 3MF container failed." -#: src/slic3r/Utils/FixModelByWin10.cpp:334 +#: src/slic3r/Utils/FixModelByWin10.cpp:340 msgid "Model fixing" msgstr "Model fixing" -#: src/slic3r/Utils/FixModelByWin10.cpp:335 +#: src/slic3r/Utils/FixModelByWin10.cpp:341 msgid "Exporting model..." msgstr "Exporting model..." -#: src/slic3r/Utils/FixModelByWin10.cpp:357 +#: src/slic3r/Utils/FixModelByWin10.cpp:368 msgid "Export of a temporary 3mf file failed" msgstr "Export of a temporary 3mf file failed" -#: src/slic3r/Utils/FixModelByWin10.cpp:372 +#: src/slic3r/Utils/FixModelByWin10.cpp:383 msgid "Import of the repaired 3mf file failed" msgstr "Import of the repaired 3mf file failed" -#: src/slic3r/Utils/FixModelByWin10.cpp:375 +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "Repaired 3MF file does not contain any object" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "Repaired 3MF file contains more than one object" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "Repaired 3MF file does not contain any volume" + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "Repaired 3MF file contains more than one volume" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 msgid "Model repair finished" msgstr "Model repair finished" -#: src/slic3r/Utils/FixModelByWin10.cpp:379 +#: src/slic3r/Utils/FixModelByWin10.cpp:406 msgid "Model repair canceled" msgstr "Model repair canceled" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 msgid "Model repaired successfully" msgstr "Model repaired successfully" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model Repair by the Netfabb service" msgstr "Model Repair by the Netfabb service" -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model repair failed: \n" msgstr "Model repair failed: \n" -#: src/libslic3r/Print.cpp:1175 +#: src/libslic3r/Zipper.cpp:35 +msgid "undefined error" +msgstr "undefined error" + +#: src/libslic3r/Zipper.cpp:37 +msgid "too many files" +msgstr "too many files" + +#: src/libslic3r/Zipper.cpp:39 +msgid "file too large" +msgstr "file too large" + +#: src/libslic3r/Zipper.cpp:41 +msgid "unsupported method" +msgstr "unsupported method" + +#: src/libslic3r/Zipper.cpp:43 +msgid "unsupported encryption" +msgstr "unsupported encryption" + +#: src/libslic3r/Zipper.cpp:45 +msgid "unsupported feature" +msgstr "unsupported feature" + +#: src/libslic3r/Zipper.cpp:47 +msgid "failed finding central directory" +msgstr "failed finding central directory" + +#: src/libslic3r/Zipper.cpp:49 +msgid "not a ZIP archive" +msgstr "not a ZIP archive" + +#: src/libslic3r/Zipper.cpp:51 +msgid "invalid header or archive is corrupted" +msgstr "invalid header or archive is corrupted" + +#: src/libslic3r/Zipper.cpp:53 +msgid "unsupported multidisk archive" +msgstr "unsupported multidisk archive" + +#: src/libslic3r/Zipper.cpp:55 +msgid "decompression failed or archive is corrupted" +msgstr "decompression failed or archive is corrupted" + +#: src/libslic3r/Zipper.cpp:57 +msgid "compression failed" +msgstr "compression failed" + +#: src/libslic3r/Zipper.cpp:59 +msgid "unexpected decompressed size" +msgstr "unexpected decompressed size" + +#: src/libslic3r/Zipper.cpp:61 +msgid "CRC-32 check failed" +msgstr "CRC-32 check failed" + +#: src/libslic3r/Zipper.cpp:63 +msgid "unsupported central directory size" +msgstr "unsupported central directory size" + +#: src/libslic3r/Zipper.cpp:65 +msgid "allocation failed" +msgstr "allocation failed" + +#: src/libslic3r/Zipper.cpp:67 +msgid "file open failed" +msgstr "file open failed" + +#: src/libslic3r/Zipper.cpp:69 +msgid "file create failed" +msgstr "file create failed" + +#: src/libslic3r/Zipper.cpp:71 +msgid "file write failed" +msgstr "file write failed" + +#: src/libslic3r/Zipper.cpp:73 +msgid "file read failed" +msgstr "file read failed" + +#: src/libslic3r/Zipper.cpp:75 +msgid "file close failed" +msgstr "file close failed" + +#: src/libslic3r/Zipper.cpp:77 +msgid "file seek failed" +msgstr "file seek failed" + +#: src/libslic3r/Zipper.cpp:79 +msgid "file stat failed" +msgstr "file stat failed" + +#: src/libslic3r/Zipper.cpp:81 +msgid "invalid parameter" +msgstr "invalid parameter" + +#: src/libslic3r/Zipper.cpp:83 +msgid "invalid filename" +msgstr "invalid filename" + +#: src/libslic3r/Zipper.cpp:85 +msgid "buffer too small" +msgstr "buffer too small" + +#: src/libslic3r/Zipper.cpp:87 +msgid "internal error" +msgstr "internal error" + +#: src/libslic3r/Zipper.cpp:89 +msgid "file not found" +msgstr "file not found" + +#: src/libslic3r/Zipper.cpp:91 +msgid "archive is too large" +msgstr "archive is too large" + +#: src/libslic3r/Zipper.cpp:93 +msgid "validation failed" +msgstr "validation failed" + +#: src/libslic3r/Zipper.cpp:95 +msgid "write calledback failed" +msgstr "write calledback failed" + +#: src/libslic3r/Zipper.cpp:105 +msgid "Error with zip archive" +msgstr "Error with zip archive" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2153 +msgid "Starting" +msgstr "Starting" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2154 +msgid "Filtering" +msgstr "Filtering" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2155 +msgid "Generate pinheads" +msgstr "Generate pinheads" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2156 +msgid "Classification" +msgstr "Classification" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2157 +msgid "Routing to ground" +msgstr "Routing to ground" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2158 +msgid "Routing supports to model surface" +msgstr "Routing supports to model surface" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2159 +msgid "Cascading pillars" +msgstr "Cascading pillars" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2160 +msgid "Processing small holes" +msgstr "Processing small holes" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2161 +msgid "Done" +msgstr "Done" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2162 +msgid "Abort" +msgstr "Abort" + +#: src/libslic3r/Print.cpp:1136 msgid "All objects are outside of the print volume." msgstr "All objects are outside of the print volume." -#: src/libslic3r/Print.cpp:1201 +#: src/libslic3r/Print.cpp:1165 msgid "Some objects are too close; your extruder will collide with them." msgstr "Some objects are too close; your extruder will collide with them." -#: src/libslic3r/Print.cpp:1216 +#: src/libslic3r/Print.cpp:1180 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" "Some objects are too tall and cannot be printed without extruder collisions." -#: src/libslic3r/Print.cpp:1226 +#: src/libslic3r/Print.cpp:1190 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "The Spiral Vase option can only be used when printing a single object." +#: src/libslic3r/Print.cpp:1192 +msgid "" +"The Spiral Vase option can only be used when printing single material " +"objects." +msgstr "" +"The Spiral Vase option can only be used when printing single material " +"objects." + +#: src/libslic3r/Print.cpp:1198 +msgid "" +"All extruders must have the same diameter for single extruder multimaterial " +"printer." +msgstr "" +"All extruders must have the same diameter for single extruder multimaterial " +"printer." + +#: src/libslic3r/Print.cpp:1203 +msgid "" +"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " +"and Repetier G-code flavors." +msgstr "" +"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " +"and Repetier G-code flavors." + +#: src/libslic3r/Print.cpp:1205 +msgid "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." +msgstr "" +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." + +#: src/libslic3r/Print.cpp:1226 +msgid "" +"The Wipe Tower is only supported for multiple objects if they have equal " +"layer heigths" +msgstr "" +"The Wipe Tower is only supported for multiple objects if they have equal " +"layer heigths" + #: src/libslic3r/Print.cpp:1228 msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" -"The Spiral Vase option can only be used when printing single material " -"objects." - -#: src/libslic3r/Print.cpp:1234 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." - -#: src/libslic3r/Print.cpp:1239 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." - -#: src/libslic3r/Print.cpp:1241 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." - -#: src/libslic3r/Print.cpp:1253 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" - -#: src/libslic3r/Print.cpp:1255 -msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" msgstr "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1230 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" @@ -3894,7 +4514,7 @@ msgstr "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" -#: src/libslic3r/Print.cpp:1259 +#: src/libslic3r/Print.cpp:1232 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." @@ -3902,7 +4522,7 @@ msgstr "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." -#: src/libslic3r/Print.cpp:1281 +#: src/libslic3r/Print.cpp:1261 msgid "" "The Wipe tower is only supported if all objects have the same layer height " "profile" @@ -3910,69 +4530,126 @@ msgstr "" "The Wipe tower is only supported if all objects have the same layer height " "profile" -#: src/libslic3r/Print.cpp:1290 +#: src/libslic3r/Print.cpp:1271 msgid "The supplied settings will cause an empty print." msgstr "The supplied settings will cause an empty print." -#: src/libslic3r/Print.cpp:1307 +#: src/libslic3r/Print.cpp:1288 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" "One or more object were assigned an extruder that the printer does not have." +#: src/libslic3r/Print.cpp:1297 +msgid "" +"Printing with multiple extruders of differing nozzle diameters. If support " +"is to be printed with the current extruder (support_material_extruder == 0 " +"or support_material_interface_extruder == 0), all nozzles have to be of the " +"same diameter." +msgstr "" +"Printing with multiple extruders of differing nozzle diameters. If support " +"is to be printed with the current extruder (support_material_extruder == 0 " +"or support_material_interface_extruder == 0), all nozzles have to be of the " +"same diameter." + +#: src/libslic3r/Print.cpp:1305 +msgid "" +"For the Wipe Tower to work with the soluble supports, the support layers " +"need to be synchronized with the object layers." +msgstr "" +"For the Wipe Tower to work with the soluble supports, the support layers " +"need to be synchronized with the object layers." + +#: src/libslic3r/Print.cpp:1309 +msgid "" +"The Wipe Tower currently supports the non-soluble supports only if they are " +"printed with the current extruder without triggering a tool change. (both " +"support_material_extruder and support_material_interface_extruder need to be " +"set to 0)." +msgstr "" +"The Wipe Tower currently supports the non-soluble supports only if they are " +"printed with the current extruder without triggering a tool change. (both " +"support_material_extruder and support_material_interface_extruder need to be " +"set to 0)." + #: src/libslic3r/Print.cpp:1316 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." - -#: src/libslic3r/Print.cpp:1324 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." - -#: src/libslic3r/Print.cpp:1328 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." - -#: src/libslic3r/Print.cpp:1335 msgid "first_layer_height" msgstr "first_layer_height" -#: src/libslic3r/Print.cpp:1350 +#: src/libslic3r/Print.cpp:1331 msgid "First layer height can't be greater than nozzle diameter" msgstr "First layer height can't be greater than nozzle diameter" -#: src/libslic3r/Print.cpp:1354 +#: src/libslic3r/Print.cpp:1335 msgid "Layer height can't be greater than nozzle diameter" msgstr "Layer height can't be greater than nozzle diameter" -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 +#: src/libslic3r/SLAPrint.cpp:55 +msgid "Slicing model" +msgstr "Slicing model" + +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801 +msgid "Generating support points" +msgstr "Generating support points" + +#: src/libslic3r/SLAPrint.cpp:57 +msgid "Generating support tree" +msgstr "Generating support tree" + +#: src/libslic3r/SLAPrint.cpp:58 +msgid "Generating pad" +msgstr "Generating pad" + +#: src/libslic3r/SLAPrint.cpp:59 +msgid "Slicing supports" +msgstr "Slicing supports" + +#: src/libslic3r/SLAPrint.cpp:71 +msgid "Merging slices and calculating statistics" +msgstr "Merging slices and calculating statistics" + +#: src/libslic3r/SLAPrint.cpp:72 +msgid "Rasterizing layers" +msgstr "Rasterizing layers" + +#: src/libslic3r/SLAPrint.cpp:605 +msgid "" +"Cannot proceed without support points! Add support points or disable support " +"generation." +msgstr "" +"Cannot proceed without support points! Add support points or disable support " +"generation." + +#: src/libslic3r/SLAPrint.cpp:617 +msgid "Elevation is too low for object." +msgstr "Elevation is too low for object." + +#: src/libslic3r/SLAPrint.cpp:699 +msgid "Slicing had to be stopped due to an internal error." +msgstr "Slicing had to be stopped due to an internal error." + +#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859 +#: src/libslic3r/SLAPrint.cpp:907 +msgid "Visualizing supports" +msgstr "Visualizing supports" + +#: src/libslic3r/SLAPrint.cpp:1449 +msgid "Slicing done" +msgstr "Slicing done" + +#: src/libslic3r/PrintBase.cpp:65 +msgid "Failed processing of the output_filename_format template." +msgstr "Failed processing of the output_filename_format template." + +#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 msgid "Printer technology" msgstr "Printer technology" -#: src/libslic3r/PrintConfig.cpp:41 +#: src/libslic3r/PrintConfig.cpp:50 msgid "Bed shape" msgstr "Bed shape" -#: src/libslic3r/PrintConfig.cpp:48 +#: src/libslic3r/PrintConfig.cpp:57 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." @@ -3980,11 +4657,11 @@ msgstr "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." -#: src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:64 msgid "Max print height" msgstr "Max print height" -#: src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:65 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." @@ -3992,11 +4669,49 @@ msgstr "" "Set this to the maximum height that can be reached by your extruder while " "printing." +#: src/libslic3r/PrintConfig.cpp:71 +msgid "Slice gap closing radius" +msgstr "Slice gap closing radius" + #: src/libslic3r/PrintConfig.cpp:73 +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." + +#: src/libslic3r/PrintConfig.cpp:81 +msgid "Hostname, IP or URL" +msgstr "Hostname, IP or URL" + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance." +msgstr "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance." + +#: src/libslic3r/PrintConfig.cpp:88 +msgid "API Key / Password" +msgstr "API Key / Password" + +#: src/libslic3r/PrintConfig.cpp:89 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." + +#: src/libslic3r/PrintConfig.cpp:111 msgid "Avoid crossing perimeters" msgstr "Avoid crossing perimeters" -#: src/libslic3r/PrintConfig.cpp:74 +#: src/libslic3r/PrintConfig.cpp:112 msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " @@ -4006,11 +4721,11 @@ msgstr "" "is mostly useful with Bowden extruders which suffer from oozing. This " "feature slows down both the print and the G-code generation." -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976 msgid "Other layers" msgstr "Other layers" -#: src/libslic3r/PrintConfig.cpp:83 +#: src/libslic3r/PrintConfig.cpp:120 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." @@ -4018,11 +4733,11 @@ msgstr "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." -#: src/libslic3r/PrintConfig.cpp:86 +#: src/libslic3r/PrintConfig.cpp:122 msgid "Bed temperature" msgstr "Bed temperature" -#: src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:129 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " @@ -4032,11 +4747,11 @@ msgstr "" "Note that you can use placeholder variables for all Slic3r settings as well " "as [layer_num] and [layer_z]." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:139 msgid "Between objects G-code" msgstr "Between objects G-code" -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:140 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -4052,24 +4767,19 @@ msgstr "" "variables for all Slic3r settings, so you can put a \"M109 " "S[first_layer_temperature]\" command wherever you want." -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Bottom" - -#: src/libslic3r/PrintConfig.cpp:116 +#: src/libslic3r/PrintConfig.cpp:150 msgid "Number of solid layers to generate on bottom surfaces." msgstr "Number of solid layers to generate on bottom surfaces." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:151 msgid "Bottom solid layers" msgstr "Bottom solid layers" -#: src/libslic3r/PrintConfig.cpp:123 +#: src/libslic3r/PrintConfig.cpp:156 msgid "Bridge" msgstr "Bridge" -#: src/libslic3r/PrintConfig.cpp:124 +#: src/libslic3r/PrintConfig.cpp:157 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." @@ -4077,18 +4787,18 @@ msgstr "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 +#: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302 +#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1144 src/libslic3r/PrintConfig.cpp:1333 msgid "mm/s²" msgstr "mm/s²" -#: src/libslic3r/PrintConfig.cpp:133 +#: src/libslic3r/PrintConfig.cpp:165 msgid "Bridging angle" msgstr "Bridging angle" -#: src/libslic3r/PrintConfig.cpp:135 +#: src/libslic3r/PrintConfig.cpp:167 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " @@ -4098,32 +4808,33 @@ msgstr "" "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732 +#: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961 +#: src/libslic3r/PrintConfig.cpp:2459 msgid "°" msgstr "°" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:176 msgid "Bridges fan speed" msgstr "Bridges fan speed" -#: src/libslic3r/PrintConfig.cpp:146 +#: src/libslic3r/PrintConfig.cpp:177 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "This fan speed is enforced during all bridges and overhangs." -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 +#: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216 +#: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258 +#: src/libslic3r/PrintConfig.cpp:2498 msgid "%" msgstr "%" -#: src/libslic3r/PrintConfig.cpp:155 +#: src/libslic3r/PrintConfig.cpp:185 msgid "Bridge flow ratio" msgstr "Bridge flow ratio" -#: src/libslic3r/PrintConfig.cpp:157 +#: src/libslic3r/PrintConfig.cpp:187 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -4135,32 +4846,32 @@ msgstr "" "settings are usually good and you should experiment with cooling (use a fan) " "before tweaking this." -#: src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:197 msgid "Bridges" msgstr "Bridges" -#: src/libslic3r/PrintConfig.cpp:170 +#: src/libslic3r/PrintConfig.cpp:199 msgid "Speed for printing bridges." msgstr "Speed for printing bridges." -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593 +#: src/libslic3r/PrintConfig.cpp:601 src/libslic3r/PrintConfig.cpp:628 +#: src/libslic3r/PrintConfig.cpp:647 src/libslic3r/PrintConfig.cpp:873 +#: src/libslic3r/PrintConfig.cpp:1000 src/libslic3r/PrintConfig.cpp:1078 +#: src/libslic3r/PrintConfig.cpp:1098 src/libslic3r/PrintConfig.cpp:1111 +#: src/libslic3r/PrintConfig.cpp:1122 src/libslic3r/PrintConfig.cpp:1175 +#: src/libslic3r/PrintConfig.cpp:1234 src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1536 src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1940 src/libslic3r/PrintConfig.cpp:2051 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:207 msgid "Brim width" msgstr "Brim width" -#: src/libslic3r/PrintConfig.cpp:179 +#: src/libslic3r/PrintConfig.cpp:208 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." @@ -4168,11 +4879,11 @@ msgstr "" "Horizontal width of the brim that will be printed around each object on the " "first layer." -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:215 msgid "Clip multi-part objects" msgstr "Clip multi-part objects" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:216 msgid "" "When printing multi-material objects, this settings will make slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " @@ -4182,19 +4893,19 @@ msgstr "" "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -#: src/libslic3r/PrintConfig.cpp:196 +#: src/libslic3r/PrintConfig.cpp:223 msgid "Colorprint height" msgstr "Colorprint height" -#: src/libslic3r/PrintConfig.cpp:197 +#: src/libslic3r/PrintConfig.cpp:224 msgid "Heights at which a filament change is to occur. " msgstr "Heights at which a filament change is to occur. " -#: src/libslic3r/PrintConfig.cpp:207 +#: src/libslic3r/PrintConfig.cpp:234 msgid "Compatible printers condition" msgstr "Compatible printers condition" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:235 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " @@ -4204,11 +4915,11 @@ msgstr "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." -#: src/libslic3r/PrintConfig.cpp:220 +#: src/libslic3r/PrintConfig.cpp:249 msgid "Compatible print profiles condition" msgstr "Compatible print profiles condition" -#: src/libslic3r/PrintConfig.cpp:221 +#: src/libslic3r/PrintConfig.cpp:250 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " @@ -4218,11 +4929,11 @@ msgstr "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:267 msgid "Complete individual objects" msgstr "Complete individual objects" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:268 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -4234,11 +4945,11 @@ msgstr "" "This feature is useful to avoid the risk of ruined prints. Slic3r should " "warn and prevent you from extruder collisions, but beware." -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:276 msgid "Enable auto cooling" msgstr "Enable auto cooling" -#: src/libslic3r/PrintConfig.cpp:246 +#: src/libslic3r/PrintConfig.cpp:277 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." @@ -4246,24 +4957,24 @@ msgstr "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." -#: src/libslic3r/PrintConfig.cpp:252 +#: src/libslic3r/PrintConfig.cpp:282 msgid "Cooling tube position" msgstr "Cooling tube position" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:283 msgid "Distance of the center-point of the cooling tube from the extruder tip " msgstr "" "Distance of the center-point of the cooling tube from the extruder tip " -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:290 msgid "Cooling tube length" msgstr "Cooling tube length" -#: src/libslic3r/PrintConfig.cpp:262 +#: src/libslic3r/PrintConfig.cpp:291 msgid "Length of the cooling tube to limit space for cooling moves inside it " msgstr "Length of the cooling tube to limit space for cooling moves inside it " -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:299 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " @@ -4273,11 +4984,11 @@ msgstr "" "specific acceleration values are used (perimeter/infill). Set zero to " "prevent resetting acceleration at all." -#: src/libslic3r/PrintConfig.cpp:281 +#: src/libslic3r/PrintConfig.cpp:308 msgid "Default filament profile" msgstr "Default filament profile" -#: src/libslic3r/PrintConfig.cpp:282 +#: src/libslic3r/PrintConfig.cpp:309 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " @@ -4287,12 +4998,12 @@ msgstr "" "selection of the current printer profile, this filament profile will be " "activated." -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:315 msgid "Default print profile" msgstr "Default print profile" -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337 +#: src/libslic3r/PrintConfig.cpp:2348 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -4302,11 +5013,11 @@ msgstr "" "selection of the current printer profile, this print profile will be " "activated." -#: src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:322 msgid "Disable fan for the first" msgstr "Disable fan for the first" -#: src/libslic3r/PrintConfig.cpp:294 +#: src/libslic3r/PrintConfig.cpp:323 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." @@ -4314,18 +5025,18 @@ msgstr "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 +#: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945 +#: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1888 msgid "layers" msgstr "layers" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:332 msgid "Don't support bridges" msgstr "Don't support bridges" -#: src/libslic3r/PrintConfig.cpp:306 +#: src/libslic3r/PrintConfig.cpp:334 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." @@ -4333,19 +5044,19 @@ msgstr "" "Experimental option for preventing support material from being generated " "under bridged areas." -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:340 msgid "Distance between copies" msgstr "Distance between copies" -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:341 msgid "Distance used for the auto-arrange feature of the plater." msgstr "Distance used for the auto-arrange feature of the plater." -#: src/libslic3r/PrintConfig.cpp:322 +#: src/libslic3r/PrintConfig.cpp:348 msgid "Elephant foot compensation" msgstr "Elephant foot compensation" -#: src/libslic3r/PrintConfig.cpp:324 +#: src/libslic3r/PrintConfig.cpp:350 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." @@ -4353,7 +5064,7 @@ msgstr "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." -#: src/libslic3r/PrintConfig.cpp:334 +#: src/libslic3r/PrintConfig.cpp:359 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." @@ -4361,7 +5072,7 @@ msgstr "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:369 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode. Note that you can use placeholder variables for all " @@ -4373,11 +5084,11 @@ msgstr "" "Slic3r settings. If you have multiple extruders, the gcode is processed in " "extruder order." -#: src/libslic3r/PrintConfig.cpp:356 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Ensure vertical shell thickness" msgstr "Ensure vertical shell thickness" -#: src/libslic3r/PrintConfig.cpp:358 +#: src/libslic3r/PrintConfig.cpp:381 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." @@ -4385,44 +5096,56 @@ msgstr "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Top/bottom fill pattern" +#: src/libslic3r/PrintConfig.cpp:387 +msgid "Top fill pattern" +msgstr "Top fill pattern" -#: src/libslic3r/PrintConfig.cpp:367 +#: src/libslic3r/PrintConfig.cpp:389 msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." +"Fill pattern for top infill. This only affects the top visible layer, and " +"not its adjacent solid shells." msgstr "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." +"Fill pattern for top infill. This only affects the top visible layer, and " +"not its adjacent solid shells." -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 +#: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795 +#: src/libslic3r/PrintConfig.cpp:1921 msgid "Rectilinear" msgstr "Rectilinear" -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801 msgid "Concentric" msgstr "Concentric" -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805 msgid "Hilbert Curve" msgstr "Hilbert Curve" -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 msgid "Archimedean Chords" msgstr "Archimedean Chords" -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Octagram Spiral" msgstr "Octagram Spiral" -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 +#: src/libslic3r/PrintConfig.cpp:408 +msgid "Bottom fill pattern" +msgstr "Bottom fill pattern" + +#: src/libslic3r/PrintConfig.cpp:409 +msgid "" +"Fill pattern for bottom infill. This only affects the bottom external " +"visible layer, and not its adjacent solid shells." +msgstr "" +"Fill pattern for bottom infill. This only affects the bottom external " +"visible layer, and not its adjacent solid shells." + +#: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424 msgid "External perimeters" msgstr "External perimeters" -#: src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:416 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -4434,14 +5157,14 @@ msgstr "" "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " "(for example 200%), it will be computed over layer height." -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834 +#: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:2022 msgid "mm or % (leave 0 for default)" msgstr "mm or % (leave 0 for default)" -#: src/libslic3r/PrintConfig.cpp:399 +#: src/libslic3r/PrintConfig.cpp:426 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " @@ -4451,17 +5174,17 @@ msgstr "" "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 +#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701 +#: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034 msgid "mm/s or %" msgstr "mm/s or %" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:436 msgid "External perimeters first" msgstr "External perimeters first" -#: src/libslic3r/PrintConfig.cpp:411 +#: src/libslic3r/PrintConfig.cpp:438 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." @@ -4469,11 +5192,11 @@ msgstr "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." -#: src/libslic3r/PrintConfig.cpp:418 +#: src/libslic3r/PrintConfig.cpp:444 msgid "Extra perimeters if needed" msgstr "Extra perimeters if needed" -#: src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:446 #, no-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " @@ -4484,7 +5207,7 @@ msgstr "" "keeps adding perimeters, until more than 70% of the loop immediately above " "is supported." -#: src/libslic3r/PrintConfig.cpp:431 +#: src/libslic3r/PrintConfig.cpp:456 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " @@ -4494,7 +5217,7 @@ msgstr "" "This value overrides perimeter and infill extruders, but not the support " "extruders." -#: src/libslic3r/PrintConfig.cpp:444 +#: src/libslic3r/PrintConfig.cpp:468 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -4506,11 +5229,11 @@ msgstr "" "cylinder around your extruder, and it represents the maximum depth the " "extruder can peek before colliding with other printed objects." -#: src/libslic3r/PrintConfig.cpp:455 +#: src/libslic3r/PrintConfig.cpp:478 msgid "Radius" msgstr "Radius" -#: src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:479 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " @@ -4520,19 +5243,19 @@ msgstr "" "not centered, choose the largest value for safety. This setting is used to " "check for collisions and to display the graphical preview in the plater." -#: src/libslic3r/PrintConfig.cpp:467 +#: src/libslic3r/PrintConfig.cpp:489 msgid "Extruder Color" msgstr "Extruder Color" -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 +#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550 msgid "This is only used in the Slic3r interface as a visual help." msgstr "This is only used in the Slic3r interface as a visual help." -#: src/libslic3r/PrintConfig.cpp:475 +#: src/libslic3r/PrintConfig.cpp:496 msgid "Extruder offset" msgstr "Extruder offset" -#: src/libslic3r/PrintConfig.cpp:476 +#: src/libslic3r/PrintConfig.cpp:497 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -4544,11 +5267,11 @@ msgstr "" "of each extruder with respect to the first one. It expects positive " "coordinates (they will be subtracted from the XY coordinate)." -#: src/libslic3r/PrintConfig.cpp:486 +#: src/libslic3r/PrintConfig.cpp:506 msgid "Extrusion axis" msgstr "Extrusion axis" -#: src/libslic3r/PrintConfig.cpp:487 +#: src/libslic3r/PrintConfig.cpp:507 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." @@ -4556,11 +5279,11 @@ msgstr "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." -#: src/libslic3r/PrintConfig.cpp:493 +#: src/libslic3r/PrintConfig.cpp:512 msgid "Extrusion multiplier" msgstr "Extrusion multiplier" -#: src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:513 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -4572,11 +5295,11 @@ msgstr "" "Usual values are between 0.9 and 1.1. If you think you need to change this " "more, check filament diameter and your firmware E steps." -#: src/libslic3r/PrintConfig.cpp:503 +#: src/libslic3r/PrintConfig.cpp:521 msgid "Default extrusion width" msgstr "Default extrusion width" -#: src/libslic3r/PrintConfig.cpp:505 +#: src/libslic3r/PrintConfig.cpp:523 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -4590,15 +5313,15 @@ msgstr "" "expressed as percentage (for example: 230%), it will be computed over layer " "height." -#: src/libslic3r/PrintConfig.cpp:509 +#: src/libslic3r/PrintConfig.cpp:527 msgid "mm or % (leave 0 for auto)" msgstr "mm or % (leave 0 for auto)" -#: src/libslic3r/PrintConfig.cpp:515 +#: src/libslic3r/PrintConfig.cpp:532 msgid "Keep fan always on" msgstr "Keep fan always on" -#: src/libslic3r/PrintConfig.cpp:516 +#: src/libslic3r/PrintConfig.cpp:533 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." @@ -4606,11 +5329,11 @@ msgstr "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:538 msgid "Enable fan if layer print time is below" msgstr "Enable fan if layer print time is below" -#: src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:539 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " @@ -4620,27 +5343,27 @@ msgstr "" "enabled and its speed will be calculated by interpolating the minimum and " "maximum speeds." -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637 msgid "approximate seconds" msgstr "approximate seconds" -#: src/libslic3r/PrintConfig.cpp:534 +#: src/libslic3r/PrintConfig.cpp:549 msgid "Color" msgstr "Color" -#: src/libslic3r/PrintConfig.cpp:541 +#: src/libslic3r/PrintConfig.cpp:555 msgid "Filament notes" msgstr "Filament notes" -#: src/libslic3r/PrintConfig.cpp:542 +#: src/libslic3r/PrintConfig.cpp:556 msgid "You can put your notes regarding the filament here." msgstr "You can put your notes regarding the filament here." -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 +#: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181 msgid "Max volumetric speed" msgstr "Max volumetric speed" -#: src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:565 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " @@ -4650,31 +5373,31 @@ msgstr "" "volumetric speed of a print to the minimum of print and filament volumetric " "speed. Set to zero for no limit." -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 +#: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184 msgid "mm³/s" msgstr "mm³/s" -#: src/libslic3r/PrintConfig.cpp:562 +#: src/libslic3r/PrintConfig.cpp:574 msgid "Loading speed" msgstr "Loading speed" -#: src/libslic3r/PrintConfig.cpp:563 +#: src/libslic3r/PrintConfig.cpp:575 msgid "Speed used for loading the filament on the wipe tower. " msgstr "Speed used for loading the filament on the wipe tower. " -#: src/libslic3r/PrintConfig.cpp:571 +#: src/libslic3r/PrintConfig.cpp:582 msgid "Loading speed at the start" msgstr "Loading speed at the start" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:583 msgid "Speed used at the very beginning of loading phase. " msgstr "Speed used at the very beginning of loading phase. " -#: src/libslic3r/PrintConfig.cpp:580 +#: src/libslic3r/PrintConfig.cpp:590 msgid "Unloading speed" msgstr "Unloading speed" -#: src/libslic3r/PrintConfig.cpp:581 +#: src/libslic3r/PrintConfig.cpp:591 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " @@ -4682,21 +5405,21 @@ msgstr "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:599 msgid "Unloading speed at the start" msgstr "Unloading speed at the start" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:600 msgid "" "Speed used for unloading the tip of the filament immediately after ramming. " msgstr "" "Speed used for unloading the tip of the filament immediately after ramming. " -#: src/libslic3r/PrintConfig.cpp:599 +#: src/libslic3r/PrintConfig.cpp:607 msgid "Delay after unloading" msgstr "Delay after unloading" -#: src/libslic3r/PrintConfig.cpp:600 +#: src/libslic3r/PrintConfig.cpp:608 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " @@ -4706,11 +5429,11 @@ msgstr "" "toolchanges with flexible materials that may need more time to shrink to " "original dimensions. " -#: src/libslic3r/PrintConfig.cpp:610 +#: src/libslic3r/PrintConfig.cpp:617 msgid "Number of cooling moves" msgstr "Number of cooling moves" -#: src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:618 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " @@ -4718,19 +5441,19 @@ msgstr "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " -#: src/libslic3r/PrintConfig.cpp:620 +#: src/libslic3r/PrintConfig.cpp:626 msgid "Speed of the first cooling move" msgstr "Speed of the first cooling move" -#: src/libslic3r/PrintConfig.cpp:621 +#: src/libslic3r/PrintConfig.cpp:627 msgid "Cooling moves are gradually accelerating beginning at this speed. " msgstr "Cooling moves are gradually accelerating beginning at this speed. " -#: src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Minimal purge on wipe tower" msgstr "Minimal purge on wipe tower" -#: src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:635 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " @@ -4744,23 +5467,23 @@ msgstr "" "object, Slic3r will always prime this amount of material into the wipe tower " "to produce successive infill or sacrificial object extrusions reliably." -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:639 msgid "mm³" msgstr "mm³" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:645 msgid "Speed of the last cooling move" msgstr "Speed of the last cooling move" -#: src/libslic3r/PrintConfig.cpp:642 +#: src/libslic3r/PrintConfig.cpp:646 msgid "Cooling moves are gradually accelerating towards this speed. " msgstr "Cooling moves are gradually accelerating towards this speed. " -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:653 msgid "Filament load time" msgstr "Filament load time" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:654 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " "filament during a tool change (when executing the T code). This time is " @@ -4770,11 +5493,11 @@ msgstr "" "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:661 msgid "Ramming parameters" msgstr "Ramming parameters" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:662 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters " @@ -4782,11 +5505,11 @@ msgstr "" "This string is edited by RammingDialog and contains ramming specific " "parameters " -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Filament unload time" msgstr "Filament unload time" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:669 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " "filament during a tool change (when executing the T code). This time is " @@ -4806,11 +5529,11 @@ msgstr "" "caliper and do multiple measurements along the filament, then compute the " "average." -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:684 msgid "Density" msgstr "Density" -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:685 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -4822,27 +5545,27 @@ msgstr "" "the length to volume. Better is to calculate the volume directly through " "displacement." -#: src/libslic3r/PrintConfig.cpp:689 +#: src/libslic3r/PrintConfig.cpp:688 msgid "g/cm³" msgstr "g/cm³" -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:693 msgid "Filament type" msgstr "Filament type" -#: src/libslic3r/PrintConfig.cpp:696 +#: src/libslic3r/PrintConfig.cpp:694 msgid "The filament material type for use in custom G-codes." msgstr "The filament material type for use in custom G-codes." -#: src/libslic3r/PrintConfig.cpp:712 +#: src/libslic3r/PrintConfig.cpp:710 msgid "Soluble material" msgstr "Soluble material" -#: src/libslic3r/PrintConfig.cpp:713 +#: src/libslic3r/PrintConfig.cpp:711 msgid "Soluble material is most likely used for a soluble support." msgstr "Soluble material is most likely used for a soluble support." -#: src/libslic3r/PrintConfig.cpp:719 +#: src/libslic3r/PrintConfig.cpp:717 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." @@ -4850,15 +5573,15 @@ msgstr "" "Enter your filament cost per kg here. This is only for statistical " "information." -#: src/libslic3r/PrintConfig.cpp:720 +#: src/libslic3r/PrintConfig.cpp:718 msgid "money/kg" msgstr "money/kg" -#: src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:727 msgid "Fill angle" msgstr "Fill angle" -#: src/libslic3r/PrintConfig.cpp:731 +#: src/libslic3r/PrintConfig.cpp:729 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " @@ -4868,60 +5591,60 @@ msgstr "" "this. Bridges will be infilled using the best direction Slic3r can detect, " "so this setting does not affect them." -#: src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:741 msgid "Fill density" msgstr "Fill density" -#: src/libslic3r/PrintConfig.cpp:746 +#: src/libslic3r/PrintConfig.cpp:743 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "Density of internal infill, expressed in the range 0% - 100%." -#: src/libslic3r/PrintConfig.cpp:782 +#: src/libslic3r/PrintConfig.cpp:778 msgid "Fill pattern" msgstr "Fill pattern" -#: src/libslic3r/PrintConfig.cpp:784 +#: src/libslic3r/PrintConfig.cpp:780 msgid "Fill pattern for general low-density infill." msgstr "Fill pattern for general low-density infill." -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:796 msgid "Grid" msgstr "Grid" -#: src/libslic3r/PrintConfig.cpp:802 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Triangles" msgstr "Triangles" -#: src/libslic3r/PrintConfig.cpp:803 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Stars" msgstr "Stars" -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:799 msgid "Cubic" msgstr "Cubic" -#: src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:800 msgid "Line" msgstr "Line" -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 +#: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923 msgid "Honeycomb" msgstr "Honeycomb" -#: src/libslic3r/PrintConfig.cpp:808 +#: src/libslic3r/PrintConfig.cpp:803 msgid "3D Honeycomb" msgstr "3D Honeycomb" -#: src/libslic3r/PrintConfig.cpp:809 +#: src/libslic3r/PrintConfig.cpp:804 msgid "Gyroid" msgstr "Gyroid" -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 +#: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820 +#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861 msgid "First layer" msgstr "First layer" -#: src/libslic3r/PrintConfig.cpp:817 +#: src/libslic3r/PrintConfig.cpp:812 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." @@ -4929,7 +5652,7 @@ msgstr "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." -#: src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:821 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." @@ -4937,7 +5660,7 @@ msgstr "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." -#: src/libslic3r/PrintConfig.cpp:837 +#: src/libslic3r/PrintConfig.cpp:830 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -4949,11 +5672,11 @@ msgstr "" "expressed as percentage (for example 120%) it will be computed over first " "layer height. If set to zero, it will use the default extrusion width." -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:840 msgid "First layer height" msgstr "First layer height" -#: src/libslic3r/PrintConfig.cpp:850 +#: src/libslic3r/PrintConfig.cpp:842 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -4965,16 +5688,16 @@ msgstr "" "plates. This can be expressed as an absolute value or as a percentage (for " "example: 150%) over the default layer height." -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 +#: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "mm or %" msgstr "mm or %" -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:851 msgid "First layer speed" msgstr "First layer speed" -#: src/libslic3r/PrintConfig.cpp:861 +#: src/libslic3r/PrintConfig.cpp:852 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " @@ -4984,7 +5707,7 @@ msgstr "" "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." -#: src/libslic3r/PrintConfig.cpp:872 +#: src/libslic3r/PrintConfig.cpp:862 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " @@ -4994,7 +5717,7 @@ msgstr "" "manually during print, set this to zero to disable temperature control " "commands in the output file." -#: src/libslic3r/PrintConfig.cpp:882 +#: src/libslic3r/PrintConfig.cpp:871 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " @@ -5004,11 +5727,11 @@ msgstr "" "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." -#: src/libslic3r/PrintConfig.cpp:890 +#: src/libslic3r/PrintConfig.cpp:879 msgid "Verbose G-code" msgstr "Verbose G-code" -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:880 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " @@ -5018,11 +5741,11 @@ msgstr "" "descriptive text. If you print from SD card, the additional weight of the " "file could make your firmware slow down." -#: src/libslic3r/PrintConfig.cpp:899 +#: src/libslic3r/PrintConfig.cpp:887 msgid "G-code flavor" msgstr "G-code flavor" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:888 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -5034,15 +5757,15 @@ msgstr "" "output. The \"No extrusion\" flavor prevents Slic3r from exporting any " "extrusion value at all." -#: src/libslic3r/PrintConfig.cpp:924 +#: src/libslic3r/PrintConfig.cpp:911 msgid "No extrusion" msgstr "No extrusion" -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:924 msgid "High extruder current on filament swap" msgstr "High extruder current on filament swap" -#: src/libslic3r/PrintConfig.cpp:930 +#: src/libslic3r/PrintConfig.cpp:925 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " @@ -5052,7 +5775,7 @@ msgstr "" "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." -#: src/libslic3r/PrintConfig.cpp:939 +#: src/libslic3r/PrintConfig.cpp:933 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." @@ -5060,11 +5783,11 @@ msgstr "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." -#: src/libslic3r/PrintConfig.cpp:948 +#: src/libslic3r/PrintConfig.cpp:941 msgid "Combine infill every" msgstr "Combine infill every" -#: src/libslic3r/PrintConfig.cpp:950 +#: src/libslic3r/PrintConfig.cpp:943 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." @@ -5072,19 +5795,19 @@ msgstr "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." -#: src/libslic3r/PrintConfig.cpp:954 +#: src/libslic3r/PrintConfig.cpp:946 msgid "Combine infill every n layers" msgstr "Combine infill every n layers" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:952 msgid "Infill extruder" msgstr "Infill extruder" -#: src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:954 msgid "The extruder to use when printing infill." msgstr "The extruder to use when printing infill." -#: src/libslic3r/PrintConfig.cpp:971 +#: src/libslic3r/PrintConfig.cpp:962 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -5098,11 +5821,11 @@ msgstr "" "up the infill and make your parts stronger. If expressed as percentage (for " "example 90%) it will be computed over layer height." -#: src/libslic3r/PrintConfig.cpp:981 +#: src/libslic3r/PrintConfig.cpp:971 msgid "Infill before perimeters" msgstr "Infill before perimeters" -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:972 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." @@ -5110,11 +5833,11 @@ msgstr "" "This option will switch the print order of perimeters and infill, making the " "latter first." -#: src/libslic3r/PrintConfig.cpp:988 +#: src/libslic3r/PrintConfig.cpp:977 msgid "Only infill where needed" msgstr "Only infill where needed" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:979 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " @@ -5124,11 +5847,11 @@ msgstr "" "ceilings (it will act as internal support material). If enabled, slows down " "the G-code generation due to the multiple checks involved." -#: src/libslic3r/PrintConfig.cpp:998 +#: src/libslic3r/PrintConfig.cpp:986 msgid "Infill/perimeters overlap" msgstr "Infill/perimeters overlap" -#: src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:988 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -5140,23 +5863,23 @@ msgstr "" "cause gaps. If expressed as percentage (example: 15%) it is calculated over " "perimeter extrusion width." -#: src/libslic3r/PrintConfig.cpp:1012 +#: src/libslic3r/PrintConfig.cpp:999 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "Speed for printing the internal fill. Set to zero for auto." -#: src/libslic3r/PrintConfig.cpp:1020 +#: src/libslic3r/PrintConfig.cpp:1007 msgid "Inherits profile" msgstr "Inherits profile" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1008 msgid "Name of the profile, from which this profile inherits." msgstr "Name of the profile, from which this profile inherits." -#: src/libslic3r/PrintConfig.cpp:1032 +#: src/libslic3r/PrintConfig.cpp:1021 msgid "Interface shells" msgstr "Interface shells" -#: src/libslic3r/PrintConfig.cpp:1033 +#: src/libslic3r/PrintConfig.cpp:1022 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual " @@ -5166,7 +5889,7 @@ msgstr "" "Useful for multi-extruder prints with translucent materials or manual " "soluble support material." -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1031 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -5178,11 +5901,11 @@ msgstr "" "use placeholder variables for all Slic3r settings as well as [layer_num] and " "[layer_z]." -#: src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1042 msgid "Supports remaining times" msgstr "Supports remaining times" -#: src/libslic3r/PrintConfig.cpp:1055 +#: src/libslic3r/PrintConfig.cpp:1043 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -5194,63 +5917,63 @@ msgstr "" "As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " "firmware supports M73 Qxx Sxx for the silent mode." -#: src/libslic3r/PrintConfig.cpp:1063 +#: src/libslic3r/PrintConfig.cpp:1051 msgid "Supports silent mode" msgstr "Supports silent mode" -#: src/libslic3r/PrintConfig.cpp:1064 +#: src/libslic3r/PrintConfig.cpp:1052 msgid "Set silent mode for the G-code flavor" msgstr "Set silent mode for the G-code flavor" -#: src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1075 msgid "Maximum feedrate %1%" msgstr "Maximum feedrate %1%" -#: src/libslic3r/PrintConfig.cpp:1089 +#: src/libslic3r/PrintConfig.cpp:1077 msgid "Maximum feedrate of the %1% axis" msgstr "Maximum feedrate of the %1% axis" -#: src/libslic3r/PrintConfig.cpp:1097 +#: src/libslic3r/PrintConfig.cpp:1085 msgid "Maximum acceleration %1%" msgstr "Maximum acceleration %1%" -#: src/libslic3r/PrintConfig.cpp:1099 +#: src/libslic3r/PrintConfig.cpp:1087 msgid "Maximum acceleration of the %1% axis" msgstr "Maximum acceleration of the %1% axis" -#: src/libslic3r/PrintConfig.cpp:1107 +#: src/libslic3r/PrintConfig.cpp:1095 msgid "Maximum jerk %1%" msgstr "Maximum jerk %1%" -#: src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1097 msgid "Maximum jerk of the %1% axis" msgstr "Maximum jerk of the %1% axis" -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110 msgid "Minimum feedrate when extruding" msgstr "Minimum feedrate when extruding" -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121 msgid "Minimum travel feedrate" msgstr "Minimum travel feedrate" -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132 msgid "Maximum acceleration when extruding" msgstr "Maximum acceleration when extruding" -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 +#: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143 msgid "Maximum acceleration when retracting" msgstr "Maximum acceleration when retracting" -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 +#: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160 msgid "Max" msgstr "Max" -#: src/libslic3r/PrintConfig.cpp:1164 +#: src/libslic3r/PrintConfig.cpp:1152 msgid "This setting represents the maximum speed of your fan." msgstr "This setting represents the maximum speed of your fan." -#: src/libslic3r/PrintConfig.cpp:1174 +#: src/libslic3r/PrintConfig.cpp:1161 #, no-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " @@ -5263,11 +5986,11 @@ msgstr "" "layer height is 75% of the extrusion width to achieve reasonable inter-layer " "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -#: src/libslic3r/PrintConfig.cpp:1185 +#: src/libslic3r/PrintConfig.cpp:1171 msgid "Max print speed" msgstr "Max print speed" -#: src/libslic3r/PrintConfig.cpp:1186 +#: src/libslic3r/PrintConfig.cpp:1172 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " @@ -5277,7 +6000,7 @@ msgstr "" "speed in order to keep constant extruder pressure. This experimental setting " "is used to set the highest print speed you want to allow." -#: src/libslic3r/PrintConfig.cpp:1197 +#: src/libslic3r/PrintConfig.cpp:1182 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." @@ -5285,11 +6008,11 @@ msgstr "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." -#: src/libslic3r/PrintConfig.cpp:1206 +#: src/libslic3r/PrintConfig.cpp:1191 msgid "Max volumetric slope positive" msgstr "Max volumetric slope positive" -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 +#: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -5301,23 +6024,23 @@ msgstr "" "of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 +#: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207 msgid "mm³/s²" msgstr "mm³/s²" -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1202 msgid "Max volumetric slope negative" msgstr "Max volumetric slope negative" -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 +#: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223 msgid "Min" msgstr "Min" -#: src/libslic3r/PrintConfig.cpp:1231 +#: src/libslic3r/PrintConfig.cpp:1215 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "This setting represents the minimum PWM your fan needs to work." -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1224 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " @@ -5327,19 +6050,19 @@ msgstr "" "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/libslic3r/PrintConfig.cpp:1232 msgid "Min print speed" msgstr "Min print speed" -#: src/libslic3r/PrintConfig.cpp:1251 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r will not scale speed down below this speed." -#: src/libslic3r/PrintConfig.cpp:1259 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Minimal filament extrusion length" msgstr "Minimal filament extrusion length" -#: src/libslic3r/PrintConfig.cpp:1260 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " @@ -5349,11 +6072,11 @@ msgstr "" "specified amount of filament on the bottom layer. For multi-extruder " "machines, this minimum applies to each extruder." -#: src/libslic3r/PrintConfig.cpp:1270 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Configuration notes" msgstr "Configuration notes" -#: src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." @@ -5361,21 +6084,21 @@ msgstr "" "You can put here your personal notes. This text will be added to the G-code " "header comments." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1260 msgid "Nozzle diameter" msgstr "Nozzle diameter" -#: src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1261 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -#: src/libslic3r/PrintConfig.cpp:1288 +#: src/libslic3r/PrintConfig.cpp:1266 msgid "Host Type" msgstr "Host Type" -#: src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." @@ -5383,35 +6106,11 @@ msgstr "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "API Key / Password" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "Hostname, IP or URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." - -#: src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1278 msgid "Only retract when crossing perimeters" msgstr "Only retract when crossing perimeters" -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/libslic3r/PrintConfig.cpp:1279 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." @@ -5419,7 +6118,7 @@ msgstr "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." -#: src/libslic3r/PrintConfig.cpp:1334 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " @@ -5429,11 +6128,11 @@ msgstr "" "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." -#: src/libslic3r/PrintConfig.cpp:1342 +#: src/libslic3r/PrintConfig.cpp:1293 msgid "Output filename format" msgstr "Output filename format" -#: src/libslic3r/PrintConfig.cpp:1343 +#: src/libslic3r/PrintConfig.cpp:1294 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -5445,11 +6144,11 @@ msgstr "" "[year], [month], [day], [hour], [minute], [second], [version], " "[input_filename], [input_filename_base]." -#: src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1303 msgid "Detect bridging perimeters" msgstr "Detect bridging perimeters" -#: src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:1305 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." @@ -5457,11 +6156,11 @@ msgstr "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1311 msgid "Filament parking position" msgstr "Filament parking position" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1312 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware. " @@ -5469,11 +6168,11 @@ msgstr "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware. " -#: src/libslic3r/PrintConfig.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:1320 msgid "Extra loading distance" msgstr "Extra loading distance" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1321 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " @@ -5485,12 +6184,12 @@ msgstr "" "positive, it is loaded further, if negative, the loading move is shorter " "than unloading. " -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 +#: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347 +#: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369 msgid "Perimeters" msgstr "Perimeters" -#: src/libslic3r/PrintConfig.cpp:1383 +#: src/libslic3r/PrintConfig.cpp:1330 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " @@ -5500,17 +6199,17 @@ msgstr "" "like 9000 usually gives good results if your hardware is up to the job. Set " "zero to disable acceleration control for perimeters." -#: src/libslic3r/PrintConfig.cpp:1392 +#: src/libslic3r/PrintConfig.cpp:1338 msgid "Perimeter extruder" msgstr "Perimeter extruder" -#: src/libslic3r/PrintConfig.cpp:1394 +#: src/libslic3r/PrintConfig.cpp:1340 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" "The extruder to use when printing perimeters and brim. First extruder is 1." -#: src/libslic3r/PrintConfig.cpp:1404 +#: src/libslic3r/PrintConfig.cpp:1349 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -5524,13 +6223,13 @@ msgstr "" "nozzle diameter will be used. If expressed as percentage (for example 200%) " "it will be computed over layer height." -#: src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1361 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -#: src/libslic3r/PrintConfig.cpp:1427 +#: src/libslic3r/PrintConfig.cpp:1371 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -5542,11 +6241,11 @@ msgstr "" "surfaces which benefit from a higher number of perimeters if the Extra " "Perimeters option is enabled." -#: src/libslic3r/PrintConfig.cpp:1431 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "(minimum)" msgstr "(minimum)" -#: src/libslic3r/PrintConfig.cpp:1439 +#: src/libslic3r/PrintConfig.cpp:1383 msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " @@ -5560,35 +6259,35 @@ msgstr "" "argument, and they can access the Slic3r config settings by reading " "environment variables." -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1395 msgid "Printer type" msgstr "Printer type" -#: src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1396 msgid "Type of the printer." msgstr "Type of the printer." -#: src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1401 msgid "Printer notes" msgstr "Printer notes" -#: src/libslic3r/PrintConfig.cpp:1458 +#: src/libslic3r/PrintConfig.cpp:1402 msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1410 msgid "Printer vendor" msgstr "Printer vendor" -#: src/libslic3r/PrintConfig.cpp:1468 +#: src/libslic3r/PrintConfig.cpp:1411 msgid "Name of the printer vendor." msgstr "Name of the printer vendor." -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1416 msgid "Printer variant" msgstr "Printer variant" -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1417 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." @@ -5596,11 +6295,11 @@ msgstr "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." -#: src/libslic3r/PrintConfig.cpp:1483 +#: src/libslic3r/PrintConfig.cpp:1430 msgid "Raft layers" msgstr "Raft layers" -#: src/libslic3r/PrintConfig.cpp:1485 +#: src/libslic3r/PrintConfig.cpp:1432 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." @@ -5608,11 +6307,11 @@ msgstr "" "The object will be raised by this number of layers, and support material " "will be generated under it." -#: src/libslic3r/PrintConfig.cpp:1494 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Resolution" msgstr "Resolution" -#: src/libslic3r/PrintConfig.cpp:1495 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -5624,21 +6323,21 @@ msgstr "" "carry more detail than printers can render. Set to zero to disable any " "simplification and use full resolution from input." -#: src/libslic3r/PrintConfig.cpp:1506 +#: src/libslic3r/PrintConfig.cpp:1451 msgid "Minimum travel after retraction" msgstr "Minimum travel after retraction" -#: src/libslic3r/PrintConfig.cpp:1507 +#: src/libslic3r/PrintConfig.cpp:1452 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "" "Retraction is not triggered when travel moves are shorter than this length." -#: src/libslic3r/PrintConfig.cpp:1514 +#: src/libslic3r/PrintConfig.cpp:1458 msgid "Retract amount before wipe" msgstr "Retract amount before wipe" -#: src/libslic3r/PrintConfig.cpp:1515 +#: src/libslic3r/PrintConfig.cpp:1459 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." @@ -5646,23 +6345,23 @@ msgstr "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1466 msgid "Retract on layer change" msgstr "Retract on layer change" -#: src/libslic3r/PrintConfig.cpp:1524 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "This flag enforces a retraction whenever a Z move is done." -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480 msgid "Length" msgstr "Length" -#: src/libslic3r/PrintConfig.cpp:1531 +#: src/libslic3r/PrintConfig.cpp:1473 msgid "Retraction Length" msgstr "Retraction Length" -#: src/libslic3r/PrintConfig.cpp:1532 +#: src/libslic3r/PrintConfig.cpp:1474 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " @@ -5672,15 +6371,15 @@ msgstr "" "amount (the length is measured on raw filament, before it enters the " "extruder)." -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485 msgid "mm (zero to disable)" msgstr "mm (zero to disable)" -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Retraction Length (Toolchange)" msgstr "Retraction Length (Toolchange)" -#: src/libslic3r/PrintConfig.cpp:1541 +#: src/libslic3r/PrintConfig.cpp:1482 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " @@ -5690,11 +6389,11 @@ msgstr "" "by the specified amount (the length is measured on raw filament, before it " "enters the extruder)." -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Lift Z" msgstr "Lift Z" -#: src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1491 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " @@ -5704,15 +6403,15 @@ msgstr "" "retraction is triggered. When using multiple extruders, only the setting for " "the first extruder will be considered." -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Above Z" msgstr "Above Z" -#: src/libslic3r/PrintConfig.cpp:1560 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "Only lift Z above" msgstr "Only lift Z above" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " @@ -5722,15 +6421,15 @@ msgstr "" "specified absolute Z. You can tune this setting for skipping lift on the " "first layers." -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1507 msgid "Below Z" msgstr "Below Z" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "Only lift Z below" msgstr "Only lift Z below" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1509 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " @@ -5740,11 +6439,11 @@ msgstr "" "specified absolute Z. You can tune this setting for limiting lift to the " "first layers." -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525 msgid "Extra length on restart" msgstr "Extra length on restart" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." @@ -5752,7 +6451,7 @@ msgstr "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." -#: src/libslic3r/PrintConfig.cpp:1590 +#: src/libslic3r/PrintConfig.cpp:1526 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." @@ -5760,19 +6459,19 @@ msgstr "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 +#: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534 msgid "Retraction Speed" msgstr "Retraction Speed" -#: src/libslic3r/PrintConfig.cpp:1600 +#: src/libslic3r/PrintConfig.cpp:1535 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "The speed for retractions (it only applies to the extruder motor)." -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542 msgid "Deretraction Speed" msgstr "Deretraction Speed" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1543 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " @@ -5782,71 +6481,67 @@ msgstr "" "applies to the extruder motor). If left to zero, the retraction speed is " "used." -#: src/libslic3r/PrintConfig.cpp:1617 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "Seam position" msgstr "Seam position" -#: src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1552 msgid "Position of perimeters starting points." msgstr "Position of perimeters starting points." -#: src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1558 msgid "Random" msgstr "Random" -#: src/libslic3r/PrintConfig.cpp:1627 +#: src/libslic3r/PrintConfig.cpp:1559 msgid "Nearest" msgstr "Nearest" -#: src/libslic3r/PrintConfig.cpp:1628 +#: src/libslic3r/PrintConfig.cpp:1560 msgid "Aligned" msgstr "Aligned" -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "Rear" - -#: src/libslic3r/PrintConfig.cpp:1636 +#: src/libslic3r/PrintConfig.cpp:1568 msgid "Direction" msgstr "Direction" -#: src/libslic3r/PrintConfig.cpp:1638 +#: src/libslic3r/PrintConfig.cpp:1570 msgid "Preferred direction of the seam" msgstr "Preferred direction of the seam" -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1571 msgid "Seam preferred direction" msgstr "Seam preferred direction" -#: src/libslic3r/PrintConfig.cpp:1647 +#: src/libslic3r/PrintConfig.cpp:1578 msgid "Jitter" msgstr "Jitter" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Seam preferred direction jitter" msgstr "Seam preferred direction jitter" -#: src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "Preferred direction of the seam - jitter" msgstr "Preferred direction of the seam - jitter" -#: src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1591 msgid "USB/serial port for printer connection." msgstr "USB/serial port for printer connection." -#: src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1598 msgid "Serial port speed" msgstr "Serial port speed" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1599 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "Speed (baud) of USB/serial port for printer connection." -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1608 msgid "Distance from object" msgstr "Distance from object" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." @@ -5854,11 +6549,11 @@ msgstr "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1616 msgid "Skirt height" msgstr "Skirt height" -#: src/libslic3r/PrintConfig.cpp:1689 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." @@ -5866,15 +6561,15 @@ msgstr "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1624 msgid "Loops (minimum)" msgstr "Loops (minimum)" -#: src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:1625 msgid "Skirt Loops" msgstr "Skirt Loops" -#: src/libslic3r/PrintConfig.cpp:1699 +#: src/libslic3r/PrintConfig.cpp:1626 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " @@ -5884,11 +6579,11 @@ msgstr "" "set, the number of loops might be greater than the one configured here. Set " "this to zero to disable skirt completely." -#: src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:1634 msgid "Slow down if layer print time is below" msgstr "Slow down if layer print time is below" -#: src/libslic3r/PrintConfig.cpp:1709 +#: src/libslic3r/PrintConfig.cpp:1635 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." @@ -5896,11 +6591,11 @@ msgstr "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." -#: src/libslic3r/PrintConfig.cpp:1720 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Small perimeters" msgstr "Small perimeters" -#: src/libslic3r/PrintConfig.cpp:1722 +#: src/libslic3r/PrintConfig.cpp:1647 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " @@ -5910,11 +6605,11 @@ msgstr "" "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." -#: src/libslic3r/PrintConfig.cpp:1732 +#: src/libslic3r/PrintConfig.cpp:1657 msgid "Solid infill threshold area" msgstr "Solid infill threshold area" -#: src/libslic3r/PrintConfig.cpp:1734 +#: src/libslic3r/PrintConfig.cpp:1659 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." @@ -5922,23 +6617,23 @@ msgstr "" "Force solid infill for regions having a smaller area than the specified " "threshold." -#: src/libslic3r/PrintConfig.cpp:1735 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "mm²" msgstr "mm²" -#: src/libslic3r/PrintConfig.cpp:1742 +#: src/libslic3r/PrintConfig.cpp:1666 msgid "Solid infill extruder" msgstr "Solid infill extruder" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1668 msgid "The extruder to use when printing solid infill." msgstr "The extruder to use when printing solid infill." -#: src/libslic3r/PrintConfig.cpp:1751 +#: src/libslic3r/PrintConfig.cpp:1674 msgid "Solid infill every" msgstr "Solid infill every" -#: src/libslic3r/PrintConfig.cpp:1753 +#: src/libslic3r/PrintConfig.cpp:1676 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -5950,7 +6645,7 @@ msgstr "" "will automatically choose the maximum possible number of layers to combine " "according to nozzle diameter and layer height." -#: src/libslic3r/PrintConfig.cpp:1766 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -5962,7 +6657,7 @@ msgstr "" "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " "(for example 90%) it will be computed over layer height." -#: src/libslic3r/PrintConfig.cpp:1777 +#: src/libslic3r/PrintConfig.cpp:1698 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " @@ -5972,15 +6667,15 @@ msgstr "" "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." -#: src/libslic3r/PrintConfig.cpp:1789 +#: src/libslic3r/PrintConfig.cpp:1710 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "Number of solid layers to generate on top and bottom surfaces." -#: src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1716 msgid "Spiral vase" msgstr "Spiral vase" -#: src/libslic3r/PrintConfig.cpp:1797 +#: src/libslic3r/PrintConfig.cpp:1717 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -5994,11 +6689,11 @@ msgstr "" "any number of bottom solid layers as well as skirt/brim loops. It won't work " "when printing more than an object." -#: src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1725 msgid "Temperature variation" msgstr "Temperature variation" -#: src/libslic3r/PrintConfig.cpp:1807 +#: src/libslic3r/PrintConfig.cpp:1726 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " @@ -6008,7 +6703,7 @@ msgstr "" "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." -#: src/libslic3r/PrintConfig.cpp:1818 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -6026,7 +6721,7 @@ msgstr "" "you can use placeholder variables for all Slic3r settings, so you can put a " "\"M109 S[first_layer_temperature]\" command wherever you want." -#: src/libslic3r/PrintConfig.cpp:1834 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode. This is used to override settings for a specific filament. If Slic3r " @@ -6046,19 +6741,19 @@ msgstr "" "S[first_layer_temperature]\" command wherever you want. If you have multiple " "extruders, the gcode is processed in extruder order." -#: src/libslic3r/PrintConfig.cpp:1850 +#: src/libslic3r/PrintConfig.cpp:1766 msgid "Single Extruder Multi Material" msgstr "Single Extruder Multi Material" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1767 msgid "The printer multiplexes filaments into a single hot end." msgstr "The printer multiplexes filaments into a single hot end." -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1772 msgid "Prime all printing extruders" msgstr "Prime all printing extruders" -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:1773 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." @@ -6066,19 +6761,19 @@ msgstr "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." -#: src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:1778 msgid "Generate support material" msgstr "Generate support material" -#: src/libslic3r/PrintConfig.cpp:1866 +#: src/libslic3r/PrintConfig.cpp:1780 msgid "Enable support material generation." msgstr "Enable support material generation." -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1784 msgid "Auto generated supports" msgstr "Auto generated supports" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:1786 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " @@ -6088,11 +6783,11 @@ msgstr "" "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." -#: src/libslic3r/PrintConfig.cpp:1880 +#: src/libslic3r/PrintConfig.cpp:1792 msgid "XY separation between an object and its support" msgstr "XY separation between an object and its support" -#: src/libslic3r/PrintConfig.cpp:1882 +#: src/libslic3r/PrintConfig.cpp:1794 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." @@ -6100,11 +6795,11 @@ msgstr "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:1804 msgid "Pattern angle" msgstr "Pattern angle" -#: src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1806 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." @@ -6112,7 +6807,7 @@ msgstr "" "Use this setting to rotate the support material pattern on the horizontal " "plane." -#: src/libslic3r/PrintConfig.cpp:1906 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -6120,11 +6815,11 @@ msgstr "" "Only create support if it lies on a build plate. Don't create support on a " "print." -#: src/libslic3r/PrintConfig.cpp:1913 +#: src/libslic3r/PrintConfig.cpp:1822 msgid "Contact Z distance" msgstr "Contact Z distance" -#: src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1824 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " @@ -6134,19 +6829,19 @@ msgstr "" "this to 0 will also prevent Slic3r from using bridge flow and speed for the " "first object layer." -#: src/libslic3r/PrintConfig.cpp:1923 +#: src/libslic3r/PrintConfig.cpp:1831 msgid "soluble" msgstr "soluble" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "detachable" msgstr "detachable" -#: src/libslic3r/PrintConfig.cpp:1929 +#: src/libslic3r/PrintConfig.cpp:1837 msgid "Enforce support for the first" msgstr "Enforce support for the first" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:1839 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -6158,15 +6853,15 @@ msgstr "" "regardless of any angle threshold. This is useful for getting more adhesion " "of objects having a very thin or poor footprint on the build plate." -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Enforce support for the first n layers" msgstr "Enforce support for the first n layers" -#: src/libslic3r/PrintConfig.cpp:1943 +#: src/libslic3r/PrintConfig.cpp:1850 msgid "Support material/raft/skirt extruder" msgstr "Support material/raft/skirt extruder" -#: src/libslic3r/PrintConfig.cpp:1945 +#: src/libslic3r/PrintConfig.cpp:1852 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." @@ -6174,7 +6869,7 @@ msgstr "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." -#: src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -6186,21 +6881,21 @@ msgstr "" "otherwise nozzle diameter will be used. If expressed as percentage (for " "example 90%) it will be computed over layer height." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1869 msgid "Interface loops" msgstr "Interface loops" -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:1871 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" "Cover the top contact layer of the supports with loops. Disabled by default." -#: src/libslic3r/PrintConfig.cpp:1972 +#: src/libslic3r/PrintConfig.cpp:1876 msgid "Support material/raft interface extruder" msgstr "Support material/raft interface extruder" -#: src/libslic3r/PrintConfig.cpp:1974 +#: src/libslic3r/PrintConfig.cpp:1878 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." @@ -6208,11 +6903,11 @@ msgstr "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:1885 msgid "Interface layers" msgstr "Interface layers" -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:1887 msgid "" "Number of interface layers to insert between the object(s) and support " "material." @@ -6220,15 +6915,15 @@ msgstr "" "Number of interface layers to insert between the object(s) and support " "material." -#: src/libslic3r/PrintConfig.cpp:1992 +#: src/libslic3r/PrintConfig.cpp:1894 msgid "Interface pattern spacing" msgstr "Interface pattern spacing" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "Spacing between interface lines. Set zero to get a solid interface." -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:1905 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " @@ -6238,35 +6933,35 @@ msgstr "" "percentage (for example 50%) it will be calculated over support material " "speed." -#: src/libslic3r/PrintConfig.cpp:2013 +#: src/libslic3r/PrintConfig.cpp:1914 msgid "Pattern" msgstr "Pattern" -#: src/libslic3r/PrintConfig.cpp:2015 +#: src/libslic3r/PrintConfig.cpp:1916 msgid "Pattern used to generate support material." msgstr "Pattern used to generate support material." -#: src/libslic3r/PrintConfig.cpp:2022 +#: src/libslic3r/PrintConfig.cpp:1922 msgid "Rectilinear grid" msgstr "Rectilinear grid" -#: src/libslic3r/PrintConfig.cpp:2028 +#: src/libslic3r/PrintConfig.cpp:1928 msgid "Pattern spacing" msgstr "Pattern spacing" -#: src/libslic3r/PrintConfig.cpp:2030 +#: src/libslic3r/PrintConfig.cpp:1930 msgid "Spacing between support material lines." msgstr "Spacing between support material lines." -#: src/libslic3r/PrintConfig.cpp:2040 +#: src/libslic3r/PrintConfig.cpp:1939 msgid "Speed for printing support material." msgstr "Speed for printing support material." -#: src/libslic3r/PrintConfig.cpp:2047 +#: src/libslic3r/PrintConfig.cpp:1946 msgid "Synchronize with object layers" msgstr "Synchronize with object layers" -#: src/libslic3r/PrintConfig.cpp:2049 +#: src/libslic3r/PrintConfig.cpp:1948 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." @@ -6274,11 +6969,11 @@ msgstr "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:1954 msgid "Overhang threshold" msgstr "Overhang threshold" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:1956 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -6292,11 +6987,11 @@ msgstr "" "that you can print without support material. Set to zero for automatic " "detection (recommended)." -#: src/libslic3r/PrintConfig.cpp:2071 +#: src/libslic3r/PrintConfig.cpp:1968 msgid "With sheath around the support" msgstr "With sheath around the support" -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:1970 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." @@ -6304,7 +6999,7 @@ msgstr "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:1977 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." @@ -6312,15 +7007,15 @@ msgstr "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." -#: src/libslic3r/PrintConfig.cpp:2084 +#: src/libslic3r/PrintConfig.cpp:1979 msgid "Temperature" msgstr "Temperature" -#: src/libslic3r/PrintConfig.cpp:2090 +#: src/libslic3r/PrintConfig.cpp:1985 msgid "Detect thin walls" msgstr "Detect thin walls" -#: src/libslic3r/PrintConfig.cpp:2092 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." @@ -6328,11 +7023,11 @@ msgstr "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." -#: src/libslic3r/PrintConfig.cpp:2099 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Threads" msgstr "Threads" -#: src/libslic3r/PrintConfig.cpp:2100 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." @@ -6340,7 +7035,7 @@ msgstr "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." -#: src/libslic3r/PrintConfig.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:2006 msgid "" "This custom code is inserted right before every extruder change. Note that " "you can use placeholder variables for all Slic3r settings as well as " @@ -6350,7 +7045,7 @@ msgstr "" "you can use placeholder variables for all Slic3r settings as well as " "[previous_extruder] and [next_extruder]." -#: src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2018 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -6364,7 +7059,7 @@ msgstr "" "will be used if set, otherwise nozzle diameter will be used. If expressed as " "percentage (for example 90%) it will be computed over layer height." -#: src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2029 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -6378,28 +7073,23 @@ msgstr "" "percentage (for example: 80%) over the solid infill speed above. Set to zero " "for auto." -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Top" - -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2043 msgid "Number of solid layers to generate on top surfaces." msgstr "Number of solid layers to generate on top surfaces." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "Top solid layers" msgstr "Top solid layers" -#: src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2050 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "Speed for travel moves (jumps between distant extrusion points)." -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2058 msgid "Use firmware retraction" msgstr "Use firmware retraction" -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2059 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." @@ -6407,11 +7097,11 @@ msgstr "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2065 msgid "Use relative E distances" msgstr "Use relative E distances" -#: src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2066 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." @@ -6419,11 +7109,11 @@ msgstr "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." -#: src/libslic3r/PrintConfig.cpp:2184 +#: src/libslic3r/PrintConfig.cpp:2072 msgid "Use volumetric E" msgstr "Use volumetric E" -#: src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -6439,11 +7129,11 @@ msgstr "" "filament diameter associated to the filament selected in Slic3r. This is " "only supported in recent Marlin." -#: src/libslic3r/PrintConfig.cpp:2196 +#: src/libslic3r/PrintConfig.cpp:2083 msgid "Enable variable layer height feature" msgstr "Enable variable layer height feature" -#: src/libslic3r/PrintConfig.cpp:2197 +#: src/libslic3r/PrintConfig.cpp:2084 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." @@ -6451,11 +7141,11 @@ msgstr "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." -#: src/libslic3r/PrintConfig.cpp:2204 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Wipe while retracting" msgstr "Wipe while retracting" -#: src/libslic3r/PrintConfig.cpp:2205 +#: src/libslic3r/PrintConfig.cpp:2091 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." @@ -6463,7 +7153,7 @@ msgstr "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." -#: src/libslic3r/PrintConfig.cpp:2213 +#: src/libslic3r/PrintConfig.cpp:2098 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." @@ -6471,11 +7161,11 @@ msgstr "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." -#: src/libslic3r/PrintConfig.cpp:2220 +#: src/libslic3r/PrintConfig.cpp:2104 msgid "Purging volumes - load/unload volumes" msgstr "Purging volumes - load/unload volumes" -#: src/libslic3r/PrintConfig.cpp:2221 +#: src/libslic3r/PrintConfig.cpp:2105 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " @@ -6485,11 +7175,11 @@ msgstr "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below. " -#: src/libslic3r/PrintConfig.cpp:2228 +#: src/libslic3r/PrintConfig.cpp:2111 msgid "Purging volumes - matrix" msgstr "Purging volumes - matrix" -#: src/libslic3r/PrintConfig.cpp:2229 +#: src/libslic3r/PrintConfig.cpp:2112 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " @@ -6497,43 +7187,43 @@ msgstr "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2121 msgid "Position X" msgstr "Position X" -#: src/libslic3r/PrintConfig.cpp:2240 +#: src/libslic3r/PrintConfig.cpp:2122 msgid "X coordinate of the left front corner of a wipe tower" msgstr "X coordinate of the left front corner of a wipe tower" -#: src/libslic3r/PrintConfig.cpp:2247 +#: src/libslic3r/PrintConfig.cpp:2128 msgid "Position Y" msgstr "Position Y" -#: src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2129 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "Y coordinate of the left front corner of a wipe tower" -#: src/libslic3r/PrintConfig.cpp:2256 +#: src/libslic3r/PrintConfig.cpp:2136 msgid "Width of a wipe tower" msgstr "Width of a wipe tower" -#: src/libslic3r/PrintConfig.cpp:2263 +#: src/libslic3r/PrintConfig.cpp:2142 msgid "Wipe tower rotation angle" msgstr "Wipe tower rotation angle" -#: src/libslic3r/PrintConfig.cpp:2264 +#: src/libslic3r/PrintConfig.cpp:2143 msgid "Wipe tower rotation angle with respect to x-axis " msgstr "Wipe tower rotation angle with respect to x-axis " -#: src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565 msgid "degrees" msgstr "degrees" -#: src/libslic3r/PrintConfig.cpp:2272 +#: src/libslic3r/PrintConfig.cpp:2150 msgid "Wipe into this object's infill" msgstr "Wipe into this object's infill" -#: src/libslic3r/PrintConfig.cpp:2273 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " @@ -6543,11 +7233,11 @@ msgstr "" "the amount of waste but may result in longer print time due to additional " "travel moves." -#: src/libslic3r/PrintConfig.cpp:2281 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Wipe into this object" msgstr "Wipe into this object" -#: src/libslic3r/PrintConfig.cpp:2282 +#: src/libslic3r/PrintConfig.cpp:2159 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " @@ -6557,19 +7247,19 @@ msgstr "" "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." -#: src/libslic3r/PrintConfig.cpp:2289 +#: src/libslic3r/PrintConfig.cpp:2165 msgid "Maximal bridging distance" msgstr "Maximal bridging distance" -#: src/libslic3r/PrintConfig.cpp:2290 +#: src/libslic3r/PrintConfig.cpp:2166 msgid "Maximal distance between supports on sparse infill sections. " msgstr "Maximal distance between supports on sparse infill sections. " -#: src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2172 msgid "XY Size Compensation" msgstr "XY Size Compensation" -#: src/libslic3r/PrintConfig.cpp:2299 +#: src/libslic3r/PrintConfig.cpp:2174 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" @@ -6579,11 +7269,11 @@ msgstr "" "(negative = inwards, positive = outwards). This might be useful for fine-" "tuning hole sizes." -#: src/libslic3r/PrintConfig.cpp:2308 +#: src/libslic3r/PrintConfig.cpp:2182 msgid "Z offset" msgstr "Z offset" -#: src/libslic3r/PrintConfig.cpp:2309 +#: src/libslic3r/PrintConfig.cpp:2183 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " @@ -6595,74 +7285,39 @@ msgstr "" "example, if your endstop zero actually leaves the nozzle 0.3mm far from the " "print bed, set this to -0.3 (or fix your endstop)." -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "Bed size X" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "Dwarf" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "Bed size Y" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "Picture resolution X" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "px" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "Picture resolution Y" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "Exposure time" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "Exposure time first layers" - -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Display width" msgstr "Display width" -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2201 msgid "Width of the display" msgstr "Width of the display" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2206 msgid "Display height" msgstr "Display height" -#: src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2207 msgid "Height of the display" msgstr "Height of the display" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2212 msgid "Number of pixels in" msgstr "Number of pixels in" -#: src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2214 msgid "Number of pixels in X" msgstr "Number of pixels in X" -#: src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2220 msgid "Number of pixels in Y" msgstr "Number of pixels in Y" -#: src/libslic3r/PrintConfig.cpp:2402 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Display orientation" msgstr "Display orientation" -#: src/libslic3r/PrintConfig.cpp:2403 +#: src/libslic3r/PrintConfig.cpp:2226 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " @@ -6672,91 +7327,162 @@ msgstr "" "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." -#: src/libslic3r/PrintConfig.cpp:2410 +#: src/libslic3r/PrintConfig.cpp:2232 msgid "Landscape" msgstr "Landscape" -#: src/libslic3r/PrintConfig.cpp:2411 +#: src/libslic3r/PrintConfig.cpp:2233 msgid "Portrait" msgstr "Portrait" -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2238 +msgid "Fast" +msgstr "Fast" + +#: src/libslic3r/PrintConfig.cpp:2239 +msgid "Fast tilt" +msgstr "Fast tilt" + +#: src/libslic3r/PrintConfig.cpp:2240 +msgid "Time of the fast tilt" +msgstr "Time of the fast tilt" + +#: src/libslic3r/PrintConfig.cpp:2247 +msgid "Slow" +msgstr "Slow" + +#: src/libslic3r/PrintConfig.cpp:2248 +msgid "Slow tilt" +msgstr "Slow tilt" + +#: src/libslic3r/PrintConfig.cpp:2249 +msgid "Time of the slow tilt" +msgstr "Time of the slow tilt" + +#: src/libslic3r/PrintConfig.cpp:2256 +msgid "Area fill" +msgstr "Area fill" + +#: src/libslic3r/PrintConfig.cpp:2257 +msgid "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" +msgstr "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" + +#: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2266 msgid "Printer scaling correction" msgstr "Printer scaling correction" -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273 +msgid "Printer absolute correction" +msgstr "Printer absolute correction" + +#: src/libslic3r/PrintConfig.cpp:2274 +msgid "" +"Will inflate or deflate the sliced 2D polygons according to the sign of the " +"correction." +msgstr "" +"Will inflate or deflate the sliced 2D polygons according to the sign of the " +"correction." + +#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281 +msgid "Printer gamma correction" +msgstr "Printer gamma correction" + +#: src/libslic3r/PrintConfig.cpp:2282 +msgid "This will apply a gamm correction to the rasterized 2D polygons." +msgstr "This will apply a gamm correction to the rasterized 2D polygons." + +#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 msgid "Initial layer height" msgstr "Initial layer height" -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 +#: src/libslic3r/PrintConfig.cpp:2298 +msgid "Faded layers" +msgstr "Faded layers" + +#: src/libslic3r/PrintConfig.cpp:2299 +msgid "" +"Number of the layers needed for the exposure time fade from initial exposure " +"time to the exposure time" +msgstr "" +"Number of the layers needed for the exposure time fade from initial exposure " +"time to the exposure time" + +#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307 +msgid "Exposure time" +msgstr "Exposure time" + +#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314 msgid "Initial exposure time" msgstr "Initial exposure time" -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "Correction for expansion when printing" +#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 +msgid "Correction for expansion" +msgstr "Correction for expansion" -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "Correction for expansion after curing" - -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2327 msgid "SLA print material notes" msgstr "SLA print material notes" -#: src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2328 msgid "You can put your notes regarding the SLA print material here." msgstr "You can put your notes regarding the SLA print material here." -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 +#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347 msgid "Default SLA material profile" msgstr "Default SLA material profile" -#: src/libslic3r/PrintConfig.cpp:2487 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "Generate supports" msgstr "Generate supports" -#: src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2360 msgid "Generate supports for the models" msgstr "Generate supports for the models" -#: src/libslic3r/PrintConfig.cpp:2494 +#: src/libslic3r/PrintConfig.cpp:2365 msgid "Support head front diameter" msgstr "Support head front diameter" -#: src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Diameter of the pointing side of the head" msgstr "Diameter of the pointing side of the head" -#: src/libslic3r/PrintConfig.cpp:2503 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Support head penetration" msgstr "Support head penetration" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2376 msgid "How much the pinhead has to penetrate the model surface" msgstr "How much the pinhead has to penetrate the model surface" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2383 msgid "Support head width" msgstr "Support head width" -#: src/libslic3r/PrintConfig.cpp:2514 +#: src/libslic3r/PrintConfig.cpp:2385 msgid "Width from the back sphere center to the front sphere center" msgstr "Width from the back sphere center to the front sphere center" -#: src/libslic3r/PrintConfig.cpp:2521 +#: src/libslic3r/PrintConfig.cpp:2393 msgid "Support pillar diameter" msgstr "Support pillar diameter" -#: src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2395 msgid "Diameter in mm of the support pillars" msgstr "Diameter in mm of the support pillars" -#: src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Support pillar connection mode" msgstr "Support pillar connection mode" -#: src/libslic3r/PrintConfig.cpp:2531 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "" "Controls the bridge type between two neigboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " @@ -6766,23 +7492,23 @@ msgstr "" "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." -#: src/libslic3r/PrintConfig.cpp:2540 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Zig-Zag" msgstr "Zig-Zag" -#: src/libslic3r/PrintConfig.cpp:2541 +#: src/libslic3r/PrintConfig.cpp:2413 msgid "Cross" msgstr "Cross" -#: src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Dynamic" msgstr "Dynamic" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2426 msgid "Pillar widening factor" msgstr "Pillar widening factor" -#: src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." @@ -6790,258 +7516,389 @@ msgstr "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2437 msgid "Support base diameter" msgstr "Support base diameter" -#: src/libslic3r/PrintConfig.cpp:2559 +#: src/libslic3r/PrintConfig.cpp:2439 msgid "Diameter in mm of the pillar base" msgstr "Diameter in mm of the pillar base" -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2447 msgid "Support base height" msgstr "Support base height" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2449 msgid "The height of the pillar base cone" msgstr "The height of the pillar base cone" -#: src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2456 msgid "Critical angle" msgstr "Critical angle" -#: src/libslic3r/PrintConfig.cpp:2577 +#: src/libslic3r/PrintConfig.cpp:2458 msgid "The default angle for connecting support sticks and junctions." msgstr "The default angle for connecting support sticks and junctions." -#: src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2466 msgid "Max bridge length" msgstr "Max bridge length" -#: src/libslic3r/PrintConfig.cpp:2586 +#: src/libslic3r/PrintConfig.cpp:2468 msgid "The max length of a bridge" msgstr "The max length of a bridge" -#: src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2475 +msgid "Max pillar linking distance" +msgstr "Max pillar linking distance" + +#: src/libslic3r/PrintConfig.cpp:2477 +msgid "" +"The max distance of two pillars to get linked with each other. A zero value " +"will prohibit pillar cascading." +msgstr "" +"The max distance of two pillars to get linked with each other. A zero value " +"will prohibit pillar cascading." + +#: src/libslic3r/PrintConfig.cpp:2485 msgid "Object elevation" msgstr "Object elevation" -#: src/libslic3r/PrintConfig.cpp:2595 +#: src/libslic3r/PrintConfig.cpp:2487 msgid "How much the supports should lift up the supported object." msgstr "How much the supports should lift up the supported object." -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "Density on horizontal surfaces" +#: src/libslic3r/PrintConfig.cpp:2495 +msgid "Support points density" +msgstr "Support points density" -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." -msgstr "" -"How many support points (approximately) should be placed on horizontal " -"surface." +#: src/libslic3r/PrintConfig.cpp:2497 +msgid "This is a relative measure of support points density." +msgstr "This is a relative measure of support points density." -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "points per square dm" +#: src/libslic3r/PrintConfig.cpp:2503 +msgid "Minimal distance of the support points" +msgstr "Minimal distance of the support points" -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "Density on surfaces at 45 degrees" +#: src/libslic3r/PrintConfig.cpp:2505 +msgid "No support points will be placed closer than this threshold." +msgstr "No support points will be placed closer than this threshold." -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "Minimal support point height" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" -"No support points will be placed lower than this value from the bottom." - -#: src/libslic3r/PrintConfig.cpp:2629 +#: src/libslic3r/PrintConfig.cpp:2511 msgid "Use pad" msgstr "Use pad" -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2513 msgid "Add a pad underneath the supported model" msgstr "Add a pad underneath the supported model" -#: src/libslic3r/PrintConfig.cpp:2636 +#: src/libslic3r/PrintConfig.cpp:2518 msgid "Pad wall thickness" msgstr "Pad wall thickness" -#: src/libslic3r/PrintConfig.cpp:2645 +#: src/libslic3r/PrintConfig.cpp:2520 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "The thickness of the pad and its optional cavity walls." + +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Pad wall height" msgstr "Pad wall height" -#: src/libslic3r/PrintConfig.cpp:2654 +#: src/libslic3r/PrintConfig.cpp:2529 +msgid "Defines the cavity depth. Set to zero to disable the cavity." +msgstr "Defines the cavity depth. Set to zero to disable the cavity." + +#: src/libslic3r/PrintConfig.cpp:2539 msgid "Max merge distance" msgstr "Max merge distance" -#: src/libslic3r/PrintConfig.cpp:2663 +#: src/libslic3r/PrintConfig.cpp:2541 +msgid "" +"Some objects can get along with a few smaller pads instead of a single big " +"one. This parameter defines how far the center of two smaller pads should " +"be. If theyare closer, they will get merged into one pad." +msgstr "" +"Some objects can get along with a few smaller pads instead of a single big " +"one. This parameter defines how far the center of two smaller pads should " +"be. If theyare closer, they will get merged into one pad." + +#: src/libslic3r/PrintConfig.cpp:2552 msgid "Pad edge radius" msgstr "Pad edge radius" -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "Cut model at the given Z." +#: src/libslic3r/PrintConfig.cpp:2561 +msgid "Pad wall slope" +msgstr "Pad wall slope" -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "Dont arrange" - -#: src/libslic3r/PrintConfig.cpp:3023 +#: src/libslic3r/PrintConfig.cpp:2563 msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." +"The slope of the pad wall relative to the bed plane. 90 degrees means " +"straight walls." msgstr "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." +"The slope of the pad wall relative to the bed plane. 90 degrees means " +"straight walls." -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "User data directory" +#: src/libslic3r/PrintConfig.cpp:2924 +msgid "Export SVG" +msgstr "Export SVG" -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +#: src/libslic3r/PrintConfig.cpp:2925 +msgid "Export the model(s) as OBJ." +msgstr "Export the model(s) as OBJ." -#: src/libslic3r/PrintConfig.cpp:3038 +#: src/libslic3r/PrintConfig.cpp:2936 +msgid "Export SLA" +msgstr "Export SLA" + +#: src/libslic3r/PrintConfig.cpp:2937 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "Slice the model and export SLA printing layers as PNG." + +#: src/libslic3r/PrintConfig.cpp:2942 msgid "Export 3MF" msgstr "Export 3MF" -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "Slice the model and export slices as 3MF." +#: src/libslic3r/PrintConfig.cpp:2943 +msgid "Export the model(s) as 3MF." +msgstr "Export the model(s) as 3MF." -#: src/libslic3r/PrintConfig.cpp:3044 +#: src/libslic3r/PrintConfig.cpp:2947 +msgid "Export AMF" +msgstr "Export AMF" + +#: src/libslic3r/PrintConfig.cpp:2948 +msgid "Export the model(s) as AMF." +msgstr "Export the model(s) as AMF." + +#: src/libslic3r/PrintConfig.cpp:2952 +msgid "Export STL" +msgstr "Export STL" + +#: src/libslic3r/PrintConfig.cpp:2953 +msgid "Export the model(s) as STL." +msgstr "Export the model(s) as STL." + +#: src/libslic3r/PrintConfig.cpp:2958 +msgid "Slice the model and export toolpaths as G-code." +msgstr "Slice the model and export toolpaths as G-code." + +#: src/libslic3r/PrintConfig.cpp:2963 msgid "Slice" msgstr "Slice" -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "Slice the model and export gcode." +#: src/libslic3r/PrintConfig.cpp:2964 +msgid "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." +msgstr "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." -#: src/libslic3r/PrintConfig.cpp:3050 +#: src/libslic3r/PrintConfig.cpp:2969 msgid "Help" msgstr "Help" -#: src/libslic3r/PrintConfig.cpp:3051 +#: src/libslic3r/PrintConfig.cpp:2970 msgid "Show this help." msgstr "Show this help." -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "Use GUI" +#: src/libslic3r/PrintConfig.cpp:2975 +msgid "Help (FFF options)" +msgstr "Help (FFF options)" -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" +#: src/libslic3r/PrintConfig.cpp:2976 +msgid "Show the full list of print/G-code configuration options." +msgstr "Show the full list of print/G-code configuration options." -#: src/libslic3r/PrintConfig.cpp:3063 +#: src/libslic3r/PrintConfig.cpp:2980 +msgid "Help (SLA options)" +msgstr "Help (SLA options)" + +#: src/libslic3r/PrintConfig.cpp:2981 +msgid "Show the full list of SLA print configuration options." +msgstr "Show the full list of SLA print configuration options." + +#: src/libslic3r/PrintConfig.cpp:2985 msgid "Output Model Info" msgstr "Output Model Info" -#: src/libslic3r/PrintConfig.cpp:3064 +#: src/libslic3r/PrintConfig.cpp:2986 msgid "Write information about the model to the console." msgstr "Write information about the model to the console." -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "Load config file" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "Do not use GUI" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "Output File" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "Rotation angle around the Z axis in degrees (0-360, default: 0)." - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "Rotate around X" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "Rotation angle around the X axis in degrees (0-360, default: 0)." - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "Rotate around Y" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "Rotation angle around the Y axis in degrees (0-360, default: 0)." - -#: src/libslic3r/PrintConfig.cpp:3105 +#: src/libslic3r/PrintConfig.cpp:2990 msgid "Save config file" msgstr "Save config file" -#: src/libslic3r/PrintConfig.cpp:3106 +#: src/libslic3r/PrintConfig.cpp:2991 msgid "Save configuration to the specified file." msgstr "Save configuration to the specified file." +#: src/libslic3r/PrintConfig.cpp:3001 +msgid "Align XY" +msgstr "Align XY" + +#: src/libslic3r/PrintConfig.cpp:3002 +msgid "Align the model to the given point." +msgstr "Align the model to the given point." + +#: src/libslic3r/PrintConfig.cpp:3007 +msgid "Cut model at the given Z." +msgstr "Cut model at the given Z." + +#: src/libslic3r/PrintConfig.cpp:3028 +msgid "Center" +msgstr "Center" + +#: src/libslic3r/PrintConfig.cpp:3029 +msgid "Center the print around the given center." +msgstr "Center the print around the given center." + +#: src/libslic3r/PrintConfig.cpp:3033 +msgid "Don't arrange" +msgstr "Don't arrange" + +#: src/libslic3r/PrintConfig.cpp:3034 +msgid "" +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." +msgstr "" +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." + +#: src/libslic3r/PrintConfig.cpp:3037 +msgid "Duplicate" +msgstr "Duplicate" + +#: src/libslic3r/PrintConfig.cpp:3038 +msgid "Multiply copies by this factor." +msgstr "Multiply copies by this factor." + +#: src/libslic3r/PrintConfig.cpp:3042 +msgid "Duplicate by grid" +msgstr "Duplicate by grid" + +#: src/libslic3r/PrintConfig.cpp:3043 +msgid "Multiply copies by creating a grid." +msgstr "Multiply copies by creating a grid." + +#: src/libslic3r/PrintConfig.cpp:3046 +msgid "Merge" +msgstr "Merge" + +#: src/libslic3r/PrintConfig.cpp:3047 +msgid "" +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." +msgstr "" +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." + +#: src/libslic3r/PrintConfig.cpp:3052 +msgid "" +"Try to repair any non-manifold meshes (this option is implicitly added " +"whenever we need to slice the model to perform the requested action)." +msgstr "" +"Try to repair any non-manifold meshes (this option is implicitly added " +"whenever we need to slice the model to perform the requested action)." + +#: src/libslic3r/PrintConfig.cpp:3056 +msgid "Rotation angle around the Z axis in degrees." +msgstr "Rotation angle around the Z axis in degrees." + +#: src/libslic3r/PrintConfig.cpp:3060 +msgid "Rotate around X" +msgstr "Rotate around X" + +#: src/libslic3r/PrintConfig.cpp:3061 +msgid "Rotation angle around the X axis in degrees." +msgstr "Rotation angle around the X axis in degrees." + +#: src/libslic3r/PrintConfig.cpp:3065 +msgid "Rotate around Y" +msgstr "Rotate around Y" + +#: src/libslic3r/PrintConfig.cpp:3066 +msgid "Rotation angle around the Y axis in degrees." +msgstr "Rotation angle around the Y axis in degrees." + +#: src/libslic3r/PrintConfig.cpp:3071 +msgid "Scaling factor or percentage." +msgstr "Scaling factor or percentage." + +#: src/libslic3r/PrintConfig.cpp:3076 +msgid "" +"Detect unconnected parts in the given model(s) and split them into separate " +"objects." +msgstr "" +"Detect unconnected parts in the given model(s) and split them into separate " +"objects." + +#: src/libslic3r/PrintConfig.cpp:3079 +msgid "Scale to Fit" +msgstr "Scale to Fit" + +#: src/libslic3r/PrintConfig.cpp:3080 +msgid "Scale to fit the given volume." +msgstr "Scale to fit the given volume." + +#: src/libslic3r/PrintConfig.cpp:3089 +msgid "Ignore non-existent config files" +msgstr "Ignore non-existent config files" + +#: src/libslic3r/PrintConfig.cpp:3090 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "Do not fail if a file supplied to --load does not exist." + +#: src/libslic3r/PrintConfig.cpp:3093 +msgid "Load config file" +msgstr "Load config file" + +#: src/libslic3r/PrintConfig.cpp:3094 +msgid "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." +msgstr "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." + +#: src/libslic3r/PrintConfig.cpp:3097 +msgid "Output File" +msgstr "Output File" + +#: src/libslic3r/PrintConfig.cpp:3098 +msgid "" +"The file where the output will be written (if not specified, it will be " +"based on the input file)." +msgstr "" +"The file where the output will be written (if not specified, it will be " +"based on the input file)." + +#: src/libslic3r/PrintConfig.cpp:3108 +msgid "Data directory" +msgstr "Data directory" + +#: src/libslic3r/PrintConfig.cpp:3109 +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." + #: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "Scaling factor (default: 1)." +msgid "Logging level" +msgstr "Logging level" -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "Print center" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "Center the print around the given center (default: 100, 100)." +#: src/libslic3r/PrintConfig.cpp:3113 +msgid "" +"Messages with severity lower or eqal to the loglevel will be printed out. 0:" +"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" +msgstr "" +"Messages with severity lower or eqal to the loglevel will be printed out. 0:" +"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" #: src/libslic3r/GCode/PreviewData.cpp:176 msgid "Mixed" diff --git a/resources/localization/en_US/Slic3rPE.mo b/resources/localization/en_US/Slic3rPE.mo deleted file mode 100644 index 6295b97d2..000000000 Binary files a/resources/localization/en_US/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/es/Slic3rPE.mo b/resources/localization/es/Slic3rPE.mo deleted file mode 100644 index 1e95d9289..000000000 Binary files a/resources/localization/es/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/es/Slic3rPE_es.po b/resources/localization/es/Slic3rPE_es.po deleted file mode 100644 index 781162240..000000000 --- a/resources/localization/es/Slic3rPE_es.po +++ /dev/null @@ -1,7054 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.8\n" - -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" -msgstr "Acerca de Slic3r" - -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 -msgid "Version" -msgstr "Versión" - -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "Aspecto" - -#: src/slic3r/GUI/BedShapeDialog.cpp:50 -msgid "Rectangular" -msgstr "Rectangular" - -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 -msgid "Size" -msgstr "Tamaño" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -msgid "Size in X and Y of the rectangular plate." -msgstr "Tamaño en X e Y de la placa rectangular." - -#: src/slic3r/GUI/BedShapeDialog.cpp:61 -msgid "Origin" -msgstr "Origen" - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" -"Distancia de la coordenada del código G de 0,0 de la esquina frontal " -"izquierda del rectángulo." - -#: src/slic3r/GUI/BedShapeDialog.cpp:66 -msgid "Circular" -msgstr "Circular" - -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 -msgid "mm" -msgstr "mm" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "Diámetro" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Diámetro de la base de impresión. Se supone que el origen (0,0) está ubicado " -"en el centro." - -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "Personalizado" - -#: src/slic3r/GUI/BedShapeDialog.cpp:79 -msgid "Load shape from STL..." -msgstr "" - -#: src/slic3r/GUI/BedShapeDialog.cpp:125 -msgid "Settings" -msgstr "Ajustes" - -#: src/slic3r/GUI/BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" -"Escoja un archivo para importar la forma de la base de impresión (STL/OBJ/" -"AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " -msgstr "¡Error! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "El archivo seleccionado no contiene geometría." - -#: src/slic3r/GUI/BedShapeDialog.cpp:328 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"El archivo seleccionado contiene varias áreas disjuntas. Esto no es " -"compatible." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape" -msgstr "Forma de la base de impresión" - -#: src/slic3r/GUI/BonjourDialog.cpp:54 -msgid "Network lookup" -msgstr "Búsqueda en la red" - -#: src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Address" -msgstr "Dirección" - -#: src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Hostname" -msgstr "Nombre del equipo" - -#: src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "Service name" -msgstr "Nombre del servicio" - -#: src/slic3r/GUI/BonjourDialog.cpp:70 -msgid "OctoPrint version" -msgstr "Versión de OctoPrint" - -#: src/slic3r/GUI/BonjourDialog.cpp:188 -msgid "Searching for devices" -msgstr "Buscando dispositivos" - -#: src/slic3r/GUI/BonjourDialog.cpp:195 -msgid "Finished" -msgstr "Terminado" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "Descripción de los botones y de los colores del texto" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "El valor es el mismo que el del sistema" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" -msgstr "" -"El valor ha cambiado y ya no es igual al valor del sistema o al último valor " -"guardado" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 -msgid "Upgrade" -msgstr "Actualización" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 -msgid "Downgrade" -msgstr "Volver a una versión anterior" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 -msgid "Before roll back" -msgstr "Antes de volver atrás" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 -msgid "User" -msgstr "Usuario" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 -msgid "Unknown" -msgstr "Desconocido" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "Activo: " - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "versión de Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" -msgstr "imprimir" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "filaments" -msgstr "filamentos" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 -msgid "printer" -msgstr "impresora" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 -msgid "vendor" -msgstr "fabricante" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "version" -msgstr "versión" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "min slic3r version" -msgstr "mínima versión de Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "max slic3r version" -msgstr "versión máxima de slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "model" -msgstr "modelo" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "variants" -msgstr "variantes" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" -msgstr "Incompatible con este Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 -msgid "Activate" -msgstr "Activar" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 -msgid "Configuration Snapshots" -msgstr "Instantáneas de la Configuración" - -#: src/slic3r/GUI/ConfigWizard.cpp:92 -msgid "nozzle" -msgstr "boquilla" - -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "por defecto" - -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Selecciona todo" - -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "No seleccionar ninguno" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Bienvenido a Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -msgid "Welcome" -msgstr "Bienvenido" - -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 -#, c-format -msgid "Run %s" -msgstr "Ejecutar %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:234 -#, c-format -msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -msgstr "" -"Hola, bienvenido a Slic3r Prusa Edition! Este %s te ayuda con la " -"configuración inicial; sólo unos pocos ajustes y estarás preparado para " -"imprimir." - -#: src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" -msgstr "" -"Eliminar perfiles de usuario - instalar desde cero (se realizará una " -"instantánea con anterioridad)" - -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "Otras marcas" - -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "Configuración personalizada" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Automatic updates" -msgstr "Actualizaciones automáticas" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Updates" -msgstr "Actualizaciones" - -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Comprueba si hay actualizaciones de la aplicación" - -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 -msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -msgstr "" -"Si está activado, Slic3r comprueba si hay nuevas versiones de Slic3r PE en " -"la red. Cuando hay disponible una nueva versión se muestra una notificación " -"al iniciar la aplicación (nunca durante el uso del programa). Esto es sólo " -"un mecanismo de notificación, sin que se realice una instalación automática." - -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Actualiza los ajustes de fábrica automáticamente" - -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 -msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." -msgstr "" -"Si está activado, Slic3r descargará actualizaciones de los ajustes del " -"sistema mientras lo usamos Estas actualizaciones se descargan a una " -"ubicación temporal. Cuando hay un nuevo ajuste disponible, este se podrá " -"incorporar y usar cuando la aplicación se vuelva a iniciar." - -#: src/slic3r/GUI/ConfigWizard.cpp:308 -msgid "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." -msgstr "" -"Las actualizaciones nunca se realizan sin el consentimiento del usuario y " -"nunca sobre-escriben ajustes personalizados del usuario." - -#: src/slic3r/GUI/ConfigWizard.cpp:313 -msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." -msgstr "" -"Además se realizará una instantánea de toda la configuración antes de " -"aplicar una actualización." - -#: src/slic3r/GUI/ConfigWizard.cpp:320 -msgid "Other Vendors" -msgstr "Otras Marcas" - -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Escoge otro fabricante soportado por Slic3r PE:" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 -msgid "Firmware Type" -msgstr "Tipo de Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 -msgid "Firmware" -msgstr "Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:385 -msgid "Choose the type of firmware used by your printer." -msgstr "Selecciona el tipo de firmware que usa tu impresora." - -#: src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape and Size" -msgstr "Tamaño y forma de la base" - -#: src/slic3r/GUI/ConfigWizard.cpp:422 -msgid "Set the shape of your printer's bed." -msgstr "Define la forma de la base de impresión de tu impresora." - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Filament and Nozzle Diameters" -msgstr "Filamento y diámetros de boquilla" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Print Diameters" -msgstr "Diámetros de impresión" - -#: src/slic3r/GUI/ConfigWizard.cpp:452 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Introduce el diámetro de la boquilla del fusor de tu impresora." - -#: src/slic3r/GUI/ConfigWizard.cpp:455 -msgid "Nozzle Diameter:" -msgstr "Diámetro de la boquilla:" - -#: src/slic3r/GUI/ConfigWizard.cpp:465 -msgid "Enter the diameter of your filament." -msgstr "Introduce el diámetro de tu filamento." - -#: src/slic3r/GUI/ConfigWizard.cpp:466 -msgid "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." -msgstr "" -"Se necesita buena precisión, así que usa un calibre y realiza varias medidas " -"a lo largo del filamento, luego calcula la media." - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Filament Diameter:" -msgstr "Diámetro del filamento:" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Extruder and Bed Temperatures" -msgstr "Temperaturas del Extrusor y de la Base" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Temperatures" -msgstr "Temperaturas" - -#: src/slic3r/GUI/ConfigWizard.cpp:503 -msgid "Enter the temperature needed for extruding your filament." -msgstr "Introduce la temperatura necesaria para extruir tu filamento." - -#: src/slic3r/GUI/ConfigWizard.cpp:504 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "" -"Una buena aproximación es de 160 a 230 °C para PLA y de 215 a 250 °C para " -"ABS." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Extrusion Temperature:" -msgstr "Temperatura de Extrusión:" - -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 -msgid "°C" -msgstr "°C" - -#: src/slic3r/GUI/ConfigWizard.cpp:517 -msgid "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." -msgstr "" -"Introduce la temperatura de la base necesaria para que adhiera el filamento " -"a la base calefactable." - -#: src/slic3r/GUI/ConfigWizard.cpp:518 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"Una buena aproximación son unos 60 °C para PLA y 110 °C para ABS. Deja el " -"valor a cero si no tienes base calefactable." - -#: src/slic3r/GUI/ConfigWizard.cpp:521 -msgid "Bed Temperature:" -msgstr "Temperatura de la base:" - -#: src/slic3r/GUI/ConfigWizard.cpp:833 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:834 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:835 -msgid "&Finish" -msgstr "&Terminar" - -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" -msgstr "Asistente de configuración" - -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" -msgstr "&Asistente de configuración" - -#: src/slic3r/GUI/ConfigWizard.cpp:909 -msgid "Configuration Assistant" -msgstr "Asistente de Configuración" - -#: src/slic3r/GUI/ConfigWizard.cpp:910 -msgid "Configuration &Assistant" -msgstr "&Asistente de configuración" - -#: src/slic3r/GUI/Field.cpp:109 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:140 -#, c-format -msgid "%s doesn't support percentage" -msgstr "%s no permite porcentajes" - -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:153 -msgid "Input value is out of range" -msgstr "El valor introducido está fuera de rango" - -#: src/slic3r/GUI/Field.cpp:176 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:179 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:133 -msgid "Flash!" -msgstr "Flash!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "Cancelar" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Flasheo en curso. ¡Por favor no desconecte la impresora!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:245 -msgid "Flashing succeeded!" -msgstr "¡Exito al flashear!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:246 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "Flasheo fallido. Por favor comprueba el log de avrdude." - -#: src/slic3r/GUI/FirmwareDialog.cpp:247 -msgid "Flashing cancelled." -msgstr "Flasheo cancelado." - -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 -msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:581 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:690 -msgid "Firmware flasher" -msgstr "Flasheador de firmware" - -#: src/slic3r/GUI/FirmwareDialog.cpp:712 -msgid "Firmware image:" -msgstr "Imagen del firmware:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:716 -msgid "Serial port:" -msgstr "Puerto serie:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:718 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:719 -msgid "Rescan" -msgstr "Rescanear" - -#: src/slic3r/GUI/FirmwareDialog.cpp:726 -msgid "Progress:" -msgstr "Progreso:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:729 -msgid "Status:" -msgstr "Estado:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:730 -msgid "Ready" -msgstr "Listo" - -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "Avanzado: salida del log avrdude" - -#: src/slic3r/GUI/FirmwareDialog.cpp:809 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"¿Estas seguro de cancelar el flaseo del firmware?\n" -"¡Esto podría dejar tu impresora en un estado inusable!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:810 -msgid "Confirmation" -msgstr "Confirmación" - -#: src/slic3r/GUI/FirmwareDialog.cpp:813 -msgid "Cancelling..." -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "Girar" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "Escalar" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 -msgid "Rotate lower part upwards" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 -msgid "Perform cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2276 -msgid "Cut object:" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 -msgid "Cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2466 -msgid "Keep upper part" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2467 -msgid "Keep lower part" -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "Date cuenta" - -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "Intento de liberar un escalar no referenciado" - -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 -msgid "Warning" -msgstr "Peligro" - -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Escoja uno o mas archivos (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." -msgstr "" -"La lista de nombres de idioma e identificadores debería tener el mismo " -"tamaño." - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" -msgstr "Seleccione el idioma" - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" -msgstr "Idioma" - -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" -msgstr "Por defecto" - -# xs/src/slic3r/GUI/GUI.cpp:402 -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" -msgstr "Instantáneas de la &Configuración" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" -msgstr "Inspeccionar / activar instantáneas de configuración" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" -msgstr "Hacer una In&stantánea de la Configuración" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" -msgstr "Captura una instantánea de configuración" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" -msgstr "&Preferencias" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Preferencias de la aplicación" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" -msgstr "Avanzado" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "Cambiar el &Idioma de la Aplicación" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "Flashear &firmware de la impresora" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Cargar una imagen de firmware a una impresora basada en Arduino" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "Haciendo una instantánea de la configuración" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "Nombre de la instantánea" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "El programa se reiniciará" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "¡Atención!" - -#: src/slic3r/GUI/GUI_App.cpp:691 -msgid "&Configuration" -msgstr "&Configuración" - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " -msgstr "Tienes cambios sin guardar " - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" -msgstr ". ¿Descartar los cambios y continuar de todos modos?" - -#: src/slic3r/GUI/GUI_App.cpp:712 -msgid "Unsaved Presets" -msgstr "Ajustes iniciales no guardados" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Layers and Perimeters" -msgstr "Capas y Perímetros" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 -msgid "Infill" -msgstr "Relleno" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "Material de soporte" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "Velocidad" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 -msgid "Extruders" -msgstr "Extrusores" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 -msgid "Extrusion Width" -msgstr "Ancho de Extrusión" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 -msgid "Name" -msgstr "Nombre" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 -msgid "Extruder" -msgstr "Extrusor" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "" -"El objeto seleccionado no se pudo dividir porque contiene solo una parte." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 -msgid "The supplied name is not valid;" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 -msgid "the following characters are not allowed:" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 -msgid "View" -msgstr "Vista" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Tipo de función" - -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 -msgid "Height" -msgstr "Altura" - -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 -msgid "Width" -msgstr "Ancho" - -#: src/slic3r/GUI/GUI_Preview.cpp:242 -msgid "Volumetric flow rate" -msgstr "Tasa de caudal volumétrico" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "Herramienta" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:247 -msgid "Show" -msgstr "Mostrar" - -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 -msgid "Feature types" -msgstr "Tipos de funciones" - -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Perímetro" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "Perímetro externo" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "Perímetro de voladizos" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "Relleno interno" - -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Relleno sólido" - -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Relleno sólido superior" - -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "Relleno de puente" - -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "Relleno" - -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "Falda" - -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Interfaz del material de soporte" - -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "Torre de limpieza" - -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 -msgid "Travel" -msgstr "Recorrido" - -#: src/slic3r/GUI/GUI_Preview.cpp:270 -msgid "Retractions" -msgstr "Retracciones" - -#: src/slic3r/GUI/GUI_Preview.cpp:271 -msgid "Unretractions" -msgstr "Desretracciones" - -#: src/slic3r/GUI/GUI_Preview.cpp:272 -msgid "Shells" -msgstr "Carcasas" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" -msgstr "Exportar código G" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" -msgstr "Repetir el último laminado rápido" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" -msgstr "Seleccionar la pestaña Ajustes de la base" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "Seleccionar la pestaña Ajustes de impresión" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" -msgstr "Seleccionar la pestaña Ajustes de Filamento" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "Selecccionar la pestaña Ajustes de impresora" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Preferencias" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" -msgstr "Organiza" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" -msgstr "Borrar todo" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr "" -" - Recuerda comprobar si hay actualizaciones en http://github.com/prusa3d/" -"slic3r/releases" - -#: src/slic3r/GUI/MainFrame.cpp:130 -msgid "Plater" -msgstr "Plataforma" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "&Abrir" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Load exported configuration file" -msgstr "Cargar archivo de configuración exportado" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Load presets from a bundle" -msgstr "Cargar preajustes de un paquete" - -#: src/slic3r/GUI/MainFrame.cpp:256 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export &G-code" -msgstr "Exportar código &G" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export current plate as G-code" -msgstr "Exportar plataforma actual como código G" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export plate as &STL" -msgstr "Exportar plataforma como &STL" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export current plate as STL" -msgstr "Exportar plataforma actual como STL" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export plate as &AMF" -msgstr "Exportar plataforma como &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export current plate as AMF" -msgstr "Exportar plataforma actual como AMF" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export &Config" -msgstr "Exportar A&juste" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export current configuration to file" -msgstr "Exportar la configuración actual al archivo" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export Config &Bundle" -msgstr "Exportar &Conjunto de Ajustes" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export all presets to file" -msgstr "Exportar todos los preajustes al archivo" - -#: src/slic3r/GUI/MainFrame.cpp:271 -msgid "&Export" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Slice a file into a G-code" -msgstr "Laminar un archivo en un código G" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Quick Slice and Save As" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Slice a file into a G-code, save as" -msgstr "Laminar un archivo en un código G, guárdar como" - -#: src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat Last Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "(Re)Slice &Now" -msgstr "(Re)Laminar A&hora" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "Start new slicing process" -msgstr "Comenzar un nuevo proceso de laminado" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "&Repair STL file" -msgstr "&Reparar el archivo STL" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "Automatically repair an STL file" -msgstr "Archivo STL reparado automáticamente" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "&Quit" -msgstr "&Salir" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" -msgstr "Salir de Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "&Select all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Delete &all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "&Plater Tab" -msgstr "La pestaña Ajustes de la &base" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "Show the plater" -msgstr "Mostrar la base" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "P&rint Settings Tab" -msgstr "La pestaña Ajustes de im&presión" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "Show the print settings" -msgstr "Mostrar los ajustes de impresión" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "&Filament Settings Tab" -msgstr "La pestaña Ajustes de &Filamento" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "Show the filament settings" -msgstr "Mostrar los ajustes de filamento" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Print&er Settings Tab" -msgstr "La pestaña Ajustes de imp&resora" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Show the printer settings" -msgstr "Mostrar la configuración de la impresora" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "Is&o" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "Vista Iso" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "&Superior" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "Vista superior" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "&Inferior" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "Vista inferior" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "&Frontal" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "Vista frontal" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "&Trasera" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "Vista trasera" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "Iz&quierda" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "Vista izquierda" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "De&recha" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "Vista derecha" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "Controla&dores de Prusa 3D" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "" -"Abrir la página de descarga de los controladores Prusa3D en su navegador" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "&Lanzamientos de la Edición Prusa" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Abrir la página de lanzamientos de Prusa Edition en su navegador" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "&Website de Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "Abrir el sitio web de Slic3r en su navegador" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "&Manual de Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "Abrir el manual de Slic3r en su navegador" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "&Información del Sistema" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "Mostrar la información del sistema" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "Mostrar carpeta &Configuración" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "Mostrar carpeta de configuración de usuario (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "Informar de un &problema" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Informar de un problema de Slic3r Edición Prusa" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "&Acerca de Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "Mostrar Acerca de" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "&Archivo" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" -msgstr "Ve&ntana" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" -msgstr "&Ver" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" -msgstr "A&yuda" - -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Elija un archivo para laminar (STL / OBJ / AMF / 3MF / PRUSA):" - -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." -msgstr "Ningún archivo previamente laminado." - -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" -msgstr "Error" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "Archivo anterior laminado (" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." -msgstr ") no encontrado." - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "File Not Found" -msgstr "Archivo no encontrado" - -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " -msgstr "Guardar " - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "SVG" -msgstr "SVG" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "G-code" -msgstr "Código G" - -# Context: L('Save ') . ($params{export_svg} ? L('SVG') : L('G-code')) . L(' file as:'), e.g. "Save G-Code file as:" -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr " archivo como:" - -#: src/slic3r/GUI/MainFrame.cpp:548 -msgid "Save zip file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Slicing" -msgstr "Laminando" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " -msgstr "Procesamiento " - -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid " was successfully sliced." -msgstr " fue laminado con éxito." - -#: src/slic3r/GUI/MainFrame.cpp:585 -msgid "Slicing Done!" -msgstr "¡Laminado realizado!" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Select the STL file to repair:" -msgstr "Seleccione el archivo STL para reparar:" - -#: src/slic3r/GUI/MainFrame.cpp:614 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "" -"Guardar archivo OBJ (menos propenso a errores de coordinación que STL) como:" - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Your file was repaired." -msgstr "Tu fichero fue reparado." - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Repair" -msgstr "Reparar" - -#: src/slic3r/GUI/MainFrame.cpp:643 -msgid "Save configuration as:" -msgstr "Guardar la configuración como:" - -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 -msgid "Select configuration to load:" -msgstr "Seleccione la configuración para cargar:" - -#: src/slic3r/GUI/MainFrame.cpp:700 -msgid "Save presets bundle as:" -msgstr "Guarde el conjunto de ajustes iniciales como:" - -#: src/slic3r/GUI/MainFrame.cpp:751 -#, c-format -msgid "%d presets successfully imported." -msgstr "%d ajustes iniciales importados con éxito." - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" -msgstr "Error de Slic3r" - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" -msgstr "Slic3r ha encontrado un error" - -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/Plater.cpp:126 -msgid "Volume" -msgstr "Volumen" - -#: src/slic3r/GUI/Plater.cpp:127 -msgid "Facets" -msgstr "Facetas" - -#: src/slic3r/GUI/Plater.cpp:128 -msgid "Materials" -msgstr "Materiales" - -#: src/slic3r/GUI/Plater.cpp:131 -msgid "Manifold" -msgstr "Manifold" - -#: src/slic3r/GUI/Plater.cpp:174 -msgid "Sliced Info" -msgstr "Información del laminado" - -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 -msgid "Used Filament (m)" -msgstr "Filamento usado (m)" - -#: src/slic3r/GUI/Plater.cpp:194 -msgid "Used Filament (mm³)" -msgstr "Filamento usado (mm³)" - -#: src/slic3r/GUI/Plater.cpp:195 -msgid "Used Filament (g)" -msgstr "Filamento usado (g)" - -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 -msgid "Cost" -msgstr "Coste" - -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 -msgid "Estimated printing time" -msgstr "Tiempo estimado de impresión" - -#: src/slic3r/GUI/Plater.cpp:198 -msgid "Number of tool changes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "Soporte" - -#: src/slic3r/GUI/Plater.cpp:364 -msgid "Select what kind of support do you need" -msgstr "Selecciona qué clase de soporte necesitas" - -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Ninguno" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 -msgid "Support on build plate only" -msgstr "Soporte en la base solamente" - -#: src/slic3r/GUI/Plater.cpp:367 -msgid "Everywhere" -msgstr "En todos los sitios" - -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 -msgid "Brim" -msgstr "Margen" - -#: src/slic3r/GUI/Plater.cpp:381 -msgid "" -"This flag enables the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Esta opción activa el margen que se imprimirá alrededor del objeto en la " -"primera capa." - -#: src/slic3r/GUI/Plater.cpp:390 -msgid "Purging volumes" -msgstr "Volúmenes de purga" - -#: src/slic3r/GUI/Plater.cpp:556 -msgid "Print settings" -msgstr "Configuración de impresión" - -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 -msgid "Filament" -msgstr "Filamento" - -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:560 -msgid "Printer" -msgstr "Impresora" - -#: src/slic3r/GUI/Plater.cpp:588 -msgid "Send to printer" -msgstr "Enviar a la impresora" - -#: src/slic3r/GUI/Plater.cpp:607 -msgid "Slice now" -msgstr "Laminar ahora" - -#: src/slic3r/GUI/Plater.cpp:787 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d pieles)" - -#: src/slic3r/GUI/Plater.cpp:792 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Reparados automáticamente (%d errores)" - -#: src/slic3r/GUI/Plater.cpp:795 -#, c-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" -"%d facetas problemáticas, %d aristas corregidas, %d facetas eliminadas, %d " -"facetas añadidas, %d facetas invertidas, %d aristas del revés" - -#: src/slic3r/GUI/Plater.cpp:805 -msgid "Yes" -msgstr "Sí" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:855 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1304 -msgid "Loading" -msgstr "Cargando" - -#: src/slic3r/GUI/Plater.cpp:1314 -#, c-format -msgid "Processing input file %s\n" -msgstr "Procesando archivo de entrada %s\n" - -#: src/slic3r/GUI/Plater.cpp:1366 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Este archivo contiene varios objetos posicionados en múltiples alturas. En " -"lugar de considerarlos como objetos múltiples, ¿debería considerar\n" -" este archivo como un único objeto que tiene varias partes?\n" - -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 -msgid "Multi-part object detected" -msgstr "Objeto de piezas múltiples detectado" - -#: src/slic3r/GUI/Plater.cpp:1388 -#, c-format -msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1408 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Se cargaron varios objetos para una impresora de varios materiales.\n" -"En lugar de considerarlos como objetos múltiples, ¿debería considerar\n" -"estos archivos para formar un solo objeto que tiene varias partes?\n" - -#: src/slic3r/GUI/Plater.cpp:1424 -msgid "Loaded" -msgstr "Cargado" - -#: src/slic3r/GUI/Plater.cpp:1492 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" -"Tu pieza parece demasiado grande, así que se ha escalado automáticamente " -"para que pueda caber en la base de impresión." - -#: src/slic3r/GUI/Plater.cpp:1493 -msgid "Object too large?" -msgstr "Objeto demasiado grande?" - -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "Exporta la configuración de impresión" - -#: src/slic3r/GUI/Plater.cpp:1538 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1702 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1705 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1736 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1740 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1782 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1787 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1797 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1818 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" -"El objeto seleccionado no se puede dividir porque contiene más de un " -"volumen / material." - -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "Cancelando" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "Otro trabajo de exportación está aún en marcha." - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "Error al exportar" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "Borra" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "Eliminar el objeto seleccionado" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Increase copies" -msgstr "Aumentar copias" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Place one more copy of the selected object" -msgstr "Colocar una copia más del objeto seleccionado" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Decrease copies" -msgstr "Reducir copias" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Remove one copy of the selected object" -msgstr "Eliminar una copia del objeto seleccionado" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Set number of copies" -msgstr "Establecer el número de copias" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Change the number of copies of the selected object" -msgstr "Cambiar el número de copias del objeto seleccionado" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload from Disk" -msgstr "Recargar desde el disco" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload the selected file from Disk" -msgstr "Recargar el archivo seleccionado del disco" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "Exportar este único objeto como archivo STL" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Along X axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Mirror the selected object along the X axis" -msgstr "Duplicar el objeto seleccionado a lo largo del eje X" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Along Y axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Mirror the selected object along the Y axis" -msgstr "Duplicar el objeto seleccionado a lo largo del eje Y" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Along Z axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Mirror the selected object along the Z axis" -msgstr "Duplicar el objeto seleccionado a lo largo del eje Z" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror" -msgstr "Duplicar" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror the selected object" -msgstr "Duplicar el objeto seleccionado" - -#: src/slic3r/GUI/Plater.cpp:2400 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 -msgid "Split the selected object into individual objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 -msgid "Split the selected object into individual sub-parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 -msgid "Split" -msgstr "Dividir" - -#: src/slic3r/GUI/Plater.cpp:2405 -msgid "Split the selected object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save G-code file as:" -msgstr "Guardar archivo Código G como:" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2845 -#, c-format -msgid "STL file exported to %s" -msgstr "Archivo STL exportado a %s" - -#: src/slic3r/GUI/Plater.cpp:2861 -#, c-format -msgid "AMF file exported to %s" -msgstr "Archivo AMF exportado a %s" - -#: src/slic3r/GUI/Plater.cpp:2864 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "Error al exportar el archivo AMF %s" - -#: src/slic3r/GUI/Plater.cpp:2891 -#, c-format -msgid "3MF file exported to %s" -msgstr "Archivo 3MF exportado a %s" - -#: src/slic3r/GUI/Plater.cpp:2894 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "Error al exportar el archivo 3MF %s" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 -msgid "General" -msgstr "General" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "Recordar el directorio de salida" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" -"Si esto está habilitado, Slic3r solicitará el último directorio de salida en " -"lugar del que contiene los archivos de entrada." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Piezas auto-centradas" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" -"Si esto está habilitado, Slic3r centrará automáticamente los objetos " -"alrededor del centro de la base de impresión." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Procesamiento en segundo plano" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" -"Si esto está habilitado, Slic3r preprocesará objetos tan pronto como se " -"carguen para ahorrar tiempo al exportar el código G." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "Suprima los ajustes iniciales \"- predeterminado -\"" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" -"Suprima los ajustes iniciales \"- predeterminado -\" en las selecciones " -"Imprimir / Filamento / Impresora una vez que haya otros ajustes " -"preestablecidos disponibles." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Mostrar impresiones incompatibles y ajustes iniciales de filamentos" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" -"Cuando está marcada, los ajustes preestablecidos de impresión y filamento se " -"muestran en el editor de ajustes preestablecidos, incluso si están marcados " -"como incompatibles con la impresora activa" - -#: src/slic3r/GUI/Preferences.cpp:90 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Usar el renderizado OpenGL 1.1" - -#: src/slic3r/GUI/Preferences.cpp:92 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" -"Si tiene problemas de procesamiento causados ​​por un controlador OpenGL 2.0 " -"defectuoso, puede intentar marcar esta casilla de verificación. Esto " -"desactivará la edición de altura de capa y el antialiasing, por lo que es " -"mejor actualizar su controlador de gráficos." - -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "Es necesario reiniciar Slic3r para hacer los cambios efectivos." - -#: src/slic3r/GUI/Preset.cpp:170 -msgid "modified" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 -msgid "System presets" -msgstr "Ajustes del sistema" - -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 -msgid "User presets" -msgstr "Ajustes de usuario" - -#: src/slic3r/GUI/Preset.cpp:1157 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" -"Si el tiempo de capa estimado está por debajo de ~ %ds, el ventilador " -"funcionará en %d %% y la velocidad de impresión se reducirá de modo que no " -"se gaste menos de %d s en esa capa (sin embargo, la velocidad nunca se " -"reducirá por debajo de %d mm/s) ." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Si el tiempo estimado de la capa es mayor, pero todavía por debajo de ~%ds, " -"el ventilador funcionará a una velocidad proporcionalmente menor entre %d%% " -"y %d%%." - -#: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"Durante las otras capas, ventilador " - -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "Ventilador " - -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "siempre funcionará al %d %% " - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "a excepción de las %d primeras capas" - -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "a excepción de la primera capa" - -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "será apagada." - -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "perímetros externos" - -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "perímetros" - -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "relleno" - -#: src/slic3r/GUI/PresetHints.cpp:181 -msgid "solid infill" -msgstr "relleno sólido" - -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "relleno sólido superior" - -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "soporte" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "interfaz de soporte" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Primera capa volumétrica" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Puente volumétrico" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "Volumétrico" - -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr " la tasa de flujo se maximiza " - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "por el máximo perfil de impresión" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "cuando se imprime " - -#: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " -msgstr " con una tasa volumétrica " - -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/seg" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " a una velocidad de filamento de %3.2f mm/s." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" -"Grosor recomendado de la pared del objeto recomendado: no disponible debido " -"a la altura de capa no válida." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "" -"Espesor de pared delgada del objeto recomendado para una altura de capa %.2f " -"y " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d líneas: %.2lf mm" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "NO EMPUJAR EN ABSOLUTO" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "Tiempo" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 -msgid "s" -msgstr "$" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "Velocidad volumétrica" - -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 -msgid "Compatible printers" -msgstr "Impresoras compatibles" - -#: src/slic3r/GUI/Tab.cpp:50 -msgid "Select the printers this profile is compatible with." -msgstr "Seleccione las impresoras con las que este perfil es compatible." - -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:56 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " -msgstr "Guardar actualmente " - -#: src/slic3r/GUI/Tab.cpp:119 -msgid "Delete this preset" -msgstr "Borra este ajuste" - -#: src/slic3r/GUI/Tab.cpp:131 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Sitúa el cursos sobre los botones para más información o haz clic en este " -"botón." - -#: src/slic3r/GUI/Tab.cpp:824 -msgid "It's a default preset." -msgstr "Es un valor por defecto." - -#: src/slic3r/GUI/Tab.cpp:825 -msgid "It's a system preset." -msgstr "Es un ajuste del sistema." - -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " -msgstr "El valor actual se ha heredado de " - -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " -msgstr "No se puede borrar ni modificar. " - -#: src/slic3r/GUI/Tab.cpp:832 -msgid "" -"Any modifications should be saved as a new preset inherited from this one. " -msgstr "" -"Cualquier modificación se almacenará como un nuevo ajuste basado en este. " - -#: src/slic3r/GUI/Tab.cpp:833 -msgid "To do that please specify a new name for the preset." -msgstr "Para hacerlo por favor especifique un nuevo nombre para esos ajustes." - -#: src/slic3r/GUI/Tab.cpp:837 -msgid "Additional information:" -msgstr "Información adicional:" - -#: src/slic3r/GUI/Tab.cpp:843 -msgid "printer model" -msgstr "modelo de impresora" - -#: src/slic3r/GUI/Tab.cpp:851 -msgid "default print profile" -msgstr "perfil de impresión por defecto" - -#: src/slic3r/GUI/Tab.cpp:854 -msgid "default filament profile" -msgstr "perfil de filamento por defecto" - -#: src/slic3r/GUI/Tab.cpp:868 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:872 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 -msgid "Layers and perimeters" -msgstr "Capas y perímetros" - -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 -msgid "Layer height" -msgstr "Altura de la capa" - -#: src/slic3r/GUI/Tab.cpp:924 -msgid "Vertical shells" -msgstr "Carcasas verticales" - -#: src/slic3r/GUI/Tab.cpp:935 -msgid "Horizontal shells" -msgstr "Carcasas horizontales" - -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 -msgid "Solid layers" -msgstr "Capas sólidas" - -#: src/slic3r/GUI/Tab.cpp:941 -msgid "Quality (slower slicing)" -msgstr "Calidad (laminado más lento)" - -#: src/slic3r/GUI/Tab.cpp:958 -msgid "Reducing printing time" -msgstr "Reduciendo el tiempo de impresión" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Skirt and brim" -msgstr "Falda y balsa" - -#: src/slic3r/GUI/Tab.cpp:987 -msgid "Raft" -msgstr "Balsa" - -#: src/slic3r/GUI/Tab.cpp:991 -msgid "Options for support material and raft" -msgstr "Opciones de material de soporte y balsa" - -#: src/slic3r/GUI/Tab.cpp:1006 -msgid "Speed for print moves" -msgstr "Velocidad para movimientos de impresión" - -#: src/slic3r/GUI/Tab.cpp:1018 -msgid "Speed for non-print moves" -msgstr "Velocidad para movimientos sin impresión" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Modifiers" -msgstr "Modificadores" - -#: src/slic3r/GUI/Tab.cpp:1024 -msgid "Acceleration control (advanced)" -msgstr "Control de aceleración (avanzado)" - -#: src/slic3r/GUI/Tab.cpp:1031 -msgid "Autospeed (advanced)" -msgstr "Velocidad automática (avanzado)" - -#: src/slic3r/GUI/Tab.cpp:1037 -msgid "Multiple Extruders" -msgstr "Múltiples Extrusores" - -#: src/slic3r/GUI/Tab.cpp:1045 -msgid "Ooze prevention" -msgstr "Prevención de goteo" - -#: src/slic3r/GUI/Tab.cpp:1062 -msgid "Extrusion width" -msgstr "Ancho de extrusión" - -#: src/slic3r/GUI/Tab.cpp:1072 -msgid "Overlap" -msgstr "Superposición" - -#: src/slic3r/GUI/Tab.cpp:1075 -msgid "Flow" -msgstr "Flujo" - -#: src/slic3r/GUI/Tab.cpp:1078 -msgid "Other" -msgstr "Otro" - -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 -msgid "Output options" -msgstr "Opciones de salida" - -#: src/slic3r/GUI/Tab.cpp:1086 -msgid "Sequential printing" -msgstr "Impresión secuencial" - -#: src/slic3r/GUI/Tab.cpp:1088 -msgid "Extruder clearance (mm)" -msgstr "Distancia libre del extrusor (mm)" - -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 -msgid "Output file" -msgstr "Archivo de salida" - -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 -msgid "Post-processing scripts" -msgstr "Scripts de postprocesamiento" - -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 -msgid "Notes" -msgstr "Notas" - -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 -msgid "Dependencies" -msgstr "Dependencias" - -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 -msgid "Profile dependencies" -msgstr "Dependencias de perfil" - -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"El modo Vaso requiere: \n" -"- un perímetro \n" -"- sin capas sólidas superiores \n" -"- densidad de relleno del 0% \n" -"- sin material de soporte \n" -"- no ensure_vertical_shell_thickness \n" -"\n" -"¿Debo ajustar esos ajustes para habilitar el modo Vaso?" - -#: src/slic3r/GUI/Tab.cpp:1168 -msgid "Spiral Vase" -msgstr "Modo Vaso" - -#: src/slic3r/GUI/Tab.cpp:1191 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"Actualmente, la Torre de Limpieza solo admite los soportes no solubles si se " -"imprimen con la extrusora actual sin activar un cambio de herramienta.\n" -"(ambos support_material_extruder y support_material_interface_extruder deben " -"configurarse en 0). \n" -"\n" -"¿Debo ajustar esos ajustes para habilitar la Torre de Limpieza?" - -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 -msgid "Wipe Tower" -msgstr "Torre de limpieza" - -#: src/slic3r/GUI/Tab.cpp:1209 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"Para que la Torre de Limpieza funcione con los soportes solubles, las capas " -"de soporte deben sincronizarse con las capas de objeto. \n" -" \n" -" ¿Debería sincronizar las capas de soporte para habilitar la Torre de " -"Limpieza?" - -#: src/slic3r/GUI/Tab.cpp:1227 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Los soportes funcionan mejor, si la siguiente característica está " -"habilitada: \n" -"- Detectar perímetros de puente\n" -"\n" -"¿Debo ajustar esas configuraciones para los soportes?" - -#: src/slic3r/GUI/Tab.cpp:1230 -msgid "Support Generator" -msgstr "Generador de soportes" - -# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n") -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "El " - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" ese patrón de relleno no está pensado para trabajar al 100% de densidad. \n" -"\n" -"¿Debería cambiar a un patrón de relleno rectilíneo?" - -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " -msgstr "Temperatura " - -#: src/slic3r/GUI/Tab.cpp:1394 -msgid "Bed" -msgstr "Base" - -#: src/slic3r/GUI/Tab.cpp:1399 -msgid "Cooling" -msgstr "Enfriamiento" - -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Enable" -msgstr "Habilitar" - -#: src/slic3r/GUI/Tab.cpp:1411 -msgid "Fan settings" -msgstr "Configuración del ventilador" - -#: src/slic3r/GUI/Tab.cpp:1412 -msgid "Fan speed" -msgstr "Velocidad del ventilador" - -#: src/slic3r/GUI/Tab.cpp:1420 -msgid "Cooling thresholds" -msgstr "Umbrales de enfriamiento" - -#: src/slic3r/GUI/Tab.cpp:1426 -msgid "Filament properties" -msgstr "Propiedades del filamento" - -#: src/slic3r/GUI/Tab.cpp:1430 -msgid "Print speed override" -msgstr "Anular la velocidad de impresión" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "" -"Parámetros del cambio de herramienta para impresoras de un único extrusor MM" - -#: src/slic3r/GUI/Tab.cpp:1455 -msgid "Ramming settings" -msgstr "Ajustes de empuje" - -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 -msgid "Custom G-code" -msgstr "Código G personalizado" - -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 -msgid "Start G-code" -msgstr "Comenzar el código G" - -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 -msgid "End G-code" -msgstr "Código G final" - -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr " Hojea " - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 -msgid "Test" -msgstr "Test" - -#: src/slic3r/GUI/Tab.cpp:1615 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 -msgid "Success!" -msgstr "¡Éxito!" - -#: src/slic3r/GUI/Tab.cpp:1636 -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"El archivo HTTPS CA es opcional. Sólo se necesita si vas a usar HTTPS con un " -"certificado auto-firmado." - -#: src/slic3r/GUI/Tab.cpp:1648 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Archivos de certificados (*.crt, *.pem)|*.crt;*.pem|Todos|*.*" - -#: src/slic3r/GUI/Tab.cpp:1649 -msgid "Open CA certificate file" -msgstr "Abrir archivo de certificado CA" - -#: src/slic3r/GUI/Tab.cpp:1676 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 -msgid "Size and coordinates" -msgstr "Tamaño y coordenadas" - -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " -msgstr " Ajuste " - -#: src/slic3r/GUI/Tab.cpp:1740 -msgid "Capabilities" -msgstr "Capacidades" - -#: src/slic3r/GUI/Tab.cpp:1745 -msgid "Number of extruders of the printer." -msgstr "Número de extrusores de la impresora." - -#: src/slic3r/GUI/Tab.cpp:1773 -msgid "USB/Serial connection" -msgstr "Conexión USB/Serial" - -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 -msgid "Serial port" -msgstr "Puerto serial" - -#: src/slic3r/GUI/Tab.cpp:1779 -msgid "Rescan serial ports" -msgstr "Vuelver a examinar los puertos serie" - -#: src/slic3r/GUI/Tab.cpp:1801 -msgid "Connection to printer works correctly." -msgstr "La conexión con la impresora funciona correctamente." - -#: src/slic3r/GUI/Tab.cpp:1804 -msgid "Connection failed." -msgstr "Conexión fallida." - -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 -msgid "Before layer change G-code" -msgstr "Código G para antes del cambio de capa" - -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 -msgid "After layer change G-code" -msgstr "Código G tras un cambio de capa" - -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 -msgid "Tool change G-code" -msgstr "Código G de cambio de herramienta" - -#: src/slic3r/GUI/Tab.cpp:1877 -msgid "Between objects G-code (for sequential printing)" -msgstr "Código G para entre objetos (para impresión secuencial)" - -#: src/slic3r/GUI/Tab.cpp:1938 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2040 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2045 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2052 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2057 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 -msgid "Single extruder MM setup" -msgstr "Ajuste para MM con un solo extrusor" - -#: src/slic3r/GUI/Tab.cpp:2104 -msgid "Single extruder multimaterial parameters" -msgstr "Parámetros multimaterial para un sólo extrusor" - -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "Extrusor %d" - -#: src/slic3r/GUI/Tab.cpp:2125 -msgid "Layer height limits" -msgstr "Límites de altura de la capa" - -#: src/slic3r/GUI/Tab.cpp:2130 -msgid "Position (for multi-extruder printers)" -msgstr "Posición (para impresoras con múltiples extrusores )" - -#: src/slic3r/GUI/Tab.cpp:2133 -msgid "Retraction" -msgstr "Retracción" - -#: src/slic3r/GUI/Tab.cpp:2136 -msgid "Only lift Z" -msgstr "Solo levantar Z" - -#: src/slic3r/GUI/Tab.cpp:2149 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" -"Retracción cuando la herramienta está desactivada (configuraciones avanzadas " -"para configuraciones de extrusores múltiples )" - -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "Previsualización" - -#: src/slic3r/GUI/Tab.cpp:2284 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"La opción Limpiar no está disponible cuando se usa el modo Retracción de " -"firmware. ¿Lo inhabilito para habilitar la Retracción de firmware?" - -#: src/slic3r/GUI/Tab.cpp:2286 -msgid "Firmware Retraction" -msgstr "Retracción del firmware" - -#: src/slic3r/GUI/Tab.cpp:2565 -#, c-format -msgid "Default preset (%s)" -msgstr "Ajustes por defecto (%s)" - -#: src/slic3r/GUI/Tab.cpp:2566 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2583 -msgid "has the following unsaved changes:" -msgstr "tiene los siguientes cambios sin guardar:" - -#: src/slic3r/GUI/Tab.cpp:2586 -msgid "is not compatible with printer" -msgstr "no es compatible con la impresora" - -#: src/slic3r/GUI/Tab.cpp:2587 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2589 -msgid "and it has the following unsaved changes:" -msgstr "y tiene los siguientes cambios sin guardar:" - -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "¿Descartar los cambios y continuar de todos modos?" - -#: src/slic3r/GUI/Tab.cpp:2593 -msgid "Unsaved Changes" -msgstr "Cambios no guardados" - -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "The supplied name is empty. It can't be saved." -msgstr "El nombre proporcionado está vacío. No se puede guardar." - -#: src/slic3r/GUI/Tab.cpp:2704 -msgid "Cannot overwrite a system profile." -msgstr "No se puede sobre-escribir un perfil del sistema." - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Cannot overwrite an external profile." -msgstr "No puedo sobre-escribir un valor externo." - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "remove" -msgstr "eliminar" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "delete" -msgstr "borra" - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " -msgstr "¿Está seguro que quiere " - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr " el ajuste inicial seleccionado?" - -#: src/slic3r/GUI/Tab.cpp:2736 -msgid "Remove" -msgstr "Eliminar" - -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" -msgstr " Ajuste inicial" - -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "Todo" - -#: src/slic3r/GUI/Tab.cpp:2869 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" -msgstr "" -"CANDADO CERRADO;indica que los ajustes son los mismos que los del sistema " -"para el grupo de opciones actual" - -#: src/slic3r/GUI/Tab.cpp:2872 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." -msgstr "" -"CANDADO CERRADO;indica que algunos de los ajustes se modificaron y no son " -"iguales a los valores almacenados para el grupo de opciones actual.\n" -"Haz clic en el CANDADO CERRADO para devolver los valores del grupo de " -"opciones actual a los valores del sistema." - -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" -"El símbolo de VIÑETA BLANCA;para el botón izquierdo: indica un ajuste no " -"original, para el botón derecho: indica que el ajuste no se ha modificado." - -#: src/slic3r/GUI/Tab.cpp:2882 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." -msgstr "" -"FLECHA ATRÃS;indica si los ajustes cambiaron y ya no son iguales a los " -"ajustes guardados la última vez para el grupo de opciones actual. \n" -"Haz click en la FLECHA ATRÃS para devolver los valores del grupo de opciones " -"actual a los valores guardados la última vez." - -#: src/slic3r/GUI/Tab.cpp:2908 -msgid "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" -msgstr "" -"El símbolo del CANDADO CERRADO indica que los ajustes son los mismos que los " -"valores del sistema para el grupo de opciones actual" - -#: src/slic3r/GUI/Tab.cpp:2910 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"El CANDADO ABIERTO indica que algunos de los ajustes cambiaron y que no son " -"iguales a los valores del sistema para el grupo de opciones actual. \n" -"Haz clic para restaurar los ajustes del grupo de opciones actual a los " -"valores del sistema." - -#: src/slic3r/GUI/Tab.cpp:2913 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "El símbolo de VIÑETA BLANCA indica un ajuste que no es del sistema." - -#: src/slic3r/GUI/Tab.cpp:2916 -msgid "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." -msgstr "" -"El símbolo de VIÑETA BLANCA indica que los ajustes son los mismos que los de " -"la última vez que salvaste los ajustes para el grupo de opciones actual." - -#: src/slic3r/GUI/Tab.cpp:2918 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." -msgstr "" -"El símbolo de FLECHA ATRÃS indica que los ajustes cambiaron y que no son " -"iguales a los que se guardaron para el grupo de opciones actual.\n" -"Haz clic para devolver esos valores a los últimos guardados." - -#: src/slic3r/GUI/Tab.cpp:2924 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"El CANDADO CERRADO indica que los valores son los mismos que los del sistema." - -#: src/slic3r/GUI/Tab.cpp:2925 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"El CANDADO ABIERTO indica que el valor cambió y ya no es igual al valor del " -"sistema. \n" -"Haz clic para devolver el valor al valor del sistema." - -#: src/slic3r/GUI/Tab.cpp:2931 -msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." -msgstr "" -"El símbolo de VIÑETA BLANCA indica que los valores son los mismos que los de " -"los ajustes guardados la última vez." - -#: src/slic3r/GUI/Tab.cpp:2932 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"La FLECHA ATRÃS indica que el valor ha cambiado y ya no es el mismo que el " -"guardado la última vez.\n" -"Haz clic para restaurar el valor al último ajuste guardado." - -# Used in this context: _("Save ") + title + _(" as:") -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" -msgstr " como:" - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "The supplied name is not available." -msgstr "El nombre proporcionado no está disponible." - -#: src/slic3r/GUI/Tab.cpp:3092 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 -msgid "Layers" -msgstr "Capas" - -#: src/slic3r/GUI/Tab.cpp:3098 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3183 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3188 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 -msgid "Print Settings" -msgstr "Configuración de Impresión" - -#: src/slic3r/GUI/Tab.hpp:311 -msgid "Filament Settings" -msgstr "Configuración del filamento" - -#: src/slic3r/GUI/Tab.hpp:344 -msgid "Printer Settings" -msgstr "Configuración de la Impresora" - -#: src/slic3r/GUI/Tab.hpp:367 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:393 -msgid "Save preset" -msgstr "Guardar ajuste inicial" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "Update available" -msgstr "Actualización disponible" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" -msgstr "Nueva versión de Slic3r PE disponible" - -#: src/slic3r/GUI/UpdateDialogs.cpp:35 -msgid "To download, follow the link below." -msgstr "Para descargar, sigue el enlace que hay más abajo." - -#: src/slic3r/GUI/UpdateDialogs.cpp:42 -msgid "Current version:" -msgstr "Versión actual:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "New version:" -msgstr "Nueva versión:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:52 -msgid "Don't notify about new releases any more" -msgstr "No quiero recibir avisos de nuevas versiones" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 -msgid "Configuration update" -msgstr "Actualización de configuración" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 -msgid "Configuration update is available" -msgstr "Hay disponible una actualización de la Configuración" - -#: src/slic3r/GUI/UpdateDialogs.cpp:73 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"¿Te gustaría instalarlo?\n" -"\n" -"Ten en cuenta que primero se creará una instantánea de la configuración. Así " -"que se puede recuperar en cualquier momento en caso de que hubiera algún " -"problema con la nueva versión.\n" -"Updated configuration bundles:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "Incompatibilidad de Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "La configuración de Slic3r es incompatible" - -#: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Esta versión de Slic3r PE no es compatible con los grupos de configuraciones " -"instaladas. Esto sucede probablemente por ejecutar una versión de Slic3r PE " -"después de haber usado una más reciente.\n" -"\n" -"Puedes salir de Slic3r e intentarlo de nuevo con una versión más reciente, o " -"puedes volver a ejecutar la configuración inicial. Al hacerlo se creará una " -"copia de respaldo de la configuración existente antes de instalar la nueva " -"compatible con esta versión de Slic3r.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Esta versión de Slic3r: %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:126 -msgid "Incompatible bundles:" -msgstr "Grupos incompatibles:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" -msgstr "Salir de Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:145 -msgid "Re-configure" -msgstr "Reconfigurar" - -#: src/slic3r/GUI/UpdateDialogs.cpp:166 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -msgstr "" -"Ahora Slic3r PE usa una estructura actualizada para la configuración. \n" -"\n" -"Se han introducido los llamados 'Ajustes del sistema' , que tienen valores " -"por defecto para varias impresoras. Estos ajustes del sistema no pueden " -"modificarse, por el contrario, los usuarios pueden crear nuevos ajustes que " -"se basan en alguno de ellos.\n" -"Un ajuste nuevo puede heredar un valor de un ajuste existente o bien tener " -"un nuevo valor personalizado.\n" -"\n" -"Por favof, continúa con el %s que sigue para establecer los nuevos ajustes y " -"seleccionar si quieres que estos se actualicen automáticamente." - -#: src/slic3r/GUI/UpdateDialogs.cpp:182 -msgid "For more information please visit our wiki page:" -msgstr "Para más información visite por favor la página de nuestra wiki:" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 -msgid "Ramming customization" -msgstr "Configuración de empuje" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"El empuje señala la extrusión rápida justo antes de un cambio de filamento " -"en una impresora MM de un sólo extrusor. Su propósito es asegurar una forma " -"adecuada para el extremo de filamento que se va a descargar, para que no " -"haya problemas al insertar uno nuevo y para que se pueda volver a insertar " -"este más tarde. Esta fase es importante y diferentes materiales puede " -"precisar diferentes velocidades para obtener la forma correcta. Por este " -"motivo, las velocidades extrusión durante el empuje son ajustables.\n" -"\n" -"Este es un ajuste para expertos, ajustarlo incorrectamente podrá producir " -"atascos, que la rueda del extrusor arañe el filamento, etc." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 -msgid "Total ramming time" -msgstr "Tiempo de empuje total" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 -msgid "Total rammed volume" -msgstr "Volumen total empujado" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Ramming line width" -msgstr "Ancho de la linea de empuje" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 -msgid "Ramming line spacing" -msgstr "Espaciado de la linea de empuje" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Torre de limpieza - Ajuste del volumen de purga" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 -msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." -msgstr "" -"Aquí puedes ajustar el volumende purga requerida (mm³) para cualquier par de " -"herramientas." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 -msgid "Extruder changed to" -msgstr "El extrusor cambia a" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 -msgid "unloaded" -msgstr "descargado" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 -msgid "loaded" -msgstr "cargado" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "Tool #" -msgstr "Herramienta nº" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." -msgstr "" -"El volumen total de purga se calcula sumando dos valors más abajo, " -"dependiendo de qué filamentos se carguen/descarguen." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Volumen a purgar (mm³) cuando el filamento está siendo" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 -msgid "From" -msgstr "Desde" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 -msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"¡Cambiar a los ajustes sencillos descartará los cambios realizados en el " -"modo avanzado!\n" -"\n" -"¿Quiere continuar?" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show simplified settings" -msgstr "Muestra los ajustes simplificados" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show advanced settings" -msgstr "Mostrar ajustes avanzados" - -#: src/slic3r/Utils/OctoPrint.cpp:65 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:80 -msgid "Connection to OctoPrint works correctly." -msgstr "La conexión a OctoPrint funciona correctamente." - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Could not connect to OctoPrint" -msgstr "No puedo conectar con OctoPrint" - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Nota: Se necesita al menos la versión 1.1.0 de OctoPrint." - -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:186 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:571 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "requiere un min. %s y un max. %s" - -#: src/slic3r/Utils/PresetUpdater.cpp:576 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:578 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:334 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:335 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:357 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:372 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:375 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:379 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Print.cpp:1175 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1201 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1216 -msgid "" -"Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1234 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1239 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1241 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1253 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1255 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1257 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1259 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1281 -msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1290 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1307 -msgid "" -"One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1324 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1328 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1350 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1354 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:41 -msgid "Bed shape" -msgstr "Forma de la base de impresión" - -#: src/libslic3r/PrintConfig.cpp:48 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"Esta configuración controla la altura (y, por tanto, el número total) de las " -"láminas / capas. Las capas más delgadas brindan una mayor precisión pero " -"requieren más tiempo para imprimir." - -#: src/libslic3r/PrintConfig.cpp:56 -msgid "Max print height" -msgstr "Máxima altura de impresión" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." -msgstr "" -"Ajusta este valor a la altura máxima que puede alcanzar el extrusor mientras " -"imprime." - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" -msgstr "Evita cruzar perímetros" - -#: src/libslic3r/PrintConfig.cpp:74 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"Optimiza los movimientos de desplazamiento para minimizar el cruce de " -"perímetros. Esto es principalmente útil con extrusores Bowden que sufren " -"goteo. Esta característica ralentiza tanto la impresión como la generación " -"de código G." - -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 -msgid "Other layers" -msgstr "Otras capas" - -#: src/libslic3r/PrintConfig.cpp:83 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" -"Temperatura de la base calefactable para las capas después de la primera. " -"Ajuste esto a cero para deshabilitar los comandos de control de temperatura " -"de la base calefactable en la salida." - -#: src/libslic3r/PrintConfig.cpp:86 -msgid "Bed temperature" -msgstr "Temperatura de la base" - -#: src/libslic3r/PrintConfig.cpp:93 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"Este código personalizado se inserta en cada cambio de capa, justo antes del " -"movimiento Z. Tenga en cuenta que puede usar variables de marcador de " -"posición para todos los ajustes de Slic3r, así como [layer_num] y [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:104 -msgid "Between objects G-code" -msgstr "Código G para entre objetos" - -#: src/libslic3r/PrintConfig.cpp:105 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Este código se inserta entre los objetos cuando se utiliza la impresión " -"secuencial. Por defecto, el extrusor y la temperatura de la cama se " -"reinician utilizando un comando de no espera; sin embargo, si se detectan " -"M104, M109, M140 o M190 en este código personalizado, Slic3r no agregará " -"comandos de temperatura. Tenga en cuenta que puede usar variables de " -"marcador de posición para todas las configuraciones de Slic3r, por lo que " -"puede poner un comando \"M109 S [first_layer_temperature]\" donde lo desee." - -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Inferior" - -#: src/libslic3r/PrintConfig.cpp:116 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Número de capas sólidas para generar en las superficies inferiores." - -#: src/libslic3r/PrintConfig.cpp:118 -msgid "Bottom solid layers" -msgstr "Capas sólidas inferiores" - -#: src/libslic3r/PrintConfig.cpp:123 -msgid "Bridge" -msgstr "Puente" - -#: src/libslic3r/PrintConfig.cpp:124 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "" -"Esta es la aceleración que su impresora usará para los puentes. Establezca " -"cero para deshabilitar el control de aceleración para puentes." - -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 -msgid "mm/s²" -msgstr "mm/s²" - -#: src/libslic3r/PrintConfig.cpp:133 -msgid "Bridging angle" -msgstr "Ãngulo de puente" - -#: src/libslic3r/PrintConfig.cpp:135 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" -"Anulación de ángulo de puente. Si se deja en cero, el ángulo de puente se " -"calculará automáticamente. De lo contrario, el ángulo proporcionado se usará " -"para todos los puentes. Use 180 ° para ángulo con cero grados." - -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:145 -msgid "Bridges fan speed" -msgstr "Velocidad del ventilador para puentes" - -#: src/libslic3r/PrintConfig.cpp:146 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "" -"La velocidad de este ventilador se aplica durante todos los puentes y " -"voladizos." - -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 -msgid "%" -msgstr "%" - -#: src/libslic3r/PrintConfig.cpp:155 -msgid "Bridge flow ratio" -msgstr "Relación de flujo del puente" - -#: src/libslic3r/PrintConfig.cpp:157 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"Este factor afecta la cantidad de plástico para formar puentes. Puede " -"disminuirlo ligeramente para extraer los extruidos y evitar el combado, " -"aunque la configuración predeterminada suele ser buena y debe experimentar " -"con la refrigeración (usar un ventilador) antes de ajustar esto." - -#: src/libslic3r/PrintConfig.cpp:168 -msgid "Bridges" -msgstr "Puentes" - -#: src/libslic3r/PrintConfig.cpp:170 -msgid "Speed for printing bridges." -msgstr "Velocidad para imprimir puentes." - -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 -msgid "mm/s" -msgstr "mm/s" - -#: src/libslic3r/PrintConfig.cpp:178 -msgid "Brim width" -msgstr "Ancho del margen" - -#: src/libslic3r/PrintConfig.cpp:179 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Ancho horizontal del borde que se imprimirá alrededor de cada objeto en la " -"primera capa." - -#: src/libslic3r/PrintConfig.cpp:187 -msgid "Clip multi-part objects" -msgstr "Enlazaar objetos de varias partes" - -#: src/libslic3r/PrintConfig.cpp:188 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" -"Al imprimir objetos multi-material, esta configuración hará que slic3r " -"recorte las partes del objeto superpuestas una por la otra (la 2da parte " -"será recortada por la 1ra, la 3ra parte será recortada por la 1ra y 2da, " -"etc.)." - -#: src/libslic3r/PrintConfig.cpp:196 -msgid "Colorprint height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Compatible printers condition" -msgstr "Condición de impresoras compatibles" - -#: src/libslic3r/PrintConfig.cpp:208 -msgid "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." -msgstr "" -"Una expresión booleana utilizando valores de configuración de un perfil " -"existente. Si esta expresión es verdadera, el perfil será considerado " -"compatible con el perfil de impresión activo." - -#: src/libslic3r/PrintConfig.cpp:220 -msgid "Compatible print profiles condition" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:221 -msgid "" -"A boolean expression using the configuration values of an active print " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active print profile." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:235 -msgid "Complete individual objects" -msgstr "Completar objetos individuales" - -#: src/libslic3r/PrintConfig.cpp:236 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"Al imprimir múltiples objetos o copias, esta característica completará cada " -"objeto antes de pasar al siguiente (y comenzará desde la capa inferior). " -"Esta función es útil para evitar el riesgo de impresiones arruinadas. Slic3r " -"debería advertirte y evitar las colisiones del extrusor, pero ten cuidado." - -#: src/libslic3r/PrintConfig.cpp:245 -msgid "Enable auto cooling" -msgstr "Habilitar el enfriamiento automático" - -#: src/libslic3r/PrintConfig.cpp:246 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "" -"Este indicador habilita la lógica de enfriamiento automático que ajusta la " -"velocidad de impresión y la velocidad del ventilador según el tiempo de " -"impresión de la capa." - -#: src/libslic3r/PrintConfig.cpp:252 -msgid "Cooling tube position" -msgstr "Posición del tubo de refrigeración" - -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "" -"Distancia desde el centro del tubo de enfriado a la punta del extrusor " - -#: src/libslic3r/PrintConfig.cpp:261 -msgid "Cooling tube length" -msgstr "Longitud del tubo de enfriamiento" - -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "" -"Longitud del tubo de enfriado para limitar el espacio para movimientos de " -"enfriamiento dentro del mismo " - -#: src/libslic3r/PrintConfig.cpp:271 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"Esta es la aceleración después de que se usen los valores de aceleración " -"específicos de cada función (perímetro / relleno). Establezca cero para " -"evitar restablecer la aceleración." - -#: src/libslic3r/PrintConfig.cpp:281 -msgid "Default filament profile" -msgstr "Perfil de filamento por defecto" - -#: src/libslic3r/PrintConfig.cpp:282 -msgid "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." -msgstr "" -"Perfil de filamento por defecto asociado con el perfil de impresora actual. " -"Al seleccionar el perfil de impresora actual se activará este perfil de " -"filamento." - -#: src/libslic3r/PrintConfig.cpp:287 -msgid "Default print profile" -msgstr "Perfil de impresión por defecto" - -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 -msgid "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." -msgstr "" -"Perfil de impresión por defecto asociado con el perfil de impresora actual. " -"Al seleccionar el perfil de impresora actual se activará este perfil de " -"impresión." - -#: src/libslic3r/PrintConfig.cpp:293 -msgid "Disable fan for the first" -msgstr "Desactivar ventilador para la primera" - -#: src/libslic3r/PrintConfig.cpp:294 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" -"Puedes configurarlo como un valor positivo para desactivar el ventilador " -"durante todas las capas iniciales, de manera que no empeora la adhesión." - -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "layers" -msgstr "capas" - -#: src/libslic3r/PrintConfig.cpp:304 -msgid "Don't support bridges" -msgstr "No soportar puentes" - -#: src/libslic3r/PrintConfig.cpp:306 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "" -"Opción experimental para evitar que se genere material de soporte debajo de " -"las áreas con puente." - -#: src/libslic3r/PrintConfig.cpp:313 -msgid "Distance between copies" -msgstr "Distancia entre copias" - -#: src/libslic3r/PrintConfig.cpp:314 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "" -"Distancia utilizada para la función de organización automática de la base." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Elephant foot compensation" -msgstr "Compensación del pie de elefante" - -#: src/libslic3r/PrintConfig.cpp:324 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"La primera capa se contraerá en el plano XY por el valor configurado para " -"compensar el aplatamiento de la 1ª capa, también conocido como efecto Pie de " -"Elefante." - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "" -"Este procedimiento final se inserta al final del archivo de salida. Tenga en " -"cuenta que puede usar variables de marcador de posición para todas las " -"configuraciones de Slic3r." - -#: src/libslic3r/PrintConfig.cpp:345 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"Este procedimiento final se inserta al final del archivo de salida, antes " -"del gcode final. Tenga en cuenta que puede usar variables de marcador de " -"posición para todas las configuraciones de Slic3r. Si tiene extrusores " -"múltiples, el gcode se procesa en el orden del extrusor." - -#: src/libslic3r/PrintConfig.cpp:356 -msgid "Ensure vertical shell thickness" -msgstr "Asegurar el espesor de la carcasa vertical" - -#: src/libslic3r/PrintConfig.cpp:358 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" -"Añade un relleno completo cerca de las superficies inclinadas para " -"garantizar el ancho vertical solicitado(capas sólidas arriba+abajo)." - -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Patrón de relleno superior/inferior" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "" -"Patrón para el relleno superior / inferior. Esto solo afecta a la capa " -"externa visible, y no a las capas sólidas adyacentes." - -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 -msgid "External perimeters" -msgstr "Perímetros externos" - -#: src/libslic3r/PrintConfig.cpp:388 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para perímetros externos. Si se deja en cero, se usará el ancho de " -"extrusión por defecto si se establece, de lo contrario se usará 1.125 x " -"diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, 200%), " -"se computará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "mm or % (leave 0 for default)" -msgstr "mm o % (dejar 0 por defecto)" - -#: src/libslic3r/PrintConfig.cpp:399 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Esta configuración independiente afectará la velocidad de los perímetros " -"externos (los visibles). Si se expresa como porcentaje (por ejemplo: 80%), " -"se calculará en la configuración de velocidad de perímetros anterior. " -"Establecer a cero para auto." - -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 -msgid "mm/s or %" -msgstr "mm/s o %" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "External perimeters first" -msgstr "Perímetros externos primero" - -#: src/libslic3r/PrintConfig.cpp:411 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "" -"Imprimir perímetros de contorno desde el más externo hasta el más interno en " -"lugar del orden inverso predeterminado." - -#: src/libslic3r/PrintConfig.cpp:418 -msgid "Extra perimeters if needed" -msgstr "Perímetros adicionales si es necesario" - -#: src/libslic3r/PrintConfig.cpp:420 -#, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" -"Añadir más perímetros cuando se necesiten para evitar huecos en las paredes " -"inclinadas. Slic3r sigue añadiendo perímetros hasta que más del 70% del " -"perímetro superior sea soportado." - -#: src/libslic3r/PrintConfig.cpp:431 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" -"La extrusora que se usa (a menos que se especifiquen configuraciones de " -"extrusión más específicas). Este valor anula los extrusores de perímetro y " -"relleno, pero no los extrusores de soporte." - -#: src/libslic3r/PrintConfig.cpp:444 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"Ajuste este valor según la distancia vertical entre la punta de la boquilla " -"y (generalmente) las barras X del carro. En otras palabras, esta es la " -"altura del cilindro de holgura alrededor de su extrusor, y representa la " -"profundidad máxima que el extrusor puede asomar antes de colisionar con " -"otros objetos impresos." - -#: src/libslic3r/PrintConfig.cpp:455 -msgid "Radius" -msgstr "Radio" - -#: src/libslic3r/PrintConfig.cpp:456 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"Ajuste este parámetro según el radio de espacio libre alrededor de su " -"extrusor. Si el extrusor no está centrado, elija el valor más grande para " -"seguridad. Esta configuración se utiliza para verificar colisiones y mostrar " -"la vista previa gráfica en la bandeja." - -#: src/libslic3r/PrintConfig.cpp:467 -msgid "Extruder Color" -msgstr "Color del extrusor" - -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Esto solo se usa en la interfaz de Slic3r como ayuda visual." - -#: src/libslic3r/PrintConfig.cpp:475 -msgid "Extruder offset" -msgstr "Offset del extrusor" - -#: src/libslic3r/PrintConfig.cpp:476 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"Si su firmware no maneja el desplazamiento del extrusor, necesita el código " -"G para tenerlo en cuenta. Esta opción le permite especificar el " -"desplazamiento de cada extrusora con respecto a la primera. Se esperan " -"coordenadas positivas (se restarán de la coordenada XY)." - -#: src/libslic3r/PrintConfig.cpp:486 -msgid "Extrusion axis" -msgstr "Eje de extrusión" - -#: src/libslic3r/PrintConfig.cpp:487 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"Utiliza esta opción para ajustar la letra asociada al extrusor de tu " -"impresora (normalmente se usa E pero otras usan A)." - -#: src/libslic3r/PrintConfig.cpp:493 -msgid "Extrusion multiplier" -msgstr "Multiplicador de extrusión" - -#: src/libslic3r/PrintConfig.cpp:494 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"Este factor cambia la cantidad de flujo proporcionalmente. Es posible que " -"necesite ajustar esta configuración para obtener un buen acabado superficial " -"y corregir el ancho de una sola pared. Los valores usuales están entre 0.9 y " -"1.1. Si cree que necesita cambiar esto más, verifique el diámetro del " -"filamento y los pasos del E en el firmware." - -#: src/libslic3r/PrintConfig.cpp:503 -msgid "Default extrusion width" -msgstr "Ancho de extrusión por defecto" - -#: src/libslic3r/PrintConfig.cpp:505 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" -"Ajuste este valor distinto de cero para permitir un ancho de extrusión " -"manual. Si se deja a cero, Slic3r obtiene anchuras de extrusión del diámetro " -"de la boquilla (consulte la información sobre herramientas para conocer el " -"ancho de extrusión, el ancho de extrusión de relleno, etc.). Si se expresa " -"como porcentaje (por ejemplo: 230%), se computará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:509 -msgid "mm or % (leave 0 for auto)" -msgstr "mm o % (dejar 0 para automático)" - -#: src/libslic3r/PrintConfig.cpp:515 -msgid "Keep fan always on" -msgstr "Mantener el ventilador siempre encendido" - -#: src/libslic3r/PrintConfig.cpp:516 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"Si esto está habilitado, el ventilador nunca se desactivará y se mantendrá " -"funcionando al menos a su velocidad mínima. Útil para PLA, no recomendado " -"para ABS." - -#: src/libslic3r/PrintConfig.cpp:522 -msgid "Enable fan if layer print time is below" -msgstr "" -"Habilitar ventilador si el tiempo de impresión de la capa está por debajo" - -#: src/libslic3r/PrintConfig.cpp:523 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"Si el tiempo de impresión de capa se estima por debajo de este número de " -"segundos, el ventilador se habilitará y su velocidad se calculará al " -"interpolar las velocidades mínima y máxima." - -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 -msgid "approximate seconds" -msgstr "segundos aproximadamente" - -#: src/libslic3r/PrintConfig.cpp:534 -msgid "Color" -msgstr "Color" - -#: src/libslic3r/PrintConfig.cpp:541 -msgid "Filament notes" -msgstr "Notas del filamento" - -#: src/libslic3r/PrintConfig.cpp:542 -msgid "You can put your notes regarding the filament here." -msgstr "Puede poner sus notas con respecto al filamento aquí." - -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 -msgid "Max volumetric speed" -msgstr "Velocidad volumétrica máxima" - -#: src/libslic3r/PrintConfig.cpp:552 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"Velocidad volumétrica máxima permitida para este filamento. Limita la " -"velocidad volumétrica máxima de una impresión al mínimo de velocidad " -"volumétrica de impresión y filamento. Establecer en cero para usar sin " -"límite." - -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "mm³/s" - -#: src/libslic3r/PrintConfig.cpp:562 -msgid "Loading speed" -msgstr "Velocidad de carga" - -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "Velocidad empleada para cargar el filamento en la torre de limpieza. " - -#: src/libslic3r/PrintConfig.cpp:571 -msgid "Loading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:580 -msgid "Unloading speed" -msgstr "Velocidad de descarga" - -#: src/libslic3r/PrintConfig.cpp:581 -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " -msgstr "" -"Velocidad empleada para descargar el filamento en la torre de limpieza (no " -"afecta a la fase inicial de la descarga, sólo después de empujar). " - -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:591 -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:599 -msgid "Delay after unloading" -msgstr "Retardo tras la descarga" - -#: src/libslic3r/PrintConfig.cpp:600 -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " -msgstr "" -"Tiempo de espera después de que se ha descargado el filamento. Puede ayudar " -"para conseguir cambios de herramienta fiables con materiales flexibles que " -"pueden necesitar más tiempo para encogerse a su tamaño original. " - -#: src/libslic3r/PrintConfig.cpp:610 -msgid "Number of cooling moves" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:611 -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:620 -msgid "Speed of the first cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:629 -msgid "Minimal purge on wipe tower" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:630 -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:635 -msgid "mm³" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:641 -msgid "Speed of the last cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:650 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:651 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:659 -msgid "Ramming parameters" -msgstr "Parámetros de empuje" - -#: src/libslic3r/PrintConfig.cpp:660 -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " -msgstr "" -"Esta cadena se modifica con el Diálogo de Empuje y contiene parámetros " -"específicos de empuje " - -#: src/libslic3r/PrintConfig.cpp:667 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"Ingrese el diámetro de su fila aquí. Se requiere una buena precisión, por lo " -"tanto, use un calibre y realice múltiples mediciones a lo largo del " -"filamento, luego calcule el promedio." - -#: src/libslic3r/PrintConfig.cpp:685 -msgid "Density" -msgstr "Densidad" - -#: src/libslic3r/PrintConfig.cpp:686 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"Ingrese su densidad de filamento aquí. Esto es solo para información " -"estadística. Una forma decente es pesar una longitud conocida de filamento y " -"calcular la relación entre la longitud y el volumen. Lo mejor es calcular el " -"volumen directamente a través del desplazamiento." - -#: src/libslic3r/PrintConfig.cpp:689 -msgid "g/cm³" -msgstr "g/cm³" - -#: src/libslic3r/PrintConfig.cpp:695 -msgid "Filament type" -msgstr "Tipo de filamento" - -#: src/libslic3r/PrintConfig.cpp:696 -msgid "The filament material type for use in custom G-codes." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:712 -msgid "Soluble material" -msgstr "Material soluble" - -#: src/libslic3r/PrintConfig.cpp:713 -msgid "Soluble material is most likely used for a soluble support." -msgstr "El material soluble se usa muy probablemente para un soporte soluble." - -#: src/libslic3r/PrintConfig.cpp:719 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "" -"Ingrese su coste del filamento por kg aquí. Esto es solo para información " -"estadística." - -#: src/libslic3r/PrintConfig.cpp:720 -msgid "money/kg" -msgstr "dinero/kg" - -#: src/libslic3r/PrintConfig.cpp:729 -msgid "Fill angle" -msgstr "Ãngulo de relleno" - -#: src/libslic3r/PrintConfig.cpp:731 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"Ãngulo base predeterminado para orientación de relleno. Se aplicará " -"sombreado cruzado a esto. Los puentes se rellenarán utilizando la mejor " -"dirección que Slic3r pueda detectar, por lo que esta configuración no los " -"afecta." - -#: src/libslic3r/PrintConfig.cpp:744 -msgid "Fill density" -msgstr "Densidad de relleno" - -#: src/libslic3r/PrintConfig.cpp:746 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Densidad de relleno interior, expresado en el rango 0% - 100%." - -#: src/libslic3r/PrintConfig.cpp:782 -msgid "Fill pattern" -msgstr "Patrón de relleno" - -#: src/libslic3r/PrintConfig.cpp:784 -msgid "Fill pattern for general low-density infill." -msgstr "Patrón de relleno para el relleno general de baja densidad." - -#: src/libslic3r/PrintConfig.cpp:801 -msgid "Grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:802 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Cubic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:805 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:808 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:809 -msgid "Gyroid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 -msgid "First layer" -msgstr "Primera capa" - -#: src/libslic3r/PrintConfig.cpp:817 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "" -"Esta es la aceleración que su impresora usará para la primera capa. " -"Establezca cero para deshabilitar el control de aceleración para la primera " -"capa." - -#: src/libslic3r/PrintConfig.cpp:827 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "" -"Temperatura de base calefactable para la primera capa. Ajuste esto a cero " -"para deshabilitar los comandos de control de temperatura de la cama en la " -"salida." - -#: src/libslic3r/PrintConfig.cpp:837 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para la primera capa. Puede usar esto para forzar extrusiones más " -"gordas para una mejor adhesión. Si se expresa como porcentaje (por ejemplo, " -"120%), se calculará sobre la altura de la primera capa. Si se establece en " -"cero, usará el ancho de extrusión predeterminado." - -#: src/libslic3r/PrintConfig.cpp:848 -msgid "First layer height" -msgstr "Altura de la primera capa" - -#: src/libslic3r/PrintConfig.cpp:850 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"Al imprimir con alturas de capa muy bajas, es posible que desee imprimir una " -"capa inferior más gruesa para mejorar la adhesión y la tolerancia de las " -"placas de construcción no perfectas. Esto se puede expresar como un valor " -"absoluto o como un porcentaje (por ejemplo: 150%) sobre la altura de capa " -"predeterminada." - -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 -msgid "mm or %" -msgstr "mm o %" - -#: src/libslic3r/PrintConfig.cpp:860 -msgid "First layer speed" -msgstr "Velocidad de la primera capa" - -#: src/libslic3r/PrintConfig.cpp:861 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"Si se expresa como valor absoluto en mm / s, esta velocidad se aplicará a " -"todos los movimientos de impresión de la primera capa, independientemente de " -"su tipo. Si se expresa como un porcentaje (por ejemplo: 40%), escalará las " -"velocidades predeterminadas." - -#: src/libslic3r/PrintConfig.cpp:872 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"Temperatura del extrusor para la primera capa. Si desea controlar la " -"temperatura manualmente durante la impresión, configúrela en cero para " -"desactivar los comandos de control de temperatura en el archivo de salida." - -#: src/libslic3r/PrintConfig.cpp:882 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" -"Velocidad para llenar pequeños espacios usando movimientos cortos de zigzag. " -"Mantenga esto razonablemente bajo para evitar demasiados problemas de " -"vibración y sacudidas. Establezca cero para desactivar el llenado de huecos." - -#: src/libslic3r/PrintConfig.cpp:890 -msgid "Verbose G-code" -msgstr "Código G detallado" - -#: src/libslic3r/PrintConfig.cpp:891 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Habilítelo para obtener un archivo de código G comentado, con cada línea " -"explicada por un texto descriptivo. Si imprime desde una tarjeta SD, el peso " -"adicional del archivo podría ralentizar su firmware." - -#: src/libslic3r/PrintConfig.cpp:899 -msgid "G-code flavor" -msgstr "Tipo de código G" - -#: src/libslic3r/PrintConfig.cpp:900 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"Algunos comandos de código G / M, incluido el control de temperatura y " -"otros, no son universales. Establezca esta opción en el firmware de su " -"impresora para obtener una salida compatible. El ajuste \"Sin extrusión\" " -"evita que Slic3r exporte ningún valor de extrusión." - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:929 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:930 -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:939 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "" -"Esta es la aceleración que su impresora usará para el relleno. Establezca " -"cero para deshabilitar el control de aceleración para el relleno." - -#: src/libslic3r/PrintConfig.cpp:948 -msgid "Combine infill every" -msgstr "Combinar el relleno cada" - -#: src/libslic3r/PrintConfig.cpp:950 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"Esta característica permite combinar el relleno y acelerar la impresión " -"mediante la extrusión de capas de relleno más gruesas a la vez que se " -"preservan los finos perímetros y, por lo tanto, la precisión." - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "Combine infill every n layers" -msgstr "Combinar el relleno cada n capas" - -#: src/libslic3r/PrintConfig.cpp:960 -msgid "Infill extruder" -msgstr "Extrusor de relleno" - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "The extruder to use when printing infill." -msgstr "El extrusor que se usa cuando se imprime relleno." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para relleno. Si se deja en cero, se usará el ancho de extrusión por " -"defecto si se establece, de lo contrario se usará 1.125 x diámetro de la " -"boquilla. Es posible que desee extrusiones más gordas para acelerar el " -"relleno y fortalecer sus partes. Si se expresa como porcentaje (por ejemplo, " -"90%), se calculará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:981 -msgid "Infill before perimeters" -msgstr "Rellenar antes que los perímetros" - -#: src/libslic3r/PrintConfig.cpp:982 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "" -"Esta opción cambiará el orden de impresión de los perímetros y el relleno, " -"haciendo que el último sea el primero." - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "Only infill where needed" -msgstr "Solo rellenar cuando sea necesario" - -#: src/libslic3r/PrintConfig.cpp:990 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"Esta opción limitará el relleno a las áreas realmente necesarias para " -"soportar techos (actuará como material de soporte interno). Si está " -"habilitado, ralentiza la generación del código G debido a las múltiples " -"comprobaciones involucradas." - -#: src/libslic3r/PrintConfig.cpp:998 -msgid "Infill/perimeters overlap" -msgstr "Superposición de relleno/perímetros" - -#: src/libslic3r/PrintConfig.cpp:1000 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"Esta configuración aplica una superposición adicional entre relleno y " -"perímetros para una mejor unión. Teóricamente, esto no debería ser " -"necesario, pero la reacción puede causar huecos. Si se expresa como " -"porcentaje (ejemplo: 15%), se calcula sobre el ancho de extrusión del " -"perímetro." - -#: src/libslic3r/PrintConfig.cpp:1012 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "" -"Velocidad para imprimir el relleno interno. Establecer a cero para auto." - -#: src/libslic3r/PrintConfig.cpp:1020 -msgid "Inherits profile" -msgstr "Hereda el perfil" - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Name of the profile, from which this profile inherits." -msgstr "Nombre del perfil desde que éste hereda." - -#: src/libslic3r/PrintConfig.cpp:1032 -msgid "Interface shells" -msgstr "Carcasas de interfaz" - -#: src/libslic3r/PrintConfig.cpp:1033 -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." -msgstr "" -"Forzar la generación de carcasas sólidas entre materiales / volúmenes " -"adyacentes. Útil para impresiones de múltiples extrusoras con materiales " -"translúcidos o material de soporte soluble manual." - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"Este código personalizado se inserta en cada cambio de capa, justo después " -"del movimiento Z y antes de que el extrusor se mueva al primer punto de " -"capa. Tenga en cuenta que puede usar variables de marcador de posición para " -"todos los ajustes de Slic3r, así como [layer_num] y [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:1054 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1055 -msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 -msgid "Max" -msgstr "Max" - -#: src/libslic3r/PrintConfig.cpp:1164 -msgid "This setting represents the maximum speed of your fan." -msgstr "Esta configuración representa la velocidad máxima de su ventilador." - -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" -"Esta es la altura más alta imprimible de capa para este extrusor, que se " -"utiliza para cubrir la altura de la capa variable y la altura de la capa de " -"soporte. La altura máxima recomendada de la capa es del 75% del ancho de " -"extrusión para lograr una adhesión razonable entre capas. Si se establece en " -"0, la altura de la capa se limita al 75% del diámetro de la boquilla." - -#: src/libslic3r/PrintConfig.cpp:1185 -msgid "Max print speed" -msgstr "Velocidad máxima de impresión" - -#: src/libslic3r/PrintConfig.cpp:1186 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"Al establecer otras configuraciones de velocidad en 0, Slic3r calculará " -"automáticamente la velocidad óptima para mantener constante la presión en el " -"extrusor. Esta configuración experimental se utiliza para establecer la " -"velocidad de impresión más alta que desea permitir." - -#: src/libslic3r/PrintConfig.cpp:1197 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "" -"Esta configuración experimental se usa para establecer la velocidad " -"volumétrica máxima que admite el extrusor." - -#: src/libslic3r/PrintConfig.cpp:1206 -msgid "Max volumetric slope positive" -msgstr "Máx. Pendiente volumétrica positiva" - -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" -"Esta configuración experimental se usa para limitar la velocidad de cambio " -"en la velocidad de extrusión. Un valor de 1,8 mm³ / s² asegura que se cambia " -"la velocidad de extrusión de 1,8 mm³ / s (ancho de extrusión de 0,45 mm, " -"altura de extrusión de 0,2 mm, avance de 20 mm / s) a 5,4 mm³ / s (avance de " -"60 mm / s) durará al menos 2 segundos." - -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: src/libslic3r/PrintConfig.cpp:1218 -msgid "Max volumetric slope negative" -msgstr "Máx. Pendiente volumétrica negativa" - -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 -msgid "Min" -msgstr "Min" - -#: src/libslic3r/PrintConfig.cpp:1231 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "" -"Este ajuste representa el PWM mínimo que el ventilador necesita para " -"funcionar." - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" -"Esta es la altura más baja de la capa imprimible para este extrusor y limita " -"la resolución para la altura de la capa variable. Los valores típicos están " -"entre 0.05 mm y 0.1 mm." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Min print speed" -msgstr "Velocidad de impresión mínima" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r no escalará la velocidad por debajo de esta velocidad." - -#: src/libslic3r/PrintConfig.cpp:1259 -msgid "Minimal filament extrusion length" -msgstr "Longitud mínima de filamento extruido" - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"Generar no menos que el número de bucles de falda requeridos para consumir " -"la cantidad especificada de filamento en la capa inferior. Para máquinas " -"multi-extrusoras, este mínimo se aplica a cada extrusora." - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Configuration notes" -msgstr "Notas de configuración" - -#: src/libslic3r/PrintConfig.cpp:1271 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Puede poner sus notas personales aquí. Este texto se añadirá al código G " -"como comentarios." - -#: src/libslic3r/PrintConfig.cpp:1281 -msgid "Nozzle diameter" -msgstr "Diámetro de la boquilla" - -#: src/libslic3r/PrintConfig.cpp:1282 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "" -"Este es el diámetro de la boquilla de su extrusor (por ejemplo: 0.5, 0.35, " -"etc.)" - -#: src/libslic3r/PrintConfig.cpp:1288 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1289 -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "Nombre de equipo, IP o URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 -msgid "Only retract when crossing perimeters" -msgstr "Solo retraer al cruzar perímetros" - -#: src/libslic3r/PrintConfig.cpp:1326 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "" -"Desactiva la retracción cuando la trayectoria de desplazamiento no supera " -"los perímetros de la capa superior (y, por lo tanto, cualquier goteo " -"probablemente será invisible)." - -#: src/libslic3r/PrintConfig.cpp:1334 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" -"Esta opción reducirá la temperatura de las extrusoras inactivas para evitar " -"el goteo. Permitirá una falda alta automáticamente y moverá los extrusores " -"fuera de dicha falda cuando cambie la temperatura." - -#: src/libslic3r/PrintConfig.cpp:1342 -msgid "Output filename format" -msgstr "Formato de nombre de salida" - -#: src/libslic3r/PrintConfig.cpp:1343 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"Puedes usar todas las opciones de configuración como las variables dentro de " -"esta muestra. Por ejemplo [layer_height], [fill_density] etc.También puedes " -"usar [timestamp], [year], [month], [day], [hour], [minute], [second], " -"[version], [input_filename], [input_filename_base]." - -#: src/libslic3r/PrintConfig.cpp:1353 -msgid "Detect bridging perimeters" -msgstr "Detectar perímetros con puentes" - -#: src/libslic3r/PrintConfig.cpp:1355 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"Opción experimental para ajustar el flujo para salientes (se usará el flujo " -"del puente), para aplicar la velocidad del puente a ellos y habilitar el " -"ventilador." - -#: src/libslic3r/PrintConfig.cpp:1362 -msgid "Filament parking position" -msgstr "Posición de aparcar el filamento" - -#: src/libslic3r/PrintConfig.cpp:1363 -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " -msgstr "" -"Distancia de la punta del extrusor desde la posición donde el filamento es " -"colocado cuando se descarga. Esto debería coincidir con el valor en el " -"firmware de la impresora. " - -#: src/libslic3r/PrintConfig.cpp:1372 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1373 -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 -msgid "Perimeters" -msgstr "Perímetros" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"Esta es la aceleración que su impresora usará para los perímetros. Un valor " -"alto como 9000 generalmente da buenos resultados si su hardware está a la " -"altura del trabajo. Establezca cero para deshabilitar el control de " -"aceleración para los perímetros." - -#: src/libslic3r/PrintConfig.cpp:1392 -msgid "Perimeter extruder" -msgstr "Extrusor de perímetros" - -#: src/libslic3r/PrintConfig.cpp:1394 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "" -"El extrusor que se usa al imprimir perímetros y borde. El primer extrusor es " -"1." - -#: src/libslic3r/PrintConfig.cpp:1404 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para los perímetros. Es posible que desee utilizar extrusiones más " -"delgadas para obtener superficies más precisas. Si se deja en cero, se usará " -"el ancho de extrusión por defecto si se establece, de lo contrario se usará " -"1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, " -"200%), se calculará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" -"Velocidad para perímetros (contornos, también conocidos como conchas " -"verticales). Establecer a cero para auto." - -#: src/libslic3r/PrintConfig.cpp:1427 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"Esta opción establece la cantidad de perímetros que se generarán para cada " -"capa. Tenga en cuenta que Slic3r puede aumentar este número automáticamente " -"cuando detecta superficies inclinadas que se benefician de un mayor número " -"de perímetros si la opción Perímetros adicionales está habilitada." - -#: src/libslic3r/PrintConfig.cpp:1431 -msgid "(minimum)" -msgstr "(mínimo)" - -#: src/libslic3r/PrintConfig.cpp:1439 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Si desea procesar el código G de salida a través de scripts personalizados, " -"simplemente haga una lista de sus rutas absolutas aquí. Separe los scripts " -"múltiples con un punto y coma. Los scripts se pasarán por la ruta absoluta " -"al archivo de código G como primer argumento, y pueden acceder a la " -"configuración de configuración de Slic3r leyendo las variables de entorno." - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "Printer type" -msgstr "Tipo de impresora" - -#: src/libslic3r/PrintConfig.cpp:1453 -msgid "Type of the printer." -msgstr "Tipo de impresora." - -#: src/libslic3r/PrintConfig.cpp:1457 -msgid "Printer notes" -msgstr "Notas de la impresora" - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "You can put your notes regarding the printer here." -msgstr "Puede poner sus notas con respecto a la impresora aquí." - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "Printer vendor" -msgstr "Fabricante de la impresora" - -#: src/libslic3r/PrintConfig.cpp:1468 -msgid "Name of the printer vendor." -msgstr "Nombre del fabricante de la impresora." - -#: src/libslic3r/PrintConfig.cpp:1472 -msgid "Printer variant" -msgstr "Modelo de impresora" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." -msgstr "" -"Nombre de la variante de impresora. Por ejemplo, las variantes pueden " -"distinguir diferentes diámetros de boquilla." - -#: src/libslic3r/PrintConfig.cpp:1483 -msgid "Raft layers" -msgstr "Capas de balsa" - -#: src/libslic3r/PrintConfig.cpp:1485 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "" -"El objeto será elevado por este número de capas y se generará material de " -"soporte debajo de él." - -#: src/libslic3r/PrintConfig.cpp:1494 -msgid "Resolution" -msgstr "Resolución" - -#: src/libslic3r/PrintConfig.cpp:1495 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"Resolución mínima de detalles, utilizada para simplificar el archivo de " -"entrada para acelerar el trabajo de laminado y reducir el uso de memoria. " -"Los modelos de alta resolución suelen llevar más detalles de los que las " -"impresoras pueden ofrecer. Establézcalo en cero para desactivar cualquier " -"simplificación y usar la resolución completa de la entrada." - -#: src/libslic3r/PrintConfig.cpp:1506 -msgid "Minimum travel after retraction" -msgstr "Distancia mínima después de la retracción" - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "" -"La retracción no se activa cuando los movimientos de desplazamiento son más " -"cortos que esta longitud." - -#: src/libslic3r/PrintConfig.cpp:1514 -msgid "Retract amount before wipe" -msgstr "Retracta cantidad antes de limpiar" - -#: src/libslic3r/PrintConfig.cpp:1515 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" -"Con extrusores bowden, puede ser recomendable realizar una retracción rápida " -"antes de realizar el movimiento de limpiar." - -#: src/libslic3r/PrintConfig.cpp:1523 -msgid "Retract on layer change" -msgstr "Retraer en el cambio de capa" - -#: src/libslic3r/PrintConfig.cpp:1524 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "" -"Esta bandera impone una retractación cada vez que se realiza un movimiento Z." - -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 -msgid "Length" -msgstr "Largo" - -#: src/libslic3r/PrintConfig.cpp:1531 -msgid "Retraction Length" -msgstr "Longitud de retracción" - -#: src/libslic3r/PrintConfig.cpp:1532 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"Cuando se activa la retracción, el filamento se retira en la cantidad " -"especificada (la longitud se mide en el filamento sin procesar, antes de que " -"entre en el extrusor)." - -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 -msgid "mm (zero to disable)" -msgstr "mm (cero para deshabilitar)" - -#: src/libslic3r/PrintConfig.cpp:1540 -msgid "Retraction Length (Toolchange)" -msgstr "Longitud de retracción (cambio de herramienta)" - -#: src/libslic3r/PrintConfig.cpp:1541 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"Cuando se desencadena la retracción antes de cambiar la herramienta, el " -"filamento se retira en la cantidad especificada (la longitud se mide en el " -"filamento sin procesar, antes de que entre en el extrusor)." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Lift Z" -msgstr "Levantar Z" - -#: src/libslic3r/PrintConfig.cpp:1551 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"Si establece esto en un valor positivo, Z se levantará rápidamente cada vez " -"que se active una retracción. Cuando se usan múltiples extrusores , solo se " -"considerará la configuración del primer extrusor." - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Above Z" -msgstr "Encima de Z" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Only lift Z above" -msgstr "Solo levantar Z mayor que" - -#: src/libslic3r/PrintConfig.cpp:1561 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"Si establece esto en un valor positivo, la elevación de Z solo tendrá lugar " -"por encima de la Z absoluta especificada. Puede ajustar esta configuración " -"para omitir el levantamiento en las primeras capas." - -#: src/libslic3r/PrintConfig.cpp:1569 -msgid "Below Z" -msgstr "Por debajo de Z" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Only lift Z below" -msgstr "Solo levantar Z menor que" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"Si configura esto en un valor positivo, la elevación Z solo tendrá lugar por " -"debajo de la Z absoluta especificada. Puede ajustar esta configuración para " -"limitar la elevación a las primeras capas." - -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 -msgid "Extra length on restart" -msgstr "Longitud adicional en el reinicio" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"Cuando la retracción se compensa después de un movimiento, el extrusor " -"necesitará introducir más filamento. Este ajuste raramente se necesita." - -#: src/libslic3r/PrintConfig.cpp:1590 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Cuando la retracción se compensa después de cambiar la herramienta, el " -"extrusor empujará esta cantidad adicional de filamento." - -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 -msgid "Retraction Speed" -msgstr "Velocidad de retracción" - -#: src/libslic3r/PrintConfig.cpp:1600 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "" -"La velocidad para las retracciones (solo se aplica al motor del extrusor)." - -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 -msgid "Deretraction Speed" -msgstr "Velocidad de deretracción" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" -"La velocidad de carga de un filamento en la extrusora después de la " -"retracción (solo se aplica al motor del extrusor). Si se deja a cero, se usa " -"la velocidad de retracción." - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "Seam position" -msgstr "Posición de la costura" - -#: src/libslic3r/PrintConfig.cpp:1619 -msgid "Position of perimeters starting points." -msgstr "Posición de los puntos de inicio del perímetro." - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1627 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1628 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 -msgid "Direction" -msgstr "Dirección" - -#: src/libslic3r/PrintConfig.cpp:1638 -msgid "Preferred direction of the seam" -msgstr "Dirección preferida de la costura" - -#: src/libslic3r/PrintConfig.cpp:1639 -msgid "Seam preferred direction" -msgstr "Dirección de la costura" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "Jitter" -msgstr "Jitter" - -#: src/libslic3r/PrintConfig.cpp:1649 -msgid "Seam preferred direction jitter" -msgstr "Dirección preferida de unión jitter" - -#: src/libslic3r/PrintConfig.cpp:1650 -msgid "Preferred direction of the seam - jitter" -msgstr "Dirección preferida de la unión - jitter" - -#: src/libslic3r/PrintConfig.cpp:1661 -msgid "USB/serial port for printer connection." -msgstr "Puerto USB/serial para la conexión con la impresora." - -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Velocidad del puerto serial" - -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "" -"Velocidad (baudios) del puerto USB / serie para la conexión de la impresora." - -#: src/libslic3r/PrintConfig.cpp:1679 -msgid "Distance from object" -msgstr "Distancia del objeto" - -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "" -"Distancia entre falda y objeto(s). Ajuste esto a cero para unir la falda a " -"los objetos y obtener un borde para una mejor adhesión." - -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "Skirt height" -msgstr "Altura de la falda" - -#: src/libslic3r/PrintConfig.cpp:1689 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "" -"Altura de la falda expresada en capas. Establezca esto en un valor alto para " -"usar la falda como escudo contra corrientes de aire." - -#: src/libslic3r/PrintConfig.cpp:1697 -msgid "Loops (minimum)" -msgstr "Bucles (mínimo)" - -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "Skirt Loops" -msgstr "Vueltas de la falda" - -#: src/libslic3r/PrintConfig.cpp:1699 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"Número de vueltas para la falda Si se establece la opción Longitud Mínima de " -"Extrusión, el número de bucles puede ser mayor que el configurado aquí. " -"Ajuste esto a cero para deshabilitar la falda por completo." - -#: src/libslic3r/PrintConfig.cpp:1708 -msgid "Slow down if layer print time is below" -msgstr "" -"Disminuya la velocidad si el tiempo de impresión de la capa está por debajo" - -#: src/libslic3r/PrintConfig.cpp:1709 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"Si el tiempo de impresión de la capa se estima por debajo de este número de " -"segundos, la velocidad de los movimientos de impresión se reducirá para " -"extender la duración a este valor." - -#: src/libslic3r/PrintConfig.cpp:1720 -msgid "Small perimeters" -msgstr "Perímetros pequeños" - -#: src/libslic3r/PrintConfig.cpp:1722 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Esta configuración por separado afectará la velocidad de los perímetros con " -"un radio <= 6,5 mm (generalmente agujeros). Si se expresa como porcentaje " -"(por ejemplo: 80%), se calculará en la configuración de velocidad de " -"perímetros anterior. Establecer a cero para auto." - -#: src/libslic3r/PrintConfig.cpp:1732 -msgid "Solid infill threshold area" -msgstr "Ãrea del umbral de relleno sólido" - -#: src/libslic3r/PrintConfig.cpp:1734 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "" -"Forzar el relleno sólido para las regiones que tienen un área más pequeña " -"que el umbral especificado." - -#: src/libslic3r/PrintConfig.cpp:1735 -msgid "mm²" -msgstr "mm²" - -#: src/libslic3r/PrintConfig.cpp:1742 -msgid "Solid infill extruder" -msgstr "Extrusor de relleno sólido" - -#: src/libslic3r/PrintConfig.cpp:1744 -msgid "The extruder to use when printing solid infill." -msgstr "El extrusor que se usa al imprimir relleno sólido." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "Solid infill every" -msgstr "Relleno sólido cada" - -#: src/libslic3r/PrintConfig.cpp:1753 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"Esta característica permite forzar una capa sólida en cada número de capas. " -"Cero para deshabilitar. Puede establecer esto en cualquier valor (por " -"ejemplo, 9999); Slic3r seleccionará automáticamente la cantidad máxima " -"posible de capas para combinar según el diámetro de la boquilla y la altura " -"de la capa." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para el relleno de superficies sólidas. Si se deja en cero, se usará " -"el ancho de extrusión por defecto si se establece, de lo contrario se usará " -"1.125 x diámetro de la boquilla. Si se expresa como porcentaje (por ejemplo, " -"90%), se calculará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" -"Velocidad para imprimir regiones sólidas (superior / inferior / conchas " -"horizontales internas). Esto se puede expresar como un porcentaje (por " -"ejemplo: 80%) sobre la velocidad de relleno predeterminada anterior. " -"Establecer a cero para auto." - -#: src/libslic3r/PrintConfig.cpp:1789 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "" -"Número de capas sólidas para generar en las superficies superior e inferior." - -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "Spiral vase" -msgstr "Modo vaso" - -#: src/libslic3r/PrintConfig.cpp:1797 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"Esta función aumentará Z gradualmente mientras imprime un objeto de pared " -"simple para eliminar cualquier costura visible. Esta opción requiere un " -"perímetro único, sin relleno, sin capas sólidas superiores y sin material de " -"soporte. Todavía puede establecer cualquier cantidad de capas sólidas " -"inferiores, así como bucles de falda / balsa. No funcionará al imprimir más " -"de un objeto." - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "Temperature variation" -msgstr "Variación de temperatura" - -#: src/libslic3r/PrintConfig.cpp:1807 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" -"Diferencia de temperatura que se aplicará cuando un extrusor no esté activo. " -"ACtiva una falda \"de sacrificio\" de altura completa en la que las " -"boquillas se limpian periódicamente." - -#: src/libslic3r/PrintConfig.cpp:1818 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Este procedimiento de inicio se inserta en el principio, después de que la " -"cama ha llegado a la temperatura objetivo y el extrusor ha comenzado a " -"calentarse, y después de que haya completado el calentamiento. Si Slic3r " -"detecta un M104 o M190 en los g-codes custom, estos comandos no se iniciarán " -"automaticamente por lo que eres libre de personalizar el orden de " -"calentamiento y otras acciones. Fíjate que puedes utilizar variables de " -"marcación de posición para todos los ajustes de Slic3r, como que puedes usar " -"\"M109 S[first_layer_temperature]\" donde quieras." - -#: src/libslic3r/PrintConfig.cpp:1834 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"Este procedimiento de inicio se inserta en el principio, después de que la " -"impresora haya realizado el g-code de inicio. Si Slic3r detecta un M104, " -"M109, M140 o M190 en los g-codes custom, estos comandos no se iniciarán " -"automaticamente por lo que eres libre de personalizar el orden de " -"calentamiento y otras acciones. Fíjate que puedes utilizar variables de " -"marcación de posición para todos los ajustes de Slic3r, como que puedes usar " -"\"M109 S[first_layer_temperature]\" donde quieras. Si tienes varios " -"extrusores, el g-code se procesará en el orden de estos." - -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Single Extruder Multi Material" -msgstr "Extrusor único de múltiples materiales" - -#: src/libslic3r/PrintConfig.cpp:1851 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "La impresora multiplexa los filamentos en un solo fusor." - -#: src/libslic3r/PrintConfig.cpp:1857 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1858 -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1864 -msgid "Generate support material" -msgstr "Generar material de soporte" - -#: src/libslic3r/PrintConfig.cpp:1866 -msgid "Enable support material generation." -msgstr "Habilite la generación de material de soporte." - -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1873 -msgid "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1880 -msgid "XY separation between an object and its support" -msgstr "Separación XY entre un objeto y su soporte" - -#: src/libslic3r/PrintConfig.cpp:1882 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" -"Separación XY entre un objeto y su soporte. Si se expresa como porcentaje " -"(por ejemplo 50%), se calculará sobre el ancho del perímetro externo." - -#: src/libslic3r/PrintConfig.cpp:1893 -msgid "Pattern angle" -msgstr "Ãngulo del patrón" - -#: src/libslic3r/PrintConfig.cpp:1895 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "" -"Use esta configuración para rotar el patrón de material de soporte en el " -"plano horizontal." - -#: src/libslic3r/PrintConfig.cpp:1906 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "" -"Solo crear soportes si está en contacto con la plataforma. No crea soporte " -"en la impresión." - -#: src/libslic3r/PrintConfig.cpp:1913 -msgid "Contact Z distance" -msgstr "Distancia Z de contacto" - -#: src/libslic3r/PrintConfig.cpp:1915 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"La distancia vertical entre el objeto y la interfaz del material de soporte. " -"Establecer esto en 0 también evitará que Slic3r use el flujo y la velocidad " -"del puente para la primera capa de los objetos." - -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1929 -msgid "Enforce support for the first" -msgstr "Forzar soportes para la primera" - -#: src/libslic3r/PrintConfig.cpp:1931 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"Generar material de soporte para la cantidad especificada de capas contando " -"desde abajo, independientemente de si el material de soporte normal está " -"habilitado o no e independientemente de cualquier umbral de ángulo. Es útil " -"para obtener una mayor adhesión de los objetos que tienen una huella muy " -"delgada o deficiente en la placa de construcción." - -#: src/libslic3r/PrintConfig.cpp:1937 -msgid "Enforce support for the first n layers" -msgstr "Aplicar soportes para las primeras n capas" - -#: src/libslic3r/PrintConfig.cpp:1943 -msgid "Support material/raft/skirt extruder" -msgstr "Extrusor de material de soporte/falda/balsa" - -#: src/libslic3r/PrintConfig.cpp:1945 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" -"El extrusor que se usa al imprimir material de soporte, balsa y falda (1+, 0 " -"para usar la extrusora actual para minimizar los cambios de herramientas)." - -#: src/libslic3r/PrintConfig.cpp:1955 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para el material de soporte. Si se deja en cero, se usará el ancho de " -"extrusión por defecto si se establece, de lo contrario se usará el diámetro " -"de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se " -"calculará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:1964 -msgid "Interface loops" -msgstr "Bucles de interfaz" - -#: src/libslic3r/PrintConfig.cpp:1966 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Cubrir la capa de contacto superior de los soportes con bucles. Desactivado " -"por defecto." - -#: src/libslic3r/PrintConfig.cpp:1972 -msgid "Support material/raft interface extruder" -msgstr "Extrusor del material de soporte/soporte de la balsa" - -#: src/libslic3r/PrintConfig.cpp:1974 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" -"La extrusora que se usa al imprimir la interfaz de material de soporte (1+, " -"0 para usar la extrusora actual para minimizar los cambios de herramientas). " -"Esto también afecta a la balsa." - -#: src/libslic3r/PrintConfig.cpp:1982 -msgid "Interface layers" -msgstr "Capas de interfaz" - -#: src/libslic3r/PrintConfig.cpp:1984 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "" -"Número de capas de interfaz para insertar entre el (los) objeto(s) y el " -"material de soporte." - -#: src/libslic3r/PrintConfig.cpp:1992 -msgid "Interface pattern spacing" -msgstr "Espaciado de patrón de interfaz" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "" -"Espaciado entre líneas de interfaz. Establezca cero para obtener una " -"interfaz sólida." - -#: src/libslic3r/PrintConfig.cpp:2004 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"Velocidad para imprimir capas de interfaz de material de soporte. Si se " -"expresa como porcentaje (por ejemplo, 50%), se calculará sobre la velocidad " -"del material de soporte." - -#: src/libslic3r/PrintConfig.cpp:2013 -msgid "Pattern" -msgstr "Patrón" - -#: src/libslic3r/PrintConfig.cpp:2015 -msgid "Pattern used to generate support material." -msgstr "Patrón utilizado para generar material de soporte." - -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2028 -msgid "Pattern spacing" -msgstr "Espaciado entre patrones" - -#: src/libslic3r/PrintConfig.cpp:2030 -msgid "Spacing between support material lines." -msgstr "Espaciado entre las líneas de material de soporte." - -#: src/libslic3r/PrintConfig.cpp:2040 -msgid "Speed for printing support material." -msgstr "Velocidad para imprimir material de soporte." - -#: src/libslic3r/PrintConfig.cpp:2047 -msgid "Synchronize with object layers" -msgstr "Sincronizar con capas las del objeto" - -#: src/libslic3r/PrintConfig.cpp:2049 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" -"Sincronizar las capas de soporte con las capas de impresión del objeto. Esto " -"es útil con impresoras de múltiples materiales, donde el cambio de el " -"extrusor es costoso." - -#: src/libslic3r/PrintConfig.cpp:2056 -msgid "Overhang threshold" -msgstr "Umbral de voladizos" - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" -"El material de soporte no se generará para voladizos cuyo ángulo de " -"inclinación (90 ° = vertical) esté por encima del umbral dado. En otras " -"palabras, este valor representa la pendiente más horizontal (medida desde el " -"plano horizontal) que puede imprimir sin material de soporte. Ajuste a cero " -"para la detección automática (recomendado)." - -#: src/libslic3r/PrintConfig.cpp:2071 -msgid "With sheath around the support" -msgstr "Con protección alrededor del soporte" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" -"Añadir una funda (una sola línea de perímetro) alrededor de la base del " -"soporte. Esto hace el soporte más fiable pero también más difícil de retirar." - -#: src/libslic3r/PrintConfig.cpp:2081 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "" -"Temperatura del extrusor para capas después del primera. Ajuste esto a cero " -"para desactivar los comandos de control de temperatura en la salida." - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "Temperatura" - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Detect thin walls" -msgstr "Detecta paredes delgadas" - -#: src/libslic3r/PrintConfig.cpp:2092 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"Detecta muros de ancho único (partes donde dos extrusiones no se ajustan y " -"tenemos que colapsarlas en un solo rastro)." - -#: src/libslic3r/PrintConfig.cpp:2099 -msgid "Threads" -msgstr "Núcleos" - -#: src/libslic3r/PrintConfig.cpp:2100 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "" -"Núcleos usados para tareas multi-recurso. Número óptimo de núcleos es " -"ligeramente sobre el numero de núcleos/procesadores disponibles." - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"Este código personalizado se inserta justo antes de cada cambio de extrusor. " -"Tenga en cuenta que puede usar variables de marcador de posición para todas " -"las configuraciones de Slic3r, así como para [previous_extruder] y " -"[next_extruder]." - -#: src/libslic3r/PrintConfig.cpp:2125 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" -"Ajuste este valor distinto de cero para establecer un ancho de extrusión " -"manual para el relleno de las superficies superiores. Es posible que desee " -"utilizar extrusiones más delgadas para llenar todas las regiones estrechas y " -"obtener un acabado más suave. Si se deja en cero, se usará el ancho de " -"extrusión por defecto si se establece, de lo contrario se usará el diámetro " -"de la boquilla. Si se expresa como porcentaje (por ejemplo, 90%), se " -"calculará sobre la altura de la capa." - -#: src/libslic3r/PrintConfig.cpp:2137 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" -"Velocidad para imprimir capas sólidas superiores (solo se aplica a las capas " -"externas superiores y no a sus capas sólidas internas). Es posible que desee " -"reducir la velocidad para obtener un acabado de superficie más agradable. " -"Esto se puede expresar como un porcentaje (por ejemplo: 80%) sobre la " -"velocidad de relleno sólido anterior. Establecer a cero para auto." - -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Superior" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "Number of solid layers to generate on top surfaces." -msgstr "Número de capas sólidas para generar en las superficies superiores." - -#: src/libslic3r/PrintConfig.cpp:2153 -msgid "Top solid layers" -msgstr "Capas solidas superiores" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "" -"Velocidad para movimientos (saltos entre puntos de extrusión distantes)." - -#: src/libslic3r/PrintConfig.cpp:2168 -msgid "Use firmware retraction" -msgstr "Usar la retracción del firmware" - -#: src/libslic3r/PrintConfig.cpp:2169 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Esta configuración experimental utiliza comandos G10 y G11 para que el " -"firmware maneje la retracción. Esto solo se admite en Marlin reciente." - -#: src/libslic3r/PrintConfig.cpp:2176 -msgid "Use relative E distances" -msgstr "Usar las distancias relativas en E" - -#: src/libslic3r/PrintConfig.cpp:2177 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "" -"Si su firmware requiere valores E relativos, verifique esto, de lo " -"contrario, deje sin marcar. La mayoría de los firmwares usan valores " -"absolutos." - -#: src/libslic3r/PrintConfig.cpp:2184 -msgid "Use volumetric E" -msgstr "Usar E volumétrico" - -#: src/libslic3r/PrintConfig.cpp:2185 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"Este ajuste experimental utiliza como salida del E valores en milímetros " -"cúbicos en lugar de milímetros lineales. Si su firmware aún no conoce el " -"(los) diámetro (s) del filamento, puede poner comandos como 'M200 D " -"[filament_diameter_0] T0' en su código G inicial para activar el modo " -"volumétrico y usar el diámetro del filamento asociado al filamento " -"seleccionado. en Slic3r. Esto solo se admite en Marlin reciente." - -#: src/libslic3r/PrintConfig.cpp:2196 -msgid "Enable variable layer height feature" -msgstr "Habilitar la función de altura de capa variable" - -#: src/libslic3r/PrintConfig.cpp:2197 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" -"Algunas impresoras o configuraciones de impresora pueden tener dificultades " -"para imprimir con una altura de capa variable. Habilitado por defecto." - -#: src/libslic3r/PrintConfig.cpp:2204 -msgid "Wipe while retracting" -msgstr "Limpiar mientras se retrae" - -#: src/libslic3r/PrintConfig.cpp:2205 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "" -"Esta bandera moverá la boquilla mientras se retrae para minimizar la posible " -"mancha en los extrusores con fugas." - -#: src/libslic3r/PrintConfig.cpp:2213 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" -"Las impresoras de varios materiales pueden necesitar cebar o purgar " -"extrusoras en los cambios de herramientas. Extruya el exceso de material en " -"la torre de limpieza." - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Purging volumes - load/unload volumes" -msgstr "Volumen de purga - volumen de carga/descarga" - -#: src/libslic3r/PrintConfig.cpp:2221 -msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " -msgstr "" -"Este vector guarda los volúmenes necesarios para cambiar desde/hasta cada " -"herramienta usada en la torre de limpieza. Estos valores se emplean para " -"simplificar la creación de los volúmenes totales de purga más abajo. " - -#: src/libslic3r/PrintConfig.cpp:2228 -msgid "Purging volumes - matrix" -msgstr "Volúmenes de purga - matriz" - -#: src/libslic3r/PrintConfig.cpp:2229 -msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " -msgstr "" -"Esta matriz detalla los volúmenes (en milímetros cúbicos) necesarios para " -"purgar el nuevo filamento en la torre de limpieza para cualquier par de " -"filamentos. " - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Position X" -msgstr "Posición X" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "Coordenada X de la esquina frontal izquierda de la torre de limpieza" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Position Y" -msgstr "Posición Y" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Coordenada Y de la esquina delantera izquierda de la torre de limpieza" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Width of a wipe tower" -msgstr "Ancho de la torre de limpieza" - -#: src/libslic3r/PrintConfig.cpp:2263 -msgid "Wipe tower rotation angle" -msgstr "Ãngulo de rotación de la torre de limpieza" - -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Ãngulo de rotación de la torre de limpieza con respecto al eje X " - -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "grados" - -#: src/libslic3r/PrintConfig.cpp:2272 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2273 -msgid "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2281 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2289 -msgid "Maximal bridging distance" -msgstr "Distancia máxima de puentes" - -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Distancia máxima entre soportes en las secciones con relleno ligero. " - -#: src/libslic3r/PrintConfig.cpp:2297 -msgid "XY Size Compensation" -msgstr "Compensación de tamaño XY" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"El objeto se crecerá / reducirá en el plano XY por el valor configurado " -"(negativo = hacia adentro, positivo = hacia afuera). Esto podría ser útil " -"para ajustar el tamaño de los orificios." - -#: src/libslic3r/PrintConfig.cpp:2308 -msgid "Z offset" -msgstr "Ajuste en altura Z" - -#: src/libslic3r/PrintConfig.cpp:2309 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"Este valor será añadido (o eliminado) de todas las coordenadas Z en el G-" -"code de salida. Se usa para compensar una mala posición del final de carrera " -"Z: por ejemplo, si tu interruptor deja la boquilla a 0.3mm de la base de " -"impresión, ajustalo a -0.3 (o arregla tu interruptor)." - -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2380 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2381 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2387 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2389 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2396 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2402 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2410 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2411 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2489 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2494 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2496 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2512 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2514 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2521 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2523 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2530 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2531 -msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2540 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2542 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2546 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2548 -msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2557 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2559 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2566 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2568 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2575 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2577 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2584 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2586 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2593 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2595 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2631 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2636 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2645 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2654 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2663 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 -msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "Mezclado" - -#: src/libslic3r/GCode/PreviewData.cpp:396 -msgid "Height (mm)" -msgstr "Altura (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Ancho (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:400 -msgid "Speed (mm/s)" -msgstr "Velocidad (mm/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:402 -msgid "Volumetric flow rate (mm3/s)" -msgstr "Tasa de flujo volumétrico (mm3/seg)" - -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" diff --git a/resources/localization/fr_FR/Slic3rPE.mo b/resources/localization/fr_FR/Slic3rPE.mo deleted file mode 100644 index 128106a4c..000000000 Binary files a/resources/localization/fr_FR/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/fr_FR/Slic3rPE_fr.po b/resources/localization/fr_FR/Slic3rPE_fr.po deleted file mode 100644 index 36a89e94d..000000000 --- a/resources/localization/fr_FR/Slic3rPE_fr.po +++ /dev/null @@ -1,4831 +0,0 @@ -msgid "" -msgstr "" -"Language: fr_FR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.0.8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488 -msgid "" -"\n" -"\n" -"and it has the following unsaved changes:" -msgstr "" -"\n" -"\n" -"et il y a les changements non sauvegardés suivants :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1491 -msgid "" -"\n" -"\n" -"Discard changes and continue anyway?" -msgstr "" -"\n" -"\n" -"Annuler les changements et continuer malgré tout ?" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1489 -msgid "" -"\n" -"\n" -"has the following unsaved changes:" -msgstr "" -"\n" -"\n" -"a les changements suivants non-enregistrés :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488 -msgid "" -"\n" -"\n" -"is not compatible with printer\n" -msgstr "" -"\n" -"\n" -"n'est pas compatible avec l'imprimante\n" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:34 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"Pendant les autres couches, le ventilateur " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:30 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Si le temps estimé pour la couche est supérieur, mais cependant inférieur à ~%ds, le ventilateur tournera à une vitesse proportionnellement décroissante entre %d%% et %d%%." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:927 -msgid "" -"\n" -"Non-positive value." -msgstr "" -"\n" -"Valeur non-positive." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:928 -msgid "" -"\n" -"Not a numeric value." -msgstr "" -"\n" -"Valeur non-numérique." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66 -msgid " - Remember to check for updates at http://github.com/supermerill/slic3r/releases" -msgstr " - Pensez à vérifier les mises à jours sur http://github.com/supermerill/slic3r/releases" - -# Used in this context: _("Save ") + title + _(" as:") -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751 -msgid " as:" -msgstr " sous :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:226 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " à une vitesse de filament de %3.2f mm/s." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1035 -msgid " Browse " -msgstr " Parcourir " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:215 -msgid " flow rate is maximized " -msgstr " le débit est maximisé " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" le motif de remplissage n'est pas supposé fonctionner à une densité de 100%.\n" -"\n" -"Dois-je passer au motif de remplissage rectiligne ?" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1470 -msgid " preset\n" -msgstr " préréglage\n" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469 -msgid " preset" -msgstr " préréglage" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1583 -msgid " Preset" -msgstr " Préréglage" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:942 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1637 -msgid " Set " -msgstr " Appliquer " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581 -msgid " the selected preset?" -msgstr " le préréglage sélectionné ?" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:548 -msgid " was successfully sliced." -msgstr " a été découpé avec succès." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:220 -msgid " with a volumetric rate " -msgstr " avec un débit volumétrique " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:99 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:504 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:789 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:850 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1060 -msgid "%" -msgstr "%" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:224 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/s" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1958 -#, perl-format -msgid "%d (%d shells)" -msgstr "%d (%d coques)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1965 -#, perl-format -msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" -msgstr "%d faces invalides, %d arrêtes corrigées, %d faces retirées, %d faces ajoutées, %d faces inversées, %d arrêtes à l'envers" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:269 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d lignes : %.2lf mm" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:687 -#, perl-format -msgid "%d presets successfully imported." -msgstr "%d préréglages importés avec succès." - -#: xs/src/slic3r/GUI/Field.cpp:102 -#, c-format -msgid "%s doesn't support percentage" -msgstr "%s ne supporte pas un pourcentage" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408 -msgid "&About Slic3r" -msgstr "&A propos de Slic3r" - -#: xs/src/slic3r/GUI/GUI.cpp:466 -msgid "&Configuration" -msgstr "&Configuration" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263 -msgid "&Export Config Bundle…" -msgstr "&Exporter le Lot de Configurations…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257 -msgid "&Export Config…\tCtrl+E" -msgstr "&Exporter la configuration…\tCtrl+E" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:418 -msgid "&File" -msgstr "&Fichier" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:791 -msgid "&Finish" -msgstr "&Fin" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:426 -msgid "&Help" -msgstr "&Aide" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260 -msgid "&Load Config Bundle…" -msgstr "&Charger le Lot de Configurations…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254 -msgid "&Load Config…\tCtrl+L" -msgstr "&Charger la configuration…\tCtrl+L" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:420 -msgid "&Object" -msgstr "&Objet" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:419 -msgid "&Plater" -msgstr "&Plateau" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304 -msgid "&Quit" -msgstr "&Quitter" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280 -msgid "&Repeat Last Quick Slice\tCtrl+Shift+U" -msgstr "&Répéter la dernière découpe rapide\tCtrl+Shift+U" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:422 -msgid "&View" -msgstr "&Vue" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:421 -msgid "&Window" -msgstr "&Fenêtre" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291 -msgid "(&Re)Slice Now\tCtrl+S" -msgstr "(&Re)Découper maintenant\tCtrl+S" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:994 -msgid "(minimum)" -msgstr "(minimum)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474 -msgid ") not found." -msgstr ") non trouvé." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749 -msgid ". Discard changes and continue anyway?" -msgstr ". Annuler les changements et continuer malgré tout ?" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:63 -msgid "1 Layer" -msgstr "1 Couche" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:138 -msgid "2D" -msgstr "2D" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:104 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2124 -msgid "3D" -msgstr "3D" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1608 -msgid "3MF file exported to " -msgstr "Fichier 3MF exporté vers " - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:185 -msgid "45° ccw" -msgstr "45° ccw" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:186 -msgid "45° cw" -msgstr "45° cw" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:148 -msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." -msgstr "Une expression booléenne utilisant les valeurs de configuration d'un profil d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil est considéré comme compatible avec le profil d'imprimante actif." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:480 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "La règle générale est 160 à 230 °C pour le PLA et 215 à 250 °C pour l'ABS." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:494 -msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." -msgstr "La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro si vous n'avez pas de lit chauffant." - -#: xs/src/slic3r/GUI/AboutDialog.cpp:32 -msgid "About Slic3r" -msgstr "A propos de Slic3r" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1099 -msgid "Above Z" -msgstr "Au-delà de Z" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:417 -msgid "Acceleration control (advanced)" -msgstr "Contrôle de l'accélération (avancé)" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:70 -msgid "Activate" -msgstr "Activer" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:36 -msgid "Active: " -msgstr "Actif : " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1566 -msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." -msgstr "Ajouter une enveloppe (une ligne unique de périmètre) autour de la base du support. Ceci rend le support plus fiable, mais aussi plus difficile à retirer." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:299 -#, no-c-format -msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." -msgstr "Ajouter plus de périmètres si nécessaire pour éviter des trous dans les parois inclinées. Slic3r ajoute des périmètres, jusqu'à ce que plus de 70% de la boucle immédiatement au-dessus soit supportée." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:240 -msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." -msgstr "Ajouter un remplissage plein à proximité des surfaces inclinées pour garantir une épaisseur de coque verticale (couches pleines supérieures+inférieures)." - -#: xs/src/slic3r/GUI/Tab.cpp:754 -msgid "Additional information:" -msgstr "Informations complémentaires :" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:288 -msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." -msgstr "De plus, un instantané de sauvegarde de l'ensemble de la configuration est créé avant qu'une mise à jour ne soit appliquée." - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:66 -msgid "Address" -msgstr "Adresse" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:177 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:195 -msgid "Add…" -msgstr "Ajouter…" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:342 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:356 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:449 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:452 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:831 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1113 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:107 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:208 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:736 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1733 -msgid "Advanced" -msgstr "Avancé" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:319 -msgid "Advanced: avrdude output log" -msgstr "Avancé : journal de sortie avrdude" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1138 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:766 -msgid "After layer change G-code" -msgstr "G-Code après changement de couche" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1636 -msgid "All" -msgstr "Tous" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089 -msgid "Along X axis…" -msgstr "Le long de l'axe X…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092 -msgid "Along Y axis…" -msgstr "Le long de l'axe Y…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095 -msgid "Along Z axis…" -msgstr "Le long de l'axe Z…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1592 -msgid "AMF file exported to " -msgstr "Fichier AMF exporté vers " - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300 -msgid "Another export job is currently running." -msgstr "Une autre tâche d'export est actuellement en cours." - -#: xs/src/slic3r/GUI/Tab.cpp:749 -msgid "Any modifications should be saved as a new preset inherited from this one. " -msgstr "Toute modification doit être enregistrée comme un nouveau préréglage hérité de celui-ci. " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:901 -msgid "API Key" -msgstr "Clé API" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299 -msgid "Application preferences" -msgstr "Préférences de l'application" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332 -msgid "Application will be restarted" -msgstr "L'application va être redémarrée" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:397 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1242 -msgid "approximate seconds" -msgstr "secondes approximatives" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581 -msgid "Are you sure you want to " -msgstr "Êtes-vous sûr de vouloir " - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:365 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"Êtes-vous certain de vouloir annuler le processus de flash du firmware ?\n" -"Cela pourrait rendre votre imprimante inutilisable !" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044 -msgid "Around X axis…" -msgstr "Autour de l'axe X…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047 -msgid "Around Y axis…" -msgstr "Autour de l'axe Y…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050 -msgid "Around Z axis…" -msgstr "Autour de l'axe Z…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:180 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:198 -msgid "Arrange" -msgstr "Agencer" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:224 -msgid "Array of language names and identifiers should have the same size." -msgstr "Les tableaux de noms et d'identifiants de langue doivent avoir la même taille." - -#: xs/src/slic3r/GUI/GUI.cpp:688 -msgid "Attempt to free unreferenced scalar" -msgstr "Tentative de libération d'un scalaire non référencé" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332 -msgid "Attention!" -msgstr "Attention !" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:35 -msgid "Auto-center parts" -msgstr "Centrer automatiquement les pièces" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1960 -#, perl-format -msgid "Auto-repaired (%d errors)" -msgstr "Réparé automatiquement (%d erreurs)" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:264 -msgid "Automatic updates" -msgstr "Mises à jour automatiques" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294 -msgid "Automatically repair an STL file" -msgstr "Réparer automatiquement un fichier STL" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:424 -msgid "Autospeed (advanced)" -msgstr "Vitesse automatique (avancé)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:26 -msgid "Avoid crossing perimeters" -msgstr "Éviter de traverser les périmètres" - -#: xs/src/slic3r/GUI/Tab.cpp:2491 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved preset." -msgstr "" -"L'icône FLÈCHE ARRIÈRE indique que les paramètres ont été changés et qu'ils ne sont pas identiques au dernier préréglage enregistré du groupe d'options en cours.\n" -"Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec les valeurs du dernier préréglage enregistré." - -#: xs/src/slic3r/GUI/Tab.cpp:2505 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"L'icône FLÈCHE ARRIÈRE indique que la valeur a été changée et qu'elle n'est pas identique au dernier préréglage enregistré.\n" -"Cliquez pour restaurer la valeur à celle du dernier préréglage enregistré." - -#: xs/src/slic3r/GUI/Tab.cpp:2455 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." -msgstr "" -"FLÈCHE ARRIÈRE;indique que les paramètres ont été changés et qu'ils ne sont pas identiques au dernier préréglage enregistré du groupe d'options en cours.\n" -"Cliquez sur l'icône FLÈCHE ARRIÈRE pour restaurer tous les paramètres du groupe d'options en cours avec les valeurs du dernier préréglage enregistré." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:43 -msgid "Background processing" -msgstr "Tâche en arrière plan" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:800 -msgid "Bed" -msgstr "Plateau" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:940 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:34 -msgid "Bed shape" -msgstr "Forme du plateau" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp:42 -msgid "Bed Shape" -msgstr "Forme du plateau" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:395 -msgid "Bed Shape and Size" -msgstr "Forme du Plateau et Taille" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:42 -msgid "Bed temperature" -msgstr "Température du plateau" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:39 -msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." -msgstr "Température du plateau pour les couches après la première. Mettez ceci à zéro pour désactiver les commandes de contrôle de température du plateau dans la sortie." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:497 -msgid "Bed Temperature:" -msgstr "Température du Plateau :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1132 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:48 -msgid "Before layer change G-code" -msgstr "G-Code avant changement de couche" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:19 -msgid "Before roll back" -msgstr "Avant le retour en arrière" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1108 -msgid "Below Z" -msgstr "En-deçà de Z" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:59 -msgid "Between objects G-code" -msgstr "Entre le G-code des objets" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1150 -msgid "Between objects G-code (for sequential printing)" -msgstr "Entre le G-code des objets (pour une impression séquentielle)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:68 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370 -msgid "Bottom" -msgstr "Dessous" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:72 -msgid "Bottom solid layers" -msgstr "Couches pleines inférieures" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370 -msgid "Bottom View" -msgstr "Vue du Dessous" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:77 -msgid "Bridge" -msgstr "Ponts" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:144 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:86 -msgid "Bridge infill" -msgstr "Remplissage du pont" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:117 -msgid "Bridges" -msgstr "Ponts" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:97 -msgid "Bridges fan speed" -msgstr "Vitesse du ventilateur pour les ponts" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:86 -msgid "Bridging" -msgstr "Pont" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:88 -msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." -msgstr "Ecraser l'angle des ponts. Si laissé à zéro, l'angle des ponts sera calculé automatiquement. Sinon, l'angle fourni sera utilisé pour tous les ponts. Utilisez 180° pour un angle nul." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214 -msgid "Bridging volumetric" -msgstr "Volumétrie des ponts" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:371 -msgid "Brim" -msgstr "Jupe" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:127 -msgid "Brim width" -msgstr "Largeur de la jupe" - -#: xs/src/slic3r/GUI/ButtonsDescription.cpp:13 -msgid "Buttons And Text Colors Description" -msgstr "Description des Boutons et des Couleurs de Texte" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:218 -msgid "by the print profile maximum" -msgstr "par le maximum du profil de l'imprimante" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:85 -msgid "Cancel" -msgstr "Annuler" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:213 -msgid "Cancelling..." -msgstr "Annulation..." - -#: xs/src/slic3r/GUI/Tab.cpp:2124 -msgid "Cannot overwrite a system profile." -msgstr "Impossible d'écraser un profil système." - -#: xs/src/slic3r/GUI/Tab.cpp:2128 -msgid "Cannot overwrite an external profile." -msgstr "Impossible d'écraser un profil externe." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:962 -msgid "Capabilities" -msgstr "Fonctionnalités" - -#: xs/src/slic3r/GUI/GUI.cpp:403 -msgid "Capture a configuration snapshot" -msgstr "Capturer un instantané de la configuration" - -#: xs/src/slic3r/GUI/Tab.cpp:1597 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:325 -msgid "Change Application Language" -msgstr "Changer la langue de l'application" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030 -msgid "Change the number of copies of the selected object" -msgstr "Changer le nombre de copies de l'objet sélectionné" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:272 xs/src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Vérifier les mises à jour de l'application" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Choisir un fichier à partir duquel importer la forme du plateau (STL/OBJ/AMF/3MF/PRUSA) :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:457 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :" - -#: c:\src\Slic3r\lib\Slic3r\GUI.pm:286 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Choisir un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA) :" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:360 -msgid "Choose the type of firmware used by your printer." -msgstr "Choisissez le type de firmware utilisé par votre imprimante." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:62 -msgid "Circular" -msgstr "Circulaire" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:135 -msgid "Clip multi-part objects" -msgstr "Dissocier les objets multi-pièces" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:405 -msgid "Color" -msgstr "Couleur" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:690 -msgid "Combine infill every" -msgstr "Combiner le remplissage toutes les" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:696 -msgid "Combine infill every n layers" -msgstr "Combiner le remplissage toutes les n couches" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:509 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:869 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1668 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:143 -msgid "Compatible printers" -msgstr "Imprimantes compatibles" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:147 -msgid "Compatible printers condition" -msgstr "Condition de compatibilité des imprimantes" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:154 -msgid "Complete individual objects" -msgstr "Compléter les objets individuels" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:846 -msgid "Configuration Assistant" -msgstr "Assistant de Configuration" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:884 -msgid "Configuration notes" -msgstr "Notes de configuration" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:96 xs/src/slic3r/GUI/GUI.cpp:402 -msgid "Configuration Snapshots" -msgstr "Instantanés de Configuration" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:69 -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:161 -msgid "Configuration update" -msgstr "Mise à jour de la configuration" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:69 -msgid "Configuration update is available" -msgstr "Une mise à jour de la configuration est disponible" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:844 -msgid "Configuration Wizard" -msgstr "Assistant de Configuration" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:366 -msgid "Confirmation" -msgstr "Confirmation" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1020 -msgid "Connection failed." -msgstr "La connexion a échoué." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:211 -msgid "Connection to OctoPrint works correctly." -msgstr "La connexion avec OctoPrint fonctionne correctement." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017 -msgid "Connection to printer works correctly." -msgstr "La connexion avec l'imprimante fonctionne correctement." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1416 -msgid "Contact Z distance" -msgstr "Distance de contact Z" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:120 -msgid "Controller" -msgstr "Contrôleur" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:805 -msgid "Cooling" -msgstr "Refroidissement" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:826 -msgid "Cooling thresholds" -msgstr "Seuils de refroidissement" - -#: xs/src/libslic3r/PrintConfig.cpp:178 -msgid "Cooling tube length" -msgstr "Longueur du tube de refroidissement" - -#: xs/src/libslic3r/PrintConfig.cpp:170 -msgid "Cooling tube position" -msgstr "Position du tube de refroidissement" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:221 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900 -msgid "Copies" -msgstr "Copies" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:476 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:450 -msgid "Cost" -msgstr "Coût" - -#: xs/src/slic3r/GUI/Tab.cpp:1571 -msgid "Could not connect to OctoPrint" -msgstr "Impossible de se connecter à OctoPrint" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1465 -msgid "Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "Recouvrir la couche de contact supérieure des supports avec des boucles. Désactivé par défaut." - -#: xs/src/slic3r/GUI/Tab.cpp:743 -msgid "Current preset is inherited from " -msgstr "Le préréglage en cours a hérité de " - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:41 -msgid "Current version:" -msgstr "Version actuelle :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:71 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:150 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:92 -msgid "Custom" -msgstr "Personnalisé" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:846 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1119 -msgid "Custom G-code" -msgstr "G-code personnalisé" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:240 -msgid "Custom setup" -msgstr "Configuration personnalisée" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:189 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:205 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102 -msgid "Cut…" -msgstr "Couper…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027 -msgid "Decrease copies" -msgstr "Réduire les copies" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:300 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:170 -msgid "Default" -msgstr "Défaut" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp:42 -msgid "default" -msgstr "défaut" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469 -msgid "Default " -msgstr "Défaut " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:489 -msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." -msgstr "Angle de base par défaut pour l'orientation du remplissage. Des croisements seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure direction que Slic3r peut détecter, ce réglage ne les affecteront donc pas." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:376 -msgid "Default extrusion width" -msgstr "Largeur d'extrusion par défaut" - -#: xs/src/slic3r/GUI/Tab.cpp:767 -msgid "default filament profile" -msgstr "profil du filament par défaut" - -#: xs/src/libslic3r/PrintConfig.cpp:196 -msgid "Default filament profile" -msgstr "Profil de filament par défaut" - -#: xs/src/libslic3r/PrintConfig.cpp:197 -msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." -msgstr "Profil de filament par défaut associé au profil d'imprimante courant. En sélectionnant le profil d'imprimante courant, ce profil de filament sera activé." - -#: xs/src/slic3r/GUI/Tab.cpp:2287 xs/src/slic3r/GUI/Tab.cpp:2373 -msgid "Default presets" -msgstr "Préréglages par défaut" - -#: xs/src/libslic3r/PrintConfig.cpp:202 -msgid "Default print profile" -msgstr "Profil de filament par défaut" - -#: xs/src/slic3r/GUI/Tab.cpp:764 -msgid "default print profile" -msgstr "profil d'impression par défaut" - -#: xs/src/libslic3r/PrintConfig.cpp:203 -msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." -msgstr "Profil de filament par défaut associé au profil d'imprimante courant. En sélectionnant le profil d'imprimante courant, ce profil de filament sera activé." - -#: xs/src/libslic3r/PrintConfig.cpp:1849 -msgid "degrees" -msgstr "degrés" - -#: xs/src/libslic3r/PrintConfig.cpp:476 -msgid "Delay after unloading" -msgstr "Délai après le déchargement" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:178 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:196 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021 -msgid "Delete" -msgstr "Supprimer" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580 -msgid "delete" -msgstr "supprimer" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:179 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:197 -msgid "Delete All" -msgstr "Tout Supprimer" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:51 -msgid "Delete this preset" -msgstr "Supprimer ce préréglage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:440 -msgid "Density" -msgstr "Densité" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:503 -#, no-c-format -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:507 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:867 -msgid "Dependencies" -msgstr "Dépendances" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1142 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1143 -msgid "Deretraction Speed" -msgstr "Vitesse de Réinsertion" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:940 -msgid "Detect bridging perimeters" -msgstr "Détecter les périmètres faisant des ponts" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1584 -msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." -msgstr "Détecter les parois de largeur unique (où deux extrusions côte à côte ne rentrent pas et doivent êtres fusionnées en un seul trait)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1582 -msgid "Detect thin walls" -msgstr "Détecter les parois fines" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:66 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:431 -msgid "Diameter" -msgstr "Diamètre" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:67 -msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." -msgstr "Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est située au centre." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1169 -msgid "Direction" -msgstr "Direction" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:53 -msgid "Disable communication with the printer over a serial / USB cable. This simplifies the user interface in case the printer is never attached to the computer." -msgstr "Désactiver la communication avec l'imprimante via un câble série / USB. Ceci simplifie l'interface utilisateur dans le cas où l'imprimante n'est jamais connectée à l'ordinateur." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:180 -msgid "Disable fan for the first" -msgstr "Désactiver le ventilateur pour le(s) première(s)" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:51 -msgid "Disable USB/serial connection" -msgstr "Désactiver la connexion USB/série" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:916 -msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." -msgstr "Désactiver la rétraction lorsque le chemin de déplacement ne franchit pas les périmètres des couches supérieures (et donc les coulures seront probablement invisibles)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:198 -msgid "Distance between copies" -msgstr "Distance entre les copies" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1213 -msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." -msgstr "Distance entre le ou les objet(s) et la clôture. Mettez zéro pour attacher la clôture a(ux) objet(s) et obtenir une jupe, mais dans ce cas préférez l'utilisation du paramètre de la taille de jupe." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1212 -msgid "Distance from object" -msgstr "Distance de l'objet" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:58 -msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." -msgstr "Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du rectangle." - -#: xs/src/libslic3r/PrintConfig.cpp:171 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "Distance entre le point central du tube de refroidissement et la pointe de l'extrudeur. " - -#: xs/src/libslic3r/PrintConfig.cpp:1032 -msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware. " -msgstr "Distance entre la pointe de l'extrudeur et la position où le filament est positionné en attente lorsqu'il est déchargé. Cela doit correspondre à la valeur dans le firmware de l'imprimante. " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:199 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Distance utilisée par la fonction d'agencement automatique du plateau." - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:51 -msgid "Don't notify about new releases any more" -msgstr "Ne plus me notifier au sujet des nouvelles publications" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:190 -msgid "Don't support bridges" -msgstr "Ne pas supporter les ponts" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:17 -msgid "Downgrade" -msgstr "Rétrograder" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:132 -msgid "Drag your objects here" -msgstr "Glissez vos objets ici" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:207 -msgid "Elephant foot compensation" -msgstr "Compensation de l'effet patte d'éléphant" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:806 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:922 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1695 -msgid "Enable" -msgstr "Activer" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:163 -msgid "Enable auto cooling" -msgstr "Activer le refroidissement automatique" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:394 -msgid "Enable fan if layer print time is below" -msgstr "Activer le ventilateur si le temps d'impression de la couche est inférieur à" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1381 -msgid "Enable support material generation." -msgstr "Activer la génération des supports." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:645 -msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." -msgstr "Activez ceci pour obtenir un fichier G-code commenté, avec chaque ligne expliquée par un texte descriptif. Si vous imprimez depuis une carte SD, le poids supplémentaire du fichier pourrait ralentir le firmware de votre imprimante." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1681 -msgid "Enable variable layer height feature" -msgstr "Activer la fonction de hauteur de couche variable" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:853 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1126 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:217 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:227 -msgid "End G-code" -msgstr "G-code de fin" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1431 -msgid "Enforce support for the first" -msgstr "Renforcer le support sur le(s) première(s)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1439 -msgid "Enforce support for the first n layers" -msgstr "Renforcer le support pour les n premières couches" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:238 -msgid "Ensure vertical shell thickness" -msgstr "S'assurer de l'épaisseur de la coque verticale" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:493 -msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." -msgstr "Entrez la température du lit nécessaire pour que votre filament colle à votre lit chauffant." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:441 -msgid "Enter the diameter of your filament." -msgstr "Entrez le diamètre de votre filament." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:428 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Entrez le diamètre de la buse de la tête d'impression de votre imprimante." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 -msgid "Enter the new max size for the selected object:" -msgstr "Entrez la nouvelle taille maximale pour l'objet sélectionné :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1030 -#, perl-format -msgid "Enter the new size for the selected object (print bed: %smm):" -msgstr "Entrez la nouvelle taille pour l'objet sélectionné (plateau d'impression : %s mm) :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900 -msgid "Enter the number of copies of the selected object:" -msgstr "Entrez le nombre de copies de l'objet sélectionné :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061 -#, no-perl-format -msgid "Enter the scale % for the selected object:" -msgstr "Entrez l'échelle en % pour l'objet sélectionné :" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:479 -msgid "Enter the temperature needed for extruding your filament." -msgstr "Entrez la température nécessaire pour extruder votre filament." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:477 -msgid "Enter your filament cost per kg here. This is only for statistical information." -msgstr "Entrez le coût par Kg de votre filament. Ceci est uniquement pour l'information statistique." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:441 -msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." -msgstr "Entrez ici la densité de votre filament. Ceci est uniquement pour des informations statistiques. Un bon moyen d'obtenir cette valeur est de peser un morceau de filament d'une longueur connue et de calculer le rapport de sa longueur par son poids. Le mieux est de calculer le volume directement par déplacement." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:432 -msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." -msgstr "Entrez le diamètre de votre filament ici. Une bonne précision est requise, utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le long du filament." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:488 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:470 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300 -msgid "Error" -msgstr "Erreur" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1612 -msgid "Error exporting 3MF file " -msgstr "Erreur d'export du fichier 3MF " - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1596 -msgid "Error exporting AMF file " -msgstr "Erreur d'export du fichier AMF " - -#: xs/src/slic3r/Utils/OctoPrint.cpp:47 -msgid "Error while uploading to the OctoPrint server" -msgstr "Erreur lors du téléchargement vers le serveur OctoPrint" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:315 -msgid "Error! " -msgstr "Erreur ! " - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:451 -msgid "Estimated printing time" -msgstr "Temps d'impression estimé" - -#: xs/src/slic3r/GUI/GUI.cpp:885 -msgid "Everywhere" -msgstr "Partout" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:44 -#, c-format -msgid "except for the first %d layers" -msgstr "sauf pour les %d première couches" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:48 -msgid "except for the first layer" -msgstr "sauf pour la première couche" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:141 -msgid "Exit Slic3r" -msgstr "Quitter Slic3r" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:192 -msgid "Experimental option for preventing support material from being generated under bridged areas." -msgstr "Option expérimentale pour empêcher la génération de support sous les ponts." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:942 -msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." -msgstr "Option expérimentale qui ajuste le flux pour les surplombs (le flux pour les ponts sera utilisé), leur applique la vitesse pour les ponts et active le ventilateur." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263 -msgid "Export all presets to file" -msgstr "Exporter tous les préréglage vers un fichier" - -#: lib/Slic3r/GUI/Plater.pm:1416 -msgid "Export cancelled" -msgstr "Exportation annulée" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257 -msgid "Export current configuration to file" -msgstr "Exporter la configuration actuelle vers un fichier" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323 -msgid "Export current plate as 3MF" -msgstr "Exporter le plateau courant en 3MF" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320 -msgid "Export current plate as AMF" -msgstr "Exporter le plateau courant en AMF" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314 -msgid "Export current plate as G-code" -msgstr "Exporter le plateau courant en G-code" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317 -msgid "Export current plate as STL" -msgstr "Exporter le plateau courant en STL" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1454 -msgid "Export failed" -msgstr "L'export a échoué" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314 -msgid "Export G-code..." -msgstr "Exporter le G-code..." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:236 -msgid "Export G-code…" -msgstr "Exporter le G-code…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113 -msgid "Export object as STL…" -msgstr "Exporter l'objet en STL…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323 -msgid "Export plate as 3MF..." -msgstr "Exporter le plateau en 3MF..." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320 -msgid "Export plate as AMF..." -msgstr "Exporter le plateau en AMF..." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317 -msgid "Export plate as STL..." -msgstr "Exporter le plateau en STL..." - -#: xs/src/slic3r/GUI/GUI.cpp:950 -msgid "Export print config" -msgstr "Exporter la configuration d'impression" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:240 -msgid "Export STL…" -msgstr "Exporter le STL…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113 -msgid "Export this single object as STL file" -msgstr "Exporter cet unique objet en fichier STL" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:139 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:81 -msgid "External perimeter" -msgstr "Périmètre externe" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:267 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:277 -msgid "External perimeters" -msgstr "Périmètres externes" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:151 -msgid "external perimeters" -msgstr "périmètres externes" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:289 -msgid "External perimeters first" -msgstr "Périmètres externes en premier" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1118 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1126 -msgid "Extra length on restart" -msgstr "Longueur supplémentaire à la reprise" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:297 -msgid "Extra perimeters if needed" -msgstr "Périmètres supplémentaires si nécessaire" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:795 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1234 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:307 -msgid "Extruder" -msgstr "Extrudeur" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1187 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:400 -#, c-format -msgid "Extruder %d" -msgstr "Extrudeur %d" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:463 -msgid "Extruder and Bed Temperatures" -msgstr "Températures de l'Extrudeur et du Lit" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:224 -msgid "Extruder changed to" -msgstr "Extrudeur changé à" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:479 -msgid "Extruder clearance (mm)" -msgstr "Dégagement de l'extrudeur (mm)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:342 -msgid "Extruder Color" -msgstr "Couleur de l'extrudeur" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:350 -msgid "Extruder offset" -msgstr "Décalage de l'extrudeur" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:626 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Température de l’extrudeur pour la première couche. Si vous voulez contrôler manuellement la température au cours de l’impression, mettez à zéro pour désactiver les commandes de contrôle de température dans le fichier de sortie." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1573 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Température de l'extrudeur pour les couches après la première. Mettez zéro pour désactiver les commandes de contrôle de la température dans le fichier de sortie." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:431 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:966 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:308 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:702 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:958 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1272 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1445 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1471 -msgid "Extruders" -msgstr "Extrudeurs" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:360 -msgid "Extrusion axis" -msgstr "Axe d'extrusion" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:367 -msgid "Extrusion multiplier" -msgstr "Multiplicateur d'extrusion" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:483 -msgid "Extrusion Temperature:" -msgstr "Température d'Extrusion :" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:268 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:377 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:592 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:710 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:967 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1292 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1454 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1614 -msgid "Extrusion Width" -msgstr "Largeur d'Extrusion" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:453 -msgid "Extrusion width" -msgstr "Largeur d'extrusion" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:410 -msgid "Facets" -msgstr "Faces" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:36 -msgid "Fan " -msgstr "Ventilateur " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:817 -msgid "Fan settings" -msgstr "Réglages du ventilateur" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:818 -msgid "Fan speed" -msgstr "Vitesse du ventilateur" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:330 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:68 -msgid "Feature type" -msgstr "Type de fonctionnalité" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:78 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:79 -msgid "Feature types" -msgstr "Types de fonctionnalité" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:183 -msgid "Fewer" -msgstr "Moins" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:786 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:787 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:368 -msgid "Filament" -msgstr "Filament" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:412 -msgid "Filament and Nozzle Diameters" -msgstr "Diamètres du Filament et de la Buse" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:445 -msgid "Filament Diameter:" -msgstr "Diamètre du Filament :" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:412 -msgid "Filament notes" -msgstr "Notes du filament" - -#: xs/src/libslic3r/PrintConfig.cpp:1031 -msgid "Filament parking position" -msgstr "Position d'attente du filament" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:832 -msgid "Filament properties" -msgstr "Propriétés du filament" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:202 -msgid "Filament Settings" -msgstr "Réglages du filament" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:450 -msgid "Filament type" -msgstr "Type de filament" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 -msgid "filaments" -msgstr "filaments" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1445 -msgid "File added to print queue" -msgstr "Fichier ajouté à la file d'impression" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:475 -msgid "File Not Found" -msgstr "Fichier non trouvé" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:487 -msgid "Fill angle" -msgstr "Angle du remplissage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:501 -msgid "Fill density" -msgstr "Densité du remplissage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:539 -msgid "Fill pattern" -msgstr "Motif de remplissage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:541 -msgid "Fill pattern for general low-density infill." -msgstr "Motif pour les remplissages de faible densité." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:248 -msgid "Fill pattern for top/bottom infill. This only affects the external visible layer, and not its adjacent solid shells." -msgstr "Motif pour les surfaces supérieurs/inférieurs. Ceci affecte seulement la couche externe visible, et non les replissages plein adjacents." - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:194 -msgid "Finished" -msgstr "Terminé" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1110 -msgid "Firmware" -msgstr "Firmware" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:266 -msgid "Firmware flasher" -msgstr "Outil de flash du firmware" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:293 -msgid "Firmware image:" -msgstr "Image du firmware :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1314 -msgid "Firmware Retraction" -msgstr "Rétraction du Firmware" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:356 -msgid "Firmware Type" -msgstr "Type de Firmware" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:573 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:582 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:591 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:625 -msgid "First layer" -msgstr "Première couche" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:603 -msgid "First layer height" -msgstr "Hauteur de la première couche" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:615 -msgid "First layer speed" -msgstr "Vitesse de la première couche" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214 -msgid "First layer volumetric" -msgstr "Volume de la première couche" - -#: xs/src/slic3r/GUI/GUI.cpp:326 -msgid "Flash printer firmware" -msgstr "Flasher le firmware de l'imprimante" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:84 -msgid "Flash!" -msgstr "Flash !" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:147 -msgid "Flashing cancelled." -msgstr "Processus de flash annulé." - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:146 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "Le processus de flash a échoué. Veuillez consulter le journal avrdude ci-dessous." - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:123 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Processus de flash en cours. Veuillez ne pas déconnecter l'imprimante !" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:145 -msgid "Flashing succeeded!" -msgstr "Flash effectué avec succès !" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:466 -msgid "Flow" -msgstr "Flux" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:181 -msgid "For more information please visit our wiki page:" -msgstr "Pour plus d'informations, merci de visiter notre page wiki :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:599 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"Pour que la tour de nettoyage fonctionne avec des supports solubles, les couches de support\n" -"doivent être synchronisées avec les couches de l'objet.\n" -"\n" -"Dois-je synchroniser les couches de support pour pouvoir activer la tour de nettoyage ?" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1264 -msgid "Force solid infill for regions having a smaller area than the specified threshold." -msgstr "Forcer un remplissage plein pour les zones ayant une surface plus petite que la valeur indiquée." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:758 -msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." -msgstr "Force la génération de coques pleines entre des volumes/matériaux adjacents. Utile pour des impressions multi-extrudeurs avec des matériaux translucides ou avec un support manuel soluble." - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:260 -msgid "From" -msgstr "De" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371 -msgid "Front" -msgstr "Avant" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371 -msgid "Front View" -msgstr "Vue Avant" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -msgid "G-code" -msgstr "G-code" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1451 -msgid "G-code file exported to " -msgstr "Fichier G-code exporté vers " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:652 -msgid "G-code flavor" -msgstr "Version du G-code" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:444 -msgid "g/cm³" -msgstr "g/cm³" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:634 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:145 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:87 -msgid "Gap fill" -msgstr "Remplissage des trous" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:937 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:11 -msgid "General" -msgstr "Général" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:875 -msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." -msgstr "Nombre minimum de clôtures à générer afin de consommer la quantité de filament spécifiée sur la couche inférieure. Pour les machines multi-extrudeurs, ce minimum s'applique à chaque extrudeur." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1379 -msgid "Generate support material" -msgstr "Générer des supports" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1433 -msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." -msgstr "Générer des supports pour le nombre de couches spécifié à partir du bas, que les supports normaux soient activés ou non et sans tenir compte de seuils d'inclinaison. Ceci est utile pour obtenir une meilleure adhésion pour des objets ayant une surface de contact très fine ou limitée sur le plateau." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:442 -msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." -msgstr "Une bonne précision est requise, utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le long du filament." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:583 -msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." -msgstr "Température du plateau chauffant pour la première couche. Mettez ceci à zéro pour désactiver les commandes de contrôle de température du plateau dans la sortie." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:320 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:69 -msgid "Height" -msgstr "Hauteur" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:332 -msgid "Height (mm)" -msgstr "Hauteur (mm)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1222 -msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." -msgstr "Hauteur de la clôture exprimée en couches. Mettez une valeur élevée pour utiliser la clôture comme un bouclier contre les flux d'airs." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:213 -#, c-format -msgid "Hello, welcome to Slic3r Slic3r++! This %s helps you with the initial configuration; just a few settings and you will be ready to print." -msgstr "Bonjour, bienvenu dans Slic3r Slic3r++ ! Ce %s vous aide à la configuration initiale ; juste quelques paramètres et vous serez prêt à imprimer." - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:218 -msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." -msgstr "Ici vous pouvez ajuster le volume de purge nécessaire (mm³) pour une paire d'outils donnée." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:329 -msgid "Horizontal shells" -msgstr "Coques horizontales" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:128 -msgid "Horizontal width of the brim that will be printed around each object on the first layer." -msgstr "Largeur horizontale de la jupe qui sera imprimée autour de chaque objet sur la première couche." - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Hostname" -msgstr "Nom d'hôte" - -#: xs/src/libslic3r/PrintConfig.cpp:991 -msgid "Hostname, IP or URL" -msgstr "Nom d'hôte, IP ou URL" - -#: xs/src/slic3r/GUI/Tab.cpp:113 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Passez le curseur au dessus des boutons pour obtenir plus d'informations\n" -"ou cliquez sur ce bouton." - -#: xs/src/slic3r/GUI/Tab.cpp:1612 -msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." -msgstr "Le fichier HTTPS CA est optionnel. Il est uniquement requis si vous utilisez le HTTPS avec un certificat auto-signé." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:275 xs/src/slic3r/GUI/Preferences.cpp:61 -msgid "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." -msgstr "Si activé, Slic3r vérifie en ligne l'existence de nouvelles versions de Slic3r PE. Lorsqu'une nouvelle version est disponible, une notification est affichée au démarrage suivant de l'application (jamais pendant l'utilisation du programme). Ceci est uniquement un mécanisme de notification, aucune installation automatique n'est faite." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:282 xs/src/slic3r/GUI/Preferences.cpp:69 -msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." -msgstr "Si activé, Slic3r télécharge les mises à jours des préréglages système intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est disponible, elle est proposée au démarrage de l'application." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:26 -#, c-format -msgid "If estimated layer time is below ~%ds, fan will run at %d%% and print speed will be reduced so that no less than %ds are spent on that layer (however, speed will never be reduced below %dmm/s)." -msgstr "Si le temps de couche estimé est inférieur à ~%d s, le ventilateur tournera à %d%% et la vitesse d'impression sera réduite pour qu'au moins %d s soient passées sur cette couche (cependant, la vitesse ne sera jamais réduite en-dessous de %d mm/s)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:616 -msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." -msgstr "Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à tous les déplacements d'impression de la première couche, quel que soit leur type. Si exprimée comme un pourcentage (par exemple 40%), cela modulera la vitesse par défaut." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:395 -msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." -msgstr "Si le temps d'impression estimé de la couche est inférieur à ce nombre de secondes, le ventilateur sera activé et sa vitesse calculée par interpolation des vitesses minimum et maximum." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1240 -msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." -msgstr "Si le temps d'impression estimé de la couche est inférieur à ce nombre de secondes, la vitesse des déplacements d'impression sera réduite afin d'atteindre cette valeur." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:388 -msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "Si ceci est activé, le ventilateur ne sera jamais désactivé et sera maintenu au moins à sa vitesse minimum. Utile pour le PLA, mais risqué pour l'ABS." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:37 -msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." -msgstr "Si ceci est activé, Slic3r centrera automatique les objets autour du centre du plateau d'impression." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:45 -msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." -msgstr "Si ceci est activé, Slic3r va pré-calculer les objets dès qu'ils sont chargés pour gagner du temps lors de l'export du G-code." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:29 -msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." -msgstr "Si ceci est activé, Slic3r affichera le dernier répertoire de sortie au lieu de celui contenant les fichiers d'entrée." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:77 -msgid "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may try to check this checkbox. This will disable the layer height editing and anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "Si vous avez des soucis de rendu causés par un driver OpenGL 2.0 bogué, vous pouvez essayer de cocher cette case. Ceci désactivera l'édition de la hauteur de couche et l'anti-aliasing, vous avez donc intérêt à mettre à jour vos drivers graphiques." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1091 -msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." -msgstr "Si vous indiquez une valeur positive, l'axe Z est rapidement élevé à chaque rétraction. Lorsque vous utilisez plusieurs extrudeurs, seul le réglage du premier extrudeur sera pris en compte." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1101 -msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." -msgstr "Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché qu'à partir de la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce réglage pour éviter le levage de l'axe Z sur les premières couches." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1110 -msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." -msgstr "Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché que jusqu'à la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce réglage pour limiter le levage de l'axe Z aux premières couches." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:451 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1002 -msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." -msgstr "Si vous voulez traiter le G-code de sortie à l'aide de scripts personnalisés, listez simplement leurs chemins absolus ici. Séparez les divers scripts avec un point virgule. Les scripts vont recevoir en premier argument le chemin absolu du fichier G-code, et ils peuvent accéder aux réglages de configuration de Slic3r en lisant des variables d'environnement." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:351 -msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." -msgstr "Si le firmware de votre imprimante ne gère pas le décalage de l'extrudeur, c'est au G-code d'en tenir compte. Cette option vous permet de spécifier le décalage de chaque extrudeur par rapport au premier. Des valeurs positives sont attendues (elles seront soustraites des coordonnées XY)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1664 -msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." -msgstr "Si votre firmware requiert des valeurs relatives pour E, cochez cette case, sinon laissez-la décochée. La plupart des firmwares utilisent des valeurs absolues." - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:125 -msgid "Incompatible bundles:" -msgstr "Lots incompatibles :" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:67 -msgid "Incompatible with this Slic3r" -msgstr "Incompatible avec ce Slic3r" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024 -msgid "Increase copies" -msgstr "Augmenter les copies" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:346 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:347 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:664 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:87 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:247 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:488 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:502 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:540 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:681 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:691 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:709 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:727 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:746 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1263 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1280 -msgid "Infill" -msgstr "Remplissage" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:169 -msgid "infill" -msgstr "remplissage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:720 -msgid "Infill before perimeters" -msgstr "Remplissage avant les périmètres" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:701 -msgid "Infill extruder" -msgstr "Extrudeur pour le remplissage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:735 -msgid "Infill/perimeters overlap" -msgstr "Chevauchement remplissage/périmètres" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:398 -msgid "Info" -msgstr "Info" - -#: xs/src/libslic3r/PrintConfig.cpp:819 -msgid "Inherits profile" -msgstr "Hérite du profil" - -#: xs/src/slic3r/GUI/Field.cpp:111 -msgid "Input value is out of range" -msgstr "La valeur entrée est hors plage" - -#: xs/src/slic3r/GUI/GUI.cpp:402 -msgid "Inspect / activate configuration snapshots" -msgstr "Inspecter / activer les instantanés de configuration" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1479 -msgid "Interface layers" -msgstr "Couches d'interface" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1463 -msgid "Interface loops" -msgstr "Boucles d'interface" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1488 -msgid "Interface pattern spacing" -msgstr "Espacement du motif d'interface" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:757 -msgid "Interface shells" -msgstr "Coques d'interface" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:141 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:83 -msgid "Internal infill" -msgstr "Remplissage interne" - -#: xs/src/slic3r/Utils/OctoPrint.cpp:120 -msgid "Invalid API key" -msgstr "Clé API invalide" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061 -msgid "Invalid scaling value entered" -msgstr "Valeur de mise à l'échelle entrée invalide" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368 -msgid "Iso" -msgstr "Isométrique" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368 -msgid "Iso View" -msgstr "Vue Isométrique" - -#: xs/src/slic3r/GUI/Tab.cpp:748 -msgid "It can't be deleted or modified. " -msgstr "Il ne peut être supprimé ou modifié. " - -#: xs/src/slic3r/GUI/Tab.cpp:741 -msgid "It's a default preset." -msgstr "C'est un préréglage par défaut." - -#: xs/src/slic3r/GUI/Tab.cpp:742 -msgid "It's a system preset." -msgstr "C'est un préréglage système." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1180 -msgid "Jitter" -msgstr "Gigue" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:387 -msgid "Keep fan always on" -msgstr "Garder le ventilateur toujours actif" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235 -msgid "Language" -msgstr "Langue" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:192 -msgid "Layer Editing" -msgstr "Édition de Couche" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:207 -msgid "Layer editing" -msgstr "Édition de couche" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:314 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:777 -msgid "Layer height" -msgstr "Hauteur de couche" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1194 -msgid "Layer height limits" -msgstr "Limites de hauteur de couche" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:183 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:694 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1033 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1224 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1285 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1437 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1482 -msgid "layers" -msgstr "couches" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:157 -msgid "Layers" -msgstr "Couches" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:69 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:239 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:290 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:298 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:604 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:762 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:778 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:941 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:989 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1152 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1583 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1639 -msgid "Layers and Perimeters" -msgstr "Couches et Périmètres" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:313 -msgid "Layers and perimeters" -msgstr "Couches et périmètres" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373 -msgid "Left" -msgstr "Gauche" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373 -msgid "Left View" -msgstr "Vue Gauche" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1071 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1080 -msgid "Length" -msgstr "Longueur" - -#: xs/src/libslic3r/PrintConfig.cpp:179 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "Longueur du tube de refroidissement pour limiter l'espace pour les déplacements de refroidissement à l'intérieur de celui-ci " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1090 -msgid "Lift Z" -msgstr "Levage de l'axe Z" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254 -msgid "Load exported configuration file" -msgstr "Charger le fichier de configuration exporté" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260 -msgid "Load presets from a bundle" -msgstr "Charger les préréglages à partir d'un lot" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:75 -msgid "Load shape from STL..." -msgstr "Charger une forme depuis un STL..." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:692 -msgid "Loaded " -msgstr "Chargé " - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:233 -msgid "loaded" -msgstr "chargé" - -#: xs/src/libslic3r/PrintConfig.cpp:459 -msgid "Loading speed" -msgstr "Vitesse de chargement" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629 -msgid "Loading…" -msgstr "Chargement…" - -#: xs/src/slic3r/GUI/Tab.cpp:2481 -msgid "LOCKED LOCK icon indicates that the settings are the same as the system values for the current option group" -msgstr "L'icône VERROU VERROUILLE indique que les paramètres sont les mêmes que les valeurs système pour le groupe d'options en cours" - -#: xs/src/slic3r/GUI/Tab.cpp:2497 -msgid "LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "L'icône VERROU VERROUILLE indique que la valeur est la même que la valeur système." - -#: xs/src/slic3r/GUI/Tab.cpp:2442 -msgid "LOCKED LOCK;indicates that the settings are the same as the system values for the current option group" -msgstr "VERROU VERROUILLE;indique que les paramètres sont les mêmes que les valeurs système pour le groupe d'options en cours" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1229 -msgid "Loops (minimum)" -msgstr "Boucles (minimum)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:412 -msgid "Manifold" -msgstr "Variété" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:411 -msgid "Materials" -msgstr "Matériaux" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:787 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:796 -msgid "Max" -msgstr "Maximum" - -#: xs/src/libslic3r/PrintConfig.cpp:876 -msgid "Max print height" -msgstr "Hauteur maximale d'impression" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:807 -msgid "Max print speed" -msgstr "Vitesse d'impression maximale" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 -msgid "max slic3r version" -msgstr "version maximale de slic3r" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:837 -msgid "Max volumetric slope negative" -msgstr "Pente volumétrique négative maximum" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:826 -msgid "Max volumetric slope positive" -msgstr "Pente volumétrique positive maximum" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:421 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:817 -msgid "Max volumetric speed" -msgstr "Vitesse volumétrique maximale" - -#: xs/src/libslic3r/PrintConfig.cpp:1854 -msgid "Maximal bridging distance" -msgstr "Distance maximale de pont" - -#: xs/src/libslic3r/PrintConfig.cpp:1855 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Distance maximale entre les supports sur les sections de remplissage épars. " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:422 -msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." -msgstr "Vitesse volumétrique maximale autorisée pour ce filament. Limite la vitesse volumétrique d'une impression au minimum des vitesses volumétriques d'impression et de filament. Mettez à zéro pour enlever la limite." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:848 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:857 -msgid "Min" -msgstr "Minimum" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:866 -msgid "Min print speed" -msgstr "Vitesse d'impression minimale" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "min slic3r version" -msgstr "version minimale de slic3r" - -#: xs/src/libslic3r/PrintConfig.cpp:951 -msgid "Minimal filament extrusion length" -msgstr "Longueur minimale d'extrusion de filament" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1040 -msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." -msgstr "Résolution minimale pour les détails, utilisée pour simplifier le fichier d'entrée afin d'accélérer le découpage et de réduire l'utilisation de la mémoire. Les modèles haute-résolution possèdent souvent plus de détails que ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute simplification et utiliser la résolution complète de l'entrée." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1050 -msgid "Minimum travel after retraction" -msgstr "Trajet minimal après une rétraction" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055 -msgid "Mirror" -msgstr "Symétrie" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055 -msgid "Mirror the selected object" -msgstr "Symétriser l'objet sélectionné" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057 -msgid "Mirror the selected object along the X axis" -msgstr "Symétriser l'objet sélectionné selon l'axe X" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060 -msgid "Mirror the selected object along the Y axis" -msgstr "Symétriser l'objet sélectionné selon l'axe Y" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063 -msgid "Mirror the selected object along the Z axis" -msgstr "Symétriser l'objet sélectionné selon l'axe Z" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:65 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:129 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:200 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:211 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:325 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:336 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:355 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:434 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:781 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:801 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:860 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:878 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:896 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1044 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1052 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1094 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1103 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1113 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1121 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1129 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1215 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1421 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1491 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1527 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1704 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1711 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1718 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1727 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1737 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1747 -msgid "mm" -msgstr "mm" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1075 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1085 -msgid "mm (zero to disable)" -msgstr "mm (zéro pour désactiver)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:609 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:740 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1390 -msgid "mm or %" -msgstr "mm ou %" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:382 -msgid "mm or % (leave 0 for auto)" -msgstr "mm ou % (laissez à 0 pour le mode automatique)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:272 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:597 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:715 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:972 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1296 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1458 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1619 -msgid "mm or % (leave 0 for default)" -msgstr "mm ou % (laissez à 0 pour la valeur par défaut)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:120 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:638 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:749 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:811 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:868 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:981 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1137 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1146 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1536 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1649 -msgid "mm/s" -msgstr "mm/s" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:282 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:619 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1255 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1306 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1501 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1631 -msgid "mm/s or %" -msgstr "mm/s ou %" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:80 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:174 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:576 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:684 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:952 -msgid "mm/s²" -msgstr "mm/s²" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1265 -msgid "mm²" -msgstr "mm²" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:425 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:820 -msgid "mm³/s" -msgstr "mm³/s" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:831 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:842 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 -msgid "model" -msgstr "modèle" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:414 -msgid "Modifiers" -msgstr "Modificateurs" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:478 -msgid "money/kg" -msgstr "€/kg" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:182 -msgid "More" -msgstr "Plus" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1696 -msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." -msgstr "Les imprimantes multi-matériaux peuvent avoir besoin de préparer ou de purger leurs extrudeurs lors d'un changement d'outil. Extruder le matériau en excès dans la tour de nettoyage." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:666 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:683 -msgid "Multi-part object detected" -msgstr "Objet multi-pièces détecté" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:430 -msgid "Multiple Extruders" -msgstr "Extrudeurs Multiples" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:680 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Plusieurs objets ont été chargés pour une imprimante multi-matériaux.\n" -"Au lieu de les considérer comme plusieurs objets, dois-je considérer\n" -"ces fichiers comment représentant un objets ayant plusieurs pièces ?\n" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:220 -msgid "Name" -msgstr "Nom" - -#: xs/src/libslic3r/PrintConfig.cpp:1126 -msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." -msgstr "Nom de la variante d'imprimante. Par exemple, la variante d'imprimante peut être différenciée par un diamètre de buse." - -#: xs/src/libslic3r/PrintConfig.cpp:1121 -msgid "Name of the printer vendor." -msgstr "Nom du fabriquant de l'imprimante." - -#: xs/src/libslic3r/PrintConfig.cpp:820 -msgid "Name of the profile, from which this profile inherits." -msgstr "Nom du profil, duquel hérite ce profil." - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:53 -msgid "Network lookup" -msgstr "Recherche réseau" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:27 -msgid "New version of Slic3r PE is available" -msgstr "Une nouvelle version de Slic3r PE est disponible" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:43 -msgid "New version:" -msgstr "Nouvelle version :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:469 -msgid "No previously sliced file." -msgstr "Aucun fichier précédemment découpé." - -#: xs/src/slic3r/GUI/RammingChart.cpp:28 -msgid "NO RAMMING AT ALL" -msgstr "PAS D'EXPULSION DU TOUT" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:137 -msgid "None" -msgstr "Aucun" - -#: xs/src/slic3r/GUI/Tab.cpp:1571 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Note : une version d'Octoprint supérieure ou égale à 1.1.0 est requise." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:500 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:501 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:859 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:860 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1156 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1157 -msgid "Notes" -msgstr "Notes" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:493 -msgid "Notice" -msgstr "Remarque" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:85 -msgid "nozzle" -msgstr "buse" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:894 -msgid "Nozzle diameter" -msgstr "Diamètre de la buse" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:431 -msgid "Nozzle Diameter:" -msgstr "Diamètre de la Buse :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:967 -msgid "Number of extruders of the printer." -msgstr "Nombre d'extrudeurs de l'imprimante." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1481 -msgid "Number of interface layers to insert between the object(s) and support material." -msgstr "Nombre de couches d'interface à insérer entre le(s) objet(s) et les supports." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1231 -msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." -msgstr "Nombre de boucles pour la clôture. Si la Longueur Minimale d'Extrusion est paramétrée, le nombre de boucles minimale sera plus grand que celui configuré ici. Mettez à zéro pour désactiver complètement la clôture." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:70 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Nombre de couches pleines à générer sur les surfaces inférieures." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1315 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "Nombre de couches pleines à générer sur les surfaces supérieures et inférieures." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1640 -msgid "Number of solid layers to generate on top surfaces." -msgstr "Nombre de couches pleines à générer sur les surfaces supérieures." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:745 -msgid "Object too large?" -msgstr "Objet trop grand ?" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1032 -msgid "OctoPrint upload" -msgstr "Envoi vers OctoPrint" - -#: lib/Slic3r/GUI/Plater.pm:1511 -msgid "OctoPrint upload finished." -msgstr "Envoi vers OctoPrint terminé." - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "OctoPrint version" -msgstr "Version d'OctoPrint" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1410 -msgid "Only create support if it lies on a build plate. Don't create support on a print." -msgstr "Créer uniquement des supports reposant sur le plateau. Ne pas créer pas de supports sur une impression." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:726 -msgid "Only infill where needed" -msgstr "Remplissage seulement où cela est nécessaire" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1205 -msgid "Only lift Z" -msgstr "Lever Z seulement" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1100 -msgid "Only lift Z above" -msgstr "Lever Z seulement au-dessus de" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1109 -msgid "Only lift Z below" -msgstr "Lever Z seulement en-dessous de" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:915 -msgid "Only retract when crossing perimeters" -msgstr "Rétracter uniquement lors du franchissement de périmètres" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:438 -msgid "Ooze prevention" -msgstr "Prévention des coulures" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251 -msgid "Open a model" -msgstr "Ouvrir un modèle" - -#: xs/src/slic3r/GUI/Tab.cpp:1598 -msgid "Open CA certificate file" -msgstr "Ouvrir le fichier de certificat CA" - -#: lib/Slic3r/GUI/MainFrame.pm:194 -msgid "Open STL/OBJ/AMF/3MF…\tCtrl+O" -msgstr "Ouvrir STL/OBJ/AMF/3MF…\tCtrl+O" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102 -msgid "Open the 3D cutting tool" -msgstr "Ouvrir l'outil de coupe 3D" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106 -msgid "Open the object editor dialog" -msgstr "Ouvrir la boîte de dialogue d'édition d'objet" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388 -msgid "Open the Slic3r++ releases page in your browser" -msgstr "Ouvrir la page des publications de la Slic3r++ dans votre navigateur" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398 -msgid "Open the Slic3r manual in your browser" -msgstr "Ouvrir la manuel de Slic3r dans votre navigateur" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395 -msgid "Open the Slic3r website in your browser" -msgstr "Ouvrir le site web de Slic3r dans votre navigateur" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:27 -msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." -msgstr "Optimiser les déplacements afin de minimiser le franchissement de périmètres. Ceci est surtout utile avec les extruder Bowden qui sont sujets aux coulures. Cette fonctionnalité ralentit l'impression et la génération du G-code." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:384 -msgid "Options for support material and raft" -msgstr "Options pour le matériau de support et le radeau" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:57 -msgid "Origin" -msgstr "Origine" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:469 -msgid "Other" -msgstr "Autre" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:38 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1572 -msgid "Other layers" -msgstr "Autres couches" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:295 -msgid "Other Vendors" -msgstr "Autres Fabriquants" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "Other vendors" -msgstr "Autres fabriquants" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:488 -msgid "Output file" -msgstr "Fichier de sortie" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:930 -msgid "Output filename format" -msgstr "Format du nom de fichier de sortie" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:476 -msgid "Output options" -msgstr "Options de sortie" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:140 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:82 -msgid "Overhang perimeter" -msgstr "Périmètre en surplomb" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1550 -msgid "Overhang threshold" -msgstr "Seuil de surplomb" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:463 -msgid "Overlap" -msgstr "Chevauchement" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1508 -msgid "Pattern" -msgstr "Motif" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1398 -msgid "Pattern angle" -msgstr "Angle du motif" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1524 -msgid "Pattern spacing" -msgstr "Espacement du motif" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1510 -msgid "Pattern used to generate support material." -msgstr "Motif utilisé pour générer les supports." - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:138 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:80 -msgid "Perimeter" -msgstr "Périmètre" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:957 -msgid "Perimeter extruder" -msgstr "Extrudeur pour les périmètres" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:948 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:966 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:978 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:988 -msgid "Perimeters" -msgstr "Périmètres" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:160 -msgid "perimeters" -msgstr "périmètres" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:297 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Choisissez un autre fabriquant supporté par Slic3r PE :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024 -msgid "Place one more copy of the selected object" -msgstr "Placer une copie supplémentaire de l'objet sélectionné" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:118 -msgid "Plater" -msgstr "Plateau" - -#: lib/Slic3r/GUI/Plater.pm:1897 -msgid "Please install the OpenGL modules to use this feature (see build instructions)." -msgstr "Veuillez installer les modules OpenGL pour pouvoir utiliser cette fonctionnalité (voir les instructions de montage)." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1199 -msgid "Position (for multi-extruder printers)" -msgstr "Position (pour les imprimantes multi-extrudeurs)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1153 -msgid "Position of perimeters starting points." -msgstr "Position des points de départ des périmètres." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1702 -msgid "Position X" -msgstr "Position X" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1709 -msgid "Position Y" -msgstr "Position Y" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:494 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1001 -msgid "Post-processing scripts" -msgstr "Scripts de post-traitement" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp:17 -msgid "Preferences" -msgstr "Préférences" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1171 -msgid "Preferred direction of the seam" -msgstr "Direction préférée de la jointure" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1183 -msgid "Preferred direction of the seam - jitter" -msgstr "Direction préférée de la jointure - gigue" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1222 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:150 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2125 -msgid "Preview" -msgstr "Aperçu" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474 -msgid "Previously sliced file (" -msgstr "Fichier précédemment découpé (" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "print" -msgstr "imprimer" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:291 -msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." -msgstr "Imprimer les périmètres de l'extérieur vers l'intérieur au lieu de l'ordre par défaut qui est inversé." - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:412 -msgid "Print Diameters" -msgstr "Diamètres d'Impression" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:182 -msgid "Print Settings" -msgstr "Réglages d'Impression" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:367 -msgid "Print settings" -msgstr "Réglages d'impression" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:836 -msgid "Print speed override" -msgstr "Contournement de la vitesse d'impression" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:369 -msgid "Printer" -msgstr "Imprimante" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "printer" -msgstr "imprimer" - -#: xs/src/slic3r/GUI/Tab.cpp:762 -msgid "printer model" -msgstr "modèle de l'imprimante" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1014 -msgid "Printer notes" -msgstr "Notes de l'imprimante" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:228 -msgid "Printer Settings" -msgstr "Réglages de l'Imprimante" - -#: xs/src/libslic3r/PrintConfig.cpp:1106 -msgid "Printer type" -msgstr "Type d'imprimante" - -#: xs/src/libslic3r/PrintConfig.cpp:1125 -msgid "Printer variant" -msgstr "Variante d'imprimante" - -#: xs/src/libslic3r/PrintConfig.cpp:1120 -msgid "Printer vendor" -msgstr "Fabriquant de l'imprimante" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:238 -msgid "Print…" -msgstr "Impression…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528 -msgid "Processing " -msgstr "Traitement " - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:643 -msgid "Processing input file\n" -msgstr "Traitement du fichier d'entrée\n" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:508 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:868 -msgid "Profile dependencies" -msgstr "Dépendances du profil" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:300 -msgid "Progress:" -msgstr "Progression :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385 -msgid "Prusa 3D Drivers" -msgstr "Drivers Prusa 3D" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388 -msgid "Slic3r++ Releases" -msgstr "Publication de la Slic3r++" - -#: xs/src/slic3r/GUI/GUI.cpp:908 -msgid "Purging volumes" -msgstr "Volumes de purge" - -#: xs/src/libslic3r/PrintConfig.cpp:1807 -msgid "Purging volumes - load/unload volumes" -msgstr "Volumes de purge - volumes de chargement/déchargement" - -#: xs/src/libslic3r/PrintConfig.cpp:1815 -msgid "Purging volumes - matrix" -msgstr "Volumes de purge - matrice" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268 -msgid "Q&uick Slice…\tCtrl+U" -msgstr "&Découpage Rapide…\tCtrl+U" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:335 -msgid "Quality (slower slicing)" -msgstr "Qualité (découpage plus lent)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274 -msgid "Quick Slice and Save &As…\tCtrl+Alt+U" -msgstr "Découpage Rapide et &Enregistrer Sous…\tCtrl+Alt+U" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304 -msgid "Quit Slic3r" -msgstr "Quitter Slic3r" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:331 -msgid "Radius" -msgstr "Rayon" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:380 -msgid "Raft" -msgstr "Radeau" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1029 -msgid "Raft layers" -msgstr "Couches du radeau" - -#: xs/src/slic3r/GUI/Tab.cpp:1319 -msgid "Ramming" -msgstr "Expulsion" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:14 -msgid "Ramming customization" -msgstr "Personnalisation de l'expulsion" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:40 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." -msgstr "" -"L'Expulsion décrit l'extrusion rapide qui a lieu juste avant un changement d'outil sur une imprimante MM à extrudeur unique. Le but est de donner une forme correcte au filament déchargé afin qu'il n'empêche pas l'insertion du nouveau filament et puisse être réinséré lui-même plus tard. Cette phase est importante et des matériaux différents peuvent nécessiter des vitesses d'extrusion différentes pour obtenir la bonne forme. De ce fait, les débits d'extrusion pendant l'expulsion sont ajustables.\n" -"\n" -"Ceci est un paramétrage de niveau expert, et un mauvais ajustement provoquera probablement des blocages, des accrochages de la roue de l'extrudeur sur le filament , etc ..." - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:90 -msgid "Ramming line spacing" -msgstr "Espacement de la ligne de ramming" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:88 -msgid "Ramming line width" -msgstr "Largeur de la ligne d'expulsion" - -#: xs/src/libslic3r/PrintConfig.cpp:486 -msgid "Ramming parameters" -msgstr "Paramètres de l'expulsion" - -#: xs/src/slic3r/GUI/Tab.cpp:1321 -msgid "Ramming settings" -msgstr "Réglages de l'expulsion" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:144 -msgid "Re-configure" -msgstr "Reconfigurer" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:297 -msgid "Ready" -msgstr "Prêt" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372 -msgid "Rear" -msgstr "Arrière" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372 -msgid "Rear View" -msgstr "Vue Arrière" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:262 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "Épaisseur des parois fines de l'objet recommandée pour la hauteur de couche %.2f et " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:245 -msgid "Recommended object thin wall thickness: Not available due to invalid layer height." -msgstr "Épaisseur des parois fines de l'objet recommandée : Non disponible car la hauteur de couche est invalide." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:46 -msgid "Rectangular" -msgstr "Rectangle" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:352 -msgid "Reducing printing time" -msgstr "Réduction du temps d'impression" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110 -msgid "Reload from Disk" -msgstr "Recharger depuis le Disque" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110 -msgid "Reload the selected file from Disk" -msgstr "Recharger le fichier sélectionné depuis le Disque" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:27 -msgid "Remember output directory" -msgstr "Se souvenir du répertoire de sortie" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582 -msgid "Remove" -msgstr "Retirer" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580 -msgid "remove" -msgstr "retirer" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027 -msgid "Remove one copy of the selected object" -msgstr "Retirer une copie de l'objet sélectionné" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021 -msgid "Remove the selected object" -msgstr "Retirer l'objet sélectionné" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:217 -msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)" -msgstr "Supprimer les profils d'utilisateur - installation à partir de zéro (un snapshot sera fait avant)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594 -msgid "Repair" -msgstr "Réparer" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294 -msgid "Repair STL file…" -msgstr "Réparer le fichier STL…" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280 -msgid "Repeat last quick slice" -msgstr "Répéter le dernier découpage rapide" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405 -msgid "Report an Issue" -msgstr "Signaler un problème" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405 -msgid "Report an issue on the Slic3r Slic3r++" -msgstr "Signaler un problème sur la Slic3r++ de Slic3r" - -#: xs/src/slic3r/Utils/PresetUpdater.cpp:514 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "nécessite min. %s et max. %s" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:288 -msgid "Rescan" -msgstr "Scanner à nouveau" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:995 -msgid "Rescan serial ports" -msgstr "Rescanner les ports série" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1039 -msgid "Resolution" -msgstr "Résolution" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1057 -msgid "Retract amount before wipe" -msgstr "Quantité de rétractation avant essuyage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1065 -msgid "Retract on layer change" -msgstr "Rétracter lors des changements de couche" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1202 -msgid "Retraction" -msgstr "Rétraction" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1051 -msgid "Retraction is not triggered when travel moves are shorter than this length." -msgstr "La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts que cette distance." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1072 -msgid "Retraction Length" -msgstr "Longueur de Rétractation" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1081 -msgid "Retraction Length (Toolchange)" -msgstr "Longueur de Rétractation (changement d'outil)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1134 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1135 -msgid "Retraction Speed" -msgstr "Vitesse de Rétractation" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1218 -msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" -msgstr "Rétractation lorsque l'outil est désactivé (réglages avancés pour les configurations multi-extrudeurs)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:96 -msgid "Retractions" -msgstr "Rétractations" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374 -msgid "Right" -msgstr "Droite" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374 -msgid "Right View" -msgstr "Vue Droite" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042 -msgid "Rotate" -msgstr "Pivoter" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034 -msgid "Rotate 45° clockwise" -msgstr "Pivoter de 45° dans le sens des aiguilles d'une montre" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037 -msgid "Rotate 45° counter-clockwise" -msgstr "Pivoter de 45° dans le sens inverse des aiguilles d'une montre" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034 -msgid "Rotate the selected object by 45° clockwise" -msgstr "Pivoter l'objet sélectionné de 45° dans le sens des aiguilles d'une montre" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037 -msgid "Rotate the selected object by 45° counter-clockwise" -msgstr "Pivoter l'objet sélectionné de 45° dans le sens inverse des aiguilles d'une montre" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042 -msgid "Rotate the selected object by an arbitrary angle" -msgstr "Pivoter l'objet sélectionnée d'un angle donné" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044 -msgid "Rotate the selected object by an arbitrary angle around X axis" -msgstr "Pivoter l'objet sélectionnée d'un angle donné autour de l'axe X" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047 -msgid "Rotate the selected object by an arbitrary angle around Y axis" -msgstr "Pivoter l'objet sélectionnée d'un angle donné autour de l'axe Y" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050 -msgid "Rotate the selected object by an arbitrary angle around Z axis" -msgstr "Pivoter l'objet sélectionnée d'un angle donné autour de l'axe Z" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:211 xs/src/slic3r/GUI/GUI.cpp:399 -#, c-format -msgid "Run %s" -msgstr "Run %s" - -#: xs/src/slic3r/GUI/RammingChart.cpp:81 xs/src/slic3r/GUI/RammingChart.cpp:86 -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:82 -#: xs/src/libslic3r/PrintConfig.cpp:480 -msgid "s" -msgstr "s" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645 -msgid "Save " -msgstr "Enregistrer " - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:605 -msgid "Save configuration as:" -msgstr "Enregistrer la configuration sous :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:50 -msgid "Save current " -msgstr "Enregistrer l'état actuel " - -#: lib/Slic3r/GUI/Plater.pm:1399 -msgid "Save G-code file as:" -msgstr "Sauvegarder le fichier G-code en tant que :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:580 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le STL) sous :" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:248 -msgid "Save preset" -msgstr "Enregistrer le préréglage" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:646 -msgid "Save presets bundle as:" -msgstr "Enregistrer le lot de préréglages sous :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:222 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068 -msgid "Scale" -msgstr "Redimensionner" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035 -msgid "Scale along " -msgstr "Redimensionner le long de " - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084 -msgid "Scale the selected object along a single axis" -msgstr "Redimensionner l'objet sélectionné le long d'un seul axe" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089 -msgid "Scale the selected object along the X axis" -msgstr "Redimensionner l'objet sélectionné le long de l'axe X" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086 -msgid "Scale the selected object along the XYZ axes" -msgstr "Redimensionner l'objet sélectionné le long des axes XYZ" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092 -msgid "Scale the selected object along the Y axis" -msgstr "Redimensionner l'objet sélectionné le long de l'axe Y" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095 -msgid "Scale the selected object along the Z axis" -msgstr "Redimensionner l'objet sélectionné le long de l'axe Z" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084 -msgid "Scale to size" -msgstr "Redimensionner à la taille" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:187 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:203 -msgid "Scale…" -msgstr "Redimensionner…" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1151 -msgid "Seam position" -msgstr "Position de la jointure" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1172 -msgid "Seam preferred direction" -msgstr "Direction préférée de la jointure" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1182 -msgid "Seam preferred direction jitter" -msgstr "Gigue de la direction préférée de la jointure" - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:187 -msgid "Searching for devices" -msgstr "Recherche des dispositifs" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342 -msgid "Select &Controller Tab\tCtrl+T" -msgstr "Sélectionner l'Onglet &Contrôleur\tCtrl+T" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353 -msgid "Select &Filament Settings Tab\tCtrl+3" -msgstr "Sélectionner l'Onglet des Réglages du &Filament\tCtrl+3" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336 -msgid "Select &Plater Tab\tCtrl+1" -msgstr "Sélectionner l'Onglet du &Plateau\tCtrl+1" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:103 -msgid "Select all" -msgstr "Tout sélectionner" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:623 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:667 -msgid "Select configuration to load:" -msgstr "Sélectionner la configuration à charger :" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:104 -msgid "Select none" -msgstr "Ne sélectionner aucun" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350 -msgid "Select P&rint Settings Tab\tCtrl+2" -msgstr "Sélectionner l'Onglet des Réglages d'&Impression\tCtrl+2" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356 -msgid "Select Print&er Settings Tab\tCtrl+4" -msgstr "Sélectionner l'Onglet des Réglages de l'Impri&mante\tCtrl+4" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235 -msgid "Select the language" -msgstr "Sélectionner la langue" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1667 -msgid "Select the printers this profile is compatible with." -msgstr "Sélectionner les imprimantes avec lesquelles ce profil est compatible." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:566 -msgid "Select the STL file to repair:" -msgstr "Sélectionner le fichier STL à réparer :" - -#: xs/src/slic3r/GUI/GUI.cpp:882 -msgid "Select what kind of support do you need" -msgstr "Choisissez le type de support dont vous avez besoin" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:239 -msgid "Send to printer" -msgstr "Envoyer à l'imprimante" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1448 -msgid "Sending G-code file to the OctoPrint server..." -msgstr "Envoi du fichier G-code vers le serveur OctoPrint..." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:477 -msgid "Sequential printing" -msgstr "Impression séquentielle" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:990 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1193 -msgid "Serial port" -msgstr "Port série" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1202 -msgid "Serial port speed" -msgstr "Vitesse du port série" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:286 -msgid "Serial port:" -msgstr "Port série :" - -#: xs/src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Service name" -msgstr "Nom du service" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030 -msgid "Set number of copies…" -msgstr "Choisir le nombre de copies…" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:398 -msgid "Set the shape of your printer's bed." -msgstr "Réglez la forme du plateau de votre imprimante." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:378 -msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion. Si la valeur reste sur zéro, Slic3r calcule la largeur d’extrusion en se basant sur le diamètre de la buse (voir l’info-bulle concernant la largeur d’extrusion du périmètre, la largeur d’extrusion du remplissage, etc…). Si la valeur est exprimée en pourcentage (par exemple : 230%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:269 -msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour les périmètres extérieurs. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:593 -msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour la première couche. Vous pouvez procéder ainsi pour obtenir des extrudats plus épais afin d’avoir une meilleure adhérence. Si la valeur est exprimée en pourcentage (par exemple : 120%), elle sera calculée par rapport à la hauteur de la première couche. Si elle est réglée sur zéro, elle utilisera la largeur d’extrusion par défaut." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1293 -msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage ou pour les surfaces pleines. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1615 -msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage ou pour les surfaces supérieures. Vous voudrez peut-être utiliser des extrudats plus fins pour remplir les zones les plus étroites et obtenir des finitions plus lisses. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre de la buse sera utilisé. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:711 -msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour le remplissage. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Vous voudrez peut-être utiliser des extrudats plus épais pour accélérer le remplissage et rendre vos pièces plus solides. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:968 -msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement une largeur d’extrusion pour les périmètres. Vous voudrez peut-être utiliser des extrudats plus fin pour obtenir des surfaces plus nettes. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1455 -msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la largeur d’extrusion pour les supports. Si la valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur de couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:332 -msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." -msgstr "Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si l'extrudeur n'est pas centré, choisissez la plus grande valeur par sécurité. Ce réglage est utilisé pour vérifier les collisions et afficher l'aperçu graphique sur le plateau." - -#: xs/src/libslic3r/PrintConfig.cpp:877 -msgid "Set this to the maximum height that can be reached by your extruder while printing." -msgstr "Réglez cette valeur sur la hauteur maximum que peut atteindre votre extrudeur au cours de l'impression." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:321 -msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." -msgstr "Paramétrez ceci avec la distance verticale entre la pointe de la buse et (habituellement) les tiges du chariot de l'axe X. En d'autres termes, il s'agit de la hauteur du cylindre de dégagement autour de l'extrudeur, et elle représente la profondeur maximum à laquelle peut descendre l'extrudeur avant d'entrer en collision avec d'autres objets imprimés." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:120 -msgid "Settings" -msgstr "Réglages" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:191 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:206 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106 -msgid "Settings…" -msgstr "Réglages…" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:39 -msgid "Shape" -msgstr "Forme" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:98 -msgid "Shells" -msgstr "Coques" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:75 -msgid "Show" -msgstr "Afficher" - -#: lib/Slic3r/GUI/MainFrame.pm:337 -msgid "Show &Configuration Folder" -msgstr "Afficher le Répertoire de &Configuration" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408 -msgid "Show about dialog" -msgstr "Afficher la boîte de dialogue à propos" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:337 -msgid "Show advanced settings" -msgstr "Afficher les réglages avancés" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:67 -msgid "Show incompatible print and filament presets" -msgstr "Afficher les préréglages d'impression et de filament incompatibles" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:337 -msgid "Show simplified settings" -msgstr "Afficher les réglages simplifiés" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402 -msgid "Show system information" -msgstr "Afficher les informations système" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353 -msgid "Show the filament settings" -msgstr "Afficher les réglages de filament" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336 -msgid "Show the plater" -msgstr "Afficher le plateau" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350 -msgid "Show the print settings" -msgstr "Afficher les réglages d'impression" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342 -msgid "Show the printer controller" -msgstr "Afficher le contrôleur de l'imprimante" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356 -msgid "Show the printer settings" -msgstr "Afficher les réglages de l'imprimante" - -#: lib/Slic3r/GUI/MainFrame.pm:337 -msgid "Show user configuration folder (datadir)" -msgstr "Afficher le répertoire de configuration utilisateur (datadir)" - -#: xs/src/slic3r/GUI/Tab.cpp:1716 xs/src/slic3r/GUI/Tab.cpp:1722 -msgid "Single extruder MM setup" -msgstr "Réglage MM pour extrudeur unique" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1373 -msgid "Single Extruder Multi Material" -msgstr "Extrudeur Unique Multi-Matériaux" - -#: xs/src/slic3r/GUI/Tab.cpp:1723 -msgid "Single extruder multimaterial parameters" -msgstr "Paramètres multimatériaux pour extrudeur unique" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:50 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1191 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:408 -msgid "Size" -msgstr "Taille" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:938 -msgid "Size and coordinates" -msgstr "Taille et coordonnées" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:51 -msgid "Size in X and Y of the rectangular plate." -msgstr "Taille en X et Y du plateau rectangulaire." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:365 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:146 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:88 -msgid "Skirt" -msgstr "Clôture" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:364 -msgid "Skirt and brim" -msgstr "Jupe et Clôture" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1221 -msgid "Skirt height" -msgstr "Hauteur de la clôture" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1230 -msgid "Skirt Loops" -msgstr "Boucles de la clôture" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398 -msgid "Slic3r &Manual" -msgstr "&Manuel de Slic3r" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395 -msgid "Slic3r &Website" -msgstr "Site &Web de Slic3r" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:902 -msgid "Slic3r can upload G-code files to OctoPrint. This field should contain the API Key required for authentication." -msgstr "Slic3r peut envoyer des fichiers G-code à OctoPrint. Ce champ doit contenir la clé d'API requise pour l'authentification." - -#: xs/src/libslic3r/PrintConfig.cpp:992 -msgid "Slic3r can upload G-code files to OctoPrint. This field should contain the hostname, IP address or URL of the OctoPrint instance." -msgstr "Slic3r peut télécharger des fichiers G-code vers OctoPrint. Ce champ doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance OctoPrint." - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:108 -msgid "Slic3r configuration is incompatible" -msgstr "La configuration de Slic3r n'est pas compatible" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:929 -msgid "Slic3r Error" -msgstr "Erreur de Slic3r" - -#: xs/src/slic3r/GUI/MsgDialog.cpp:64 -msgid "Slic3r error" -msgstr "Erreur de Slic3r" - -#: xs/src/slic3r/GUI/MsgDialog.cpp:64 -msgid "Slic3r has encountered an error" -msgstr "Slic3r a rencontré une erreur" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:108 -msgid "Slic3r incompatibility" -msgstr "Incompatibilité avec Slic3r" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:165 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." -msgstr "" -"Slic3r PE utilise à présent une structure de configuration mise à jour.\n" -"\n" -"Il existe à présent des \"préréglages Système\", qui intègrent les réglages par défaut pour les différentes imprimantes. Ces préréglages Système ne peuvent pas être modifiés, mais les utilisateurs peuvent désormais créer leurs propres préréglages héritant des paramètres de l'un des préréglages Système.\n" -"Un tel préréglage peut ainsi hériter d'une valeur particulière de son parent ou la remplacer par une valeur personnalisée.\n" -"\n" -"Veuillez utiliser les %s qui suivent pour paramétrer les nouveaux réglages et éventuellement accepter les mises à jour de réglage automatiques." - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:42 -msgid "slic3r version" -msgstr "version de slic3r" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:867 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r ne descendra pas en-dessous de cette vitesse." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268 -msgid "Slice a file into a G-code" -msgstr "Découper un fichier en G-code" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274 -msgid "Slice a file into a G-code, save as" -msgstr "Découper un fichier en G-code, enregistrer sous" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287 -msgid "Slice file to a multi-layer SVG" -msgstr "Découper un fichier en un SVG multi-couches" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:237 -msgid "Slice now" -msgstr "Découper maintenant" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287 -msgid "Slice to SV&G…\tCtrl+G" -msgstr "Découper vers SV&G...\tCtrl+G" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:438 -msgid "Sliced Info" -msgstr "Informations de découpage" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1286 -msgid "Slicing cancelled" -msgstr "Découpe annulée" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:550 -msgid "Slicing Done!" -msgstr "Découpe Effectuée !" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528 -msgid "Slicing…" -msgstr "Découpe en cours…" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1239 -msgid "Slow down if layer print time is below" -msgstr "Ralentir si le temps d'impression de la couche est inférieur à" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1250 -msgid "Small perimeters" -msgstr "Périmètres fins" - -#: xs/src/slic3r/GUI/GUI.cpp:417 -msgid "Snapshot name" -msgstr "Nom du snapshot" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:179 -msgid "solid infill" -msgstr "remplissage plein" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1291 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1301 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:142 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:84 -msgid "Solid infill" -msgstr "Remplissage plein" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1279 -msgid "Solid infill every" -msgstr "Remplissage plein toutes les" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1271 -msgid "Solid infill extruder" -msgstr "Extrudeur pour le remplissage plein" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1262 -msgid "Solid infill threshold area" -msgstr "Surface de seuil pour le remplissage plein" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:330 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1314 -msgid "Solid layers" -msgstr "Couches pleines" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:470 -msgid "Soluble material" -msgstr "Matériau soluble" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:471 -msgid "Soluble material is most likely used for a soluble support." -msgstr "Il est probable qu'un matériau soluble soit utilisé pour un support soluble." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:653 -msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents Slic3r from exporting any extrusion value at all." -msgstr "Certaines commandes G/M-code, dont le contrôle de température et autres, ne sont pas universelles. Paramétrez cette option avec le firmware de votre imprimante pour obtenir une sortie compatible. La version \"sans extrusion\" empêche Slic3r d'exporter toute valeur d'extrusion." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1682 -msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." -msgstr "Certaines imprimantes ou certains réglages d'imprimante peuvent rencontrer des difficultés pour imprimer avec une hauteur de couche variable. Activé par défaut." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1490 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "Espacement entre les lignes d'interface. Mettez à zéro pour obtenir une interface pleine." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1526 -msgid "Spacing between support material lines." -msgstr "Espacement entre les lignes des supports." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:398 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:118 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:278 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:635 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:747 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:979 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1201 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1251 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1302 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1625 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:71 -msgid "Speed" -msgstr "Vitesse" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1203 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Vitesse (baud) du port USB/série pour la connexion à l'imprimante." - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:336 -msgid "Speed (mm/s)" -msgstr "Vitesse (mm/s)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:636 -msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." -msgstr "Vitesse pour combler de petits interstices avec de courts mouvements en zigzag. Gardez un réglage relativement lent afin d'éviter les problèmes de vibration et de résonance. Réglez sur zéro pour désactiver le remplissage d'interstices." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:411 -msgid "Speed for non-print moves" -msgstr "Vitesse pour les déplacements sans impression" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:980 -msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "Vitesse pour les périmètres (contours, parois verticales). Réglez sur zéro pour un ajustement automatique." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:399 -msgid "Speed for print moves" -msgstr "Vitesse pour les déplacements d'impression" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:119 -msgid "Speed for printing bridges." -msgstr "Vitesse d'impression des ponts." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1303 -msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." -msgstr "Vitesse pour imprimer des zones pleines (supérieures/inférieures/parois horizontales internes). Peut être exprimée en pourcentage (par exemple: 80%) de la vitesse de remplissage par défaut susmentionnée. Réglez sur zéro pour un ajustement automatique." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1499 -msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." -msgstr "Vitesse d'impression des couches d'interface des supports. Si exprimée en pourcentage (par exemple 50%), elle sera calculée à partir de la vitesse d'impression des supports." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1535 -msgid "Speed for printing support material." -msgstr "Vitesse d'impression du support." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:748 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "Vitesse pour imprimer le remplissage interne. Réglez sur zéro pour un ajustement automatique." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1626 -msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." -msgstr "Vitesse pour imprimer les couches pleines du dessus (ne s'applique qu'aux couches externes les plus hautes et pas aux couches pleines internes). Vous voudrez peut-être abaisser cette vitesse afin d'avoir une finition de surface plus nette. Peut être exprimé en pourcentage (par exemple: 80%) de la vitesse de remplissage pleine susmentionnée. Réglez sur zéro pour un ajustement automatique." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1648 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "Vitesse pour les déplacements (trajet entre deux points d'extrusion distants)." - -#: xs/src/libslic3r/PrintConfig.cpp:460 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "Vitesse utilisée pour charger le filament sur la tour de nettoyage. " - -#: xs/src/libslic3r/PrintConfig.cpp:468 -msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming). " -msgstr "Vitesse utilisée pour décharger le filament sur la tour de nettoyage (n'affecte pas l'étape initiale de déchargement juste après l'expulsion). " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1322 -msgid "Spiral vase" -msgstr "Mode vase (spirale)" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:540 -msgid "Spiral Vase" -msgstr "Mode vase (spirale)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:188 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:204 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099 -msgid "Split" -msgstr "Scinder" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099 -msgid "Split the selected object into individual parts" -msgstr "Scinder l'objet sélectionné en pièces individuelles" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:847 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1120 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1342 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1357 -msgid "Start G-code" -msgstr "G-code de début" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291 -msgid "Start new slicing process" -msgstr "Démarrer un nouveau processus de découpe" - -#: xs/src/slic3r/GUI/FirmwareDialog.cpp:296 -msgid "Status:" -msgstr "État :" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1539 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1581 -msgid "STL file exported to " -msgstr "Fichier STL exporté vers " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017 -msgid "Success!" -msgstr "Réussi !" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:198 -msgid "support" -msgstr "support" - -#: xs/src/slic3r/GUI/GUI.cpp:879 -msgid "Support" -msgstr "Support" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:620 -msgid "Support Generator" -msgstr "Générateur de Support" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:208 -msgid "support interface" -msgstr "interface du support" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:374 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:375 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:191 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1030 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1380 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1387 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1399 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1409 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1417 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1432 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1453 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1464 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1480 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1489 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1498 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1509 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1525 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1533 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1534 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1543 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1551 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1565 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:147 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:89 -msgid "Support material" -msgstr "Support" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1497 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:148 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:90 -msgid "Support material interface" -msgstr "Interface des supports" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1552 -msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." -msgstr "Le support ne sera pas généré pour les surplombs dont l'inclinaison (90° = vertical) dépasse le seuil défini. Autrement dit, cette valeur représente l'inclinaison horizontale maximum (mesurée à partir du plan horizontal) que vous pouvez imprimer sans support. Réglez sur zéro pour une détection automatique (recommandé)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1470 -msgid "Support material/raft interface extruder" -msgstr "Extrudeur pour l'interface des supports/du radeau" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1444 -msgid "Support material/raft/skirt extruder" -msgstr "Extrudeur pour support/tapis/clôture" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1408 -msgid "Support on build plate only" -msgstr "Support sur le plateau uniquement" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:617 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Les supports sont plus efficaces, si la fonctionnalité suivante est activée :\n" -"-Détection des périmètres de pont\n" -"\n" -"Voulez-vous que que je modifie les réglages des supports ?" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:59 -msgid "Suppress \" - default - \" presets" -msgstr "Supprimer les préréglages \" - par défaut - \"" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:61 -msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." -msgstr "Supprimer les préréglages \" - par défaut - \" dans les choix Impression / Filament / Imprimante une fois qu'il y a d'autres préréglages valides disponibles." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -msgid "SVG" -msgstr "SVG" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:325 -msgid "" -"Switching to simple settings will discard changes done in the advanced mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"Basculer vers les réglages simples annulera les changements effectués en mode avancé !\n" -"\n" -"Voulez-vous continuer ?" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1544 -msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." -msgstr "Synchroniser les couches du support avec les couches d'impression de l'objet. Cela est utile pour les imprimantes multi-matériaux, pour lesquelles le changement d'extrudeur est onéreux." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1542 -msgid "Synchronize with object layers" -msgstr "Synchroniser avec les couches de l'objet" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402 -msgid "System Info" -msgstr "Informations sur le Système" - -#: xs/src/slic3r/GUI/Tab.cpp:2286 xs/src/slic3r/GUI/Tab.cpp:2372 -#: xs/src/slic3r/GUI/Preset.cpp:605 xs/src/slic3r/GUI/Preset.cpp:645 -#: xs/src/slic3r/GUI/Preset.cpp:670 xs/src/slic3r/GUI/Preset.cpp:702 -#: xs/src/slic3r/GUI/PresetBundle.cpp:1069 -#: xs/src/slic3r/GUI/PresetBundle.cpp:1122 lib/Slic3r/GUI/Plater.pm:552 -msgid "System presets" -msgstr "Préréglages système" - -#: xs/src/slic3r/GUI/GUI.cpp:403 -msgid "Take Configuration Snapshot" -msgstr "Prendre un snapshot de la configuration" - -#: xs/src/slic3r/GUI/GUI.cpp:417 -msgid "Taking configuration snapshot" -msgstr "Snapshot de la configuration en cours" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1576 -msgid "Temperature" -msgstr "Température" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:794 -msgid "Temperature " -msgstr "Température " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1333 -msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." -msgstr "Différence de température devant être appliquée quand un extrudeur n'est pas actif. Permet la génération d'une clôture complète \"sacrificielle\" sur lequel les buses sont nettoyées régulièrement." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1332 -msgid "Temperature variation" -msgstr "Variation de température" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:463 -msgid "Temperatures" -msgstr "Températures" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1004 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1072 -msgid "Test" -msgstr "Test" - -# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n") -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662 -msgid "The " -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:309 -msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." -msgstr "L'extrudeur à utiliser (à moins que d'autres réglages d'extrudeur plus spécifiques soient spécifiés). Cette valeur se substitue aux extrudeurs de périmètre et de remplissage, mais pas aux extrudeurs de support." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:703 -msgid "The extruder to use when printing infill." -msgstr "L'extrudeur à utiliser pour imprimer le remplissage." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:959 -msgid "The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "L'extrudeur à utiliser pour imprimer les périmètres et la jupe. Le premier extrudeur a le numéro 1." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1273 -msgid "The extruder to use when printing solid infill." -msgstr "L'extrudeur à utiliser pour imprimer les remplissages plein." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1472 -msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." -msgstr "L'extrudeur à utiliser pour imprimer les intercalaires du support (1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil). Cela affecte également le raft." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1446 -msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." -msgstr "L'extrudeur à utiliser pour imprimer des supports, du tapis ou des clôtures (1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:209 -msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "La première couche sera réduite sur le plan XY selon la valeur configurée afin de compenser l'écrasement de la première couche également connu sous le nom d'effet Pied d'Éléphant." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1734 -msgid "The object will be grown/shrunk in the XY plane by the configured value " - "(negative = inwards, positive = outwards). This might be useful " - "for fine-tuning sizes." -msgstr "L'objet sera agrandi/réduit sur les plans XY selon la valeur indiquée (négatif = réduit, positif = agrandi). Ce réglage peut être utile pour un réglage fin des tailles de trous." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1031 -msgid "The object will be raised by this number of layers, and support material will be generated under it." -msgstr "L'objet sera surélevé de ce nombre de couches, et du support sera généré en dessous." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1374 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "L'imprimante multiplexe les filaments vers une seule tête d'extrusion." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "Le fichier sélectionné ne contient aucune géométrie." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:328 -msgid "The selected file contains several disjoint areas. This is not supported." -msgstr "Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas utilisable." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1112 -msgid "The selected object can't be split because it contains more than one volume/material." -msgstr "L'objet sélectionné ne peut être scindé car il contient plus d'un volume/matériau." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1121 -msgid "The selected object couldn't be split because it contains only one part." -msgstr "L'objet sélectionné n'a pu être scindé car il ne contient qu'une seule pièce." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1144 -msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." -msgstr "La vitesse de chargement d'un filament dans l'extrudeur après une rétractation (ne s'applique qu'au moteur de l'extrudeur). Si cette valeur reste sur zéro, la vitesse de rétraction est utilisée." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1136 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "La vitesse des rétractations (ne s'applique qu'au moteur de l'extrudeur)." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:533 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"Le mode Vase requiert :\n" -"-Un seul périmètre\n" -"-Pas de couches pleines sur le dessus\n" -"-Une densité de remplissage de 0%\n" -"-Pas de supports\n" -"-'S'assurer de l'épaisseur de la coque verticale' décochée\n" -"\n" -"Voulez-vous que je modifie ces réglages afin d'activer le mode Vase?" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1560 -msgid "The supplied name is empty. It can't be saved." -msgstr "Le nom proposé est vide. Sauvegarde impossible." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1788 -msgid "The supplied name is not available." -msgstr "Le nom proposé n'est pas disponible." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1785 -msgid "The supplied name is not valid; the following characters are not allowed:" -msgstr "Le nom proposé n'est pas valide ; les caractères suivants ne sont pas autorisés :" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1418 -msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." -msgstr "Distance verticale entre l'objet et l'intercalaire du support. Régler cette valeur sur zéro empêchera Slic3r d'utiliser la vitesse et le débit des ponts pour la première couche de l'objet." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1312 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"L'option Nettoyage n'est pas disponible lorsque vous utilisez le mode Rétractation du Firmware.\n" -"\n" -"Voulez-vous que je la désactive pour permettre la Rétractation du Firmware ?" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:581 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool change.\n" -"(both support_material_extruder and support_material_interface_extruder need to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"A l'heure actuelle la Tour de Nettoyage ne tolère les supports non-solubles \n" -"que s'ils sont imprimés avec l'extrudeur en cours d'utilisation sans déclencher un changement d'outil.\n" -"(support_material_extruder de même que support_material_interface_extruder doivent être réglés sur 0).\n" -"\n" -"Voulez-vous que je modifie ces réglages pour activer la Tour de Nettoyage ?" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:60 -msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "Ce code est inséré entre des objets lorsque vous utilisez l'impression séquentielle. Par défaut la température de l'extrudeur et du plateau est réinitialisée et utilise la commande sans-attente ; toutefois si des commandes M104, M109, M140 ou M190 sont détectées dans ce code personnalisé, Slic3r n'ajoutera pas de commandes de température. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r, donc vous pouvez entrer une commande \"M109S[first_layer_temperature]\" où vous le souhaitez." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:767 -msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." -msgstr "Ce code personnalisé est inséré à chaque changement de couche, juste après le mouvement Z et avant le déplacement de l'extrudeur au point de départ de la couche suivante. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:49 -msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." -msgstr "Ce code personnalisé est inséré à chaque changement de couche, juste avant le mouvement en Z. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1603 -msgid "This custom code is inserted right before every extruder change. Note that you can use placeholder variables for all Slic3r settings as well as [previous_extruder] and [next_extruder]." -msgstr "Ce code personnalisé est inséré juste avant chaque changement d'extrudeur. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r de même que [previous_extruder] et [next_extruder]." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:228 -msgid "This end procedure is inserted at the end of the output file, before the printer end gcode. Note that you can use placeholder variables for all Slic3r settings. If you have multiple extruders, the gcode is processed in extruder order." -msgstr "Cette procédure de fin est insérée à la fin du fichier de sortie, avant le gcode de fin de l'imprimante. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r. Si vous avez plusieurs extrudeurs, le gcode sera traité suivant l'ordre des extrudeurs." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:218 -msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all Slic3r settings." -msgstr "Cette procédure de fin est insérée à la fin du fichier de sortie. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:827 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:838 -msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "Ce réglage expérimental sert à limiter la vitesse de changement dans le flux d'extrusion. Une valeur de 1.8 mm³/s² garantit qu'un changement de flux d'extrusion de 1.8 mm³/s (largeur d'extrusion 0.45mm, hauteur d'extrusion 0.2mm, alimentation 20 mm/s) à 5.4 mm³/s (alimentation 60 mm/s) prendra au moins 2 secondes." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:818 -msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." -msgstr "Ce réglage expérimental est utilisé pour paramétrer la vitesse volumétrique maximum tolérée par votre extrudeur." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1657 -msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." -msgstr "Ce réglage expérimental utilise les commandes G10 et G11 pour laisser le firmware gérer la rétractation. Utilisable seulement par les versions récentes de Marlin." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1671 -msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." -msgstr "Cette fonction expérimentale génère des valeurs de E en millimètres cubiques au lieu de millimètres linéaires. Si votre firmware ne connait pas déjà le diamètre du filament, vous pouvez saisir une commande comme 'M200 D[filament_diameter_0] T0' dans votre G-Code de début pour activer le mode volumétrique, et utiliser le diamètre de filament associé au filament choisi dans Slic3r. Cette fonction n'est utilisable que dans les versions récentes de Marlin." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:108 -msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." -msgstr "Ce facteur affecte la quantité de plastique utilisée pour les ponts. Vous pouvez le diminuer légèrement pour éviter l'affaissement. La valeur par défaut est généralement suffisante et vous devriez expérimenter le refroidissement (utiliser un ventilateur) avant de modifier ceci." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:368 -msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." -msgstr "Ce facteur modifie proportionnellement le flux d'extrusion. Vous pouvez avoir besoin de modifier ceci afin d'obtenir un rendu de surface net et une largeur correcte pour les murs uniques. Les valeurs habituelles vont de 0.9 à 1.1. Si vous pensez devoir changer davantage cette valeur, vérifiez le diamètre de votre filament et les E Steps dans le firmware." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:98 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "Cette vitesse de ventilateur sera utilisée pour les ponts et les surplombs." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:692 -msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "Cette fonction permet de combiner le remplissage afin d'accélérer l'impression en extrudant des couches de remplissage plus épaisses tout en conservant des périmètres fins, avec plus de précision." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1281 -msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." -msgstr "Cette fonction permet de forcer l'impression d'une couche pleine après le nombre de couches indiqué. Réglez sur zéro pour la désactiver. Vous pouvez indiquer n'importe quelle valeur (par exemple 9999); Slic3r choisira automatiquement le nombre maximum de couches a combiner en fonction du diamètre de la buse et de l'épaisseur des couches." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1323 -msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." -msgstr "Afin de rendre invisible les jointures, cette fonction élèvera la tête d'impresion graduellement (en cas d'impression d'un objet à paroi unique). Cette option nécessite de n'avoir qu'un seul périmètre, de ne pas avoir de remplissage, ni de surface pleine supérieure, ni de support. Vous pouvez toujours choisir le nombre de surface pleines inférieures de même que les boucles des jupes et des clôtures. Cela ne fonctionnera pas si vous imprimez plus d'un objet." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:663 -msgid "" -"This file contains several objects positioned at multiple heights. Instead of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Ce fichier contient plusieurs objets positionnés à différentes hauteurs. Au lieu de les considérer comme des objets distincts, voulez-vous que je considère\n" -"ce fichier comme un seul objet en plusieurs parties?\n" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:164 -msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." -msgstr "Cette option active la logique de refroidissement automatique, qui ajuste la vitesse d'impression et celle du ventilateur en fonction du temps d'impression de la couche." - -#: xs/src/slic3r/GUI/GUI.cpp:899 -msgid "This flag enables the brim that will be printed around each object on the first layer." -msgstr "Cette option permet l'impression de la jupe qui entoure chaque objet lors de la première couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1066 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "Cette option active la rétractation lors d'un déplacement sur l'axe Z." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1689 -msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." -msgstr "Cette option déplace la buse lors des rétractations, limitant ainsi l'apparition d'amas sur les extrudeurs ayant tendance à couler." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:343 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:406 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Ceci est uniquement utilisé dans l'interface de Slic3r comme indication visuelle." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:171 -msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." -msgstr "Accélération à laquelle votre imprimante sera réinitialisée suite à une modification de l'accélération des fonctions spécifiques (périmètre/remplissage). Régler sur zéro pour ne pas réinitialiser l'accélération." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:78 -msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." -msgstr "L'accélération qui sera utilisée par votre imprimante pour les ponts. Régler sur zéro pour désactiver l'accélération pour les ponts." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:574 -msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." -msgstr "L'accélération que l'imprimante utilisera pour la première couche. Régler sur zéro afin de désactiver le contrôle de l'accélération pour la première couche." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:682 -msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." -msgstr "Il s'agit de l'accélération que votre imprimante utilisera pour le remplissage. Régler sur zéro afin de désactiver le contrôle de l'accélération pour le remplissage." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:949 -msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "L'accélération que votre imprimante utilisera pour les périmètres. Une valeur élevée comme 9000 donne généralement de bons résultats si votre matériel le permet. Régler sur zéro afin de désactiver le contrôle de l'accélération pour les périmètres." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:895 -msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "Il s'agit du diamètre de la buse de votre extrudeur (par exemple: 0.5, 0.35, etc.)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:797 -#, no-c-format -msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "Ceci est la hauteur de couche imprimable maximum pour cet extrudeur, utilisée pour plafonner la hauteur de couche variable et la hauteur de couche des supports. La hauteur de couche maximum recommandée est 75% de la largeur d'extrusion afin d'obtenir une adhésion inter-couches correcte. Si réglée sur 0, la hauteur de couche est limitée à 75% du diamètre de la buse." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:858 -msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." -msgstr "Cette valeur est la hauteur de couche imprimable minimum pour cet extrudeur et elle limite la résolution pour la hauteur de couche variable. Les valeurs type se situent entre 0.05 mm et 0.1 mm." - -#: xs/src/libslic3r/PrintConfig.cpp:1816 -msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools. " -msgstr "Cette matrice décrit les volumes (en millimètres cube) nécessaires pour purger le nouveau filament dans la tour de nettoyage pour une paire d'outils donnée. " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:990 -msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." -msgstr "Cette option définit le nombre de périmètres à générer pour chaque couche. Notez que Slic3r peut augmenter cette valeur automatiquement si il détecte une surface inclinée qui nécessite un plus grand nombre de périmètres, si l'option \"Périmètres supplémentaires\" est sélectionnée." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:923 -msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." -msgstr "Cette option abaissera la température des extrudeurs inutilisés pour prévenir le oozing (suintement). Cela active automatiquement la génération d'une grande clôture et le déplacement des extrudeurs hors de cette clôture lors des changements de température." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:728 -msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." -msgstr "Cette option limitera le remplissage aux zones nécessaires pour soutenir les couches supérieures (cela agira comme un support interne). Si activé, la génération du G-Code prendra plus de temps à cause des calculs supplémentaires requis." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:721 -msgid "This option will switch the print order of perimeters and infill, making the latter first." -msgstr "Cette option inverse l'ordre d'impression des périmètres et du remplissage, ce dernier étant alors imprimé en premier." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:279 -msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "Ce réglage distinct affectera la vitesse des périmètres extérieurs (ceux qui sont visibles). Si cette valeur est exprimée en pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement automatique." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1252 -msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "Ce réglage distinct affectera la vitesse des périmètre ayant un rayon <= 6.5mm (les trous habituellement). Si cette valeur est exprimée en pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement automatique." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:737 -msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." -msgstr "Cette option applique un chevauchement supplémentaire entre les périmètres et le remplissage pour une meilleur fusion. En théorie, cela ne devrait pas être nécessaire, mais le jeu mécanique peut générer des espacements. Si exprimé en pourcentage (par exemple 15%), la valeur sera calculée en fonction de la largeur d'extrusion du périmètre." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:779 -msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." -msgstr "Cette option contrôle l'épaisseur (et donc le nombre total) des couches. Des couches plus fines donneront une meilleure précision mais l'impression sera plus longue." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:788 -msgid "This setting represents the maximum speed of your fan." -msgstr "Cette option représente la vitesse maximum du ventilateur." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:849 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "Cette option représente le PWM minimum dont votre ventilateur a besoin pour tourner." - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:120 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Version de ce Slic3r PE : %s" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1358 -msgid "This start procedure is inserted at the beginning, after any printer start gcode. This is used to override settings for a specific filament. If Slic3r detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." -msgstr "Cette procédure de démarrage est insérée au début, après un gcode de démarrage de l'imprimante. Elle est utilisée pour remplacer les réglages pour un filament spécifique. Si Slic3r détecte des commandes M104, M109, M140 ou M190 dans vos codes personnalisés ces commandes ne seront pas ajoutées automatiquement, de cette manière vous pouvez personnaliser la procédure de chauffe et autres actions. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r, donc vous pouvez saisir une commande \"M109 S[first_layer_temperature]\" où vous voulez. Si vous avez plusieurs extrudeurs, le G-Code sera exécuté dans l'ordre des extrudeurs." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1343 -msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If Slic3r detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "Cette procédure de démarrage est insérée au début, après que le plateau a atteint la température ciblée et lorsque l'extrudeur vient juste de commencer à chauffer, et avant que l'extrudeur ait terminé de chauffer. Si Slic3r détecte des commandes M104 ou M190 dans vos codes personnalisés, ces commandes ne seront pas ajoutées automatiquement ainsi vous serez libre de personnaliser l'ordre des commandes de chauffe et autres actions personnalisées. Notez que vous pouvez utiliser des variables génériques pour tous les réglages de Slic3r, donc vous pouvez mettre une commande \"M109S[first_layer_temperature]\" où vous le souhaitez." - -#: xs/src/libslic3r/PrintConfig.cpp:487 -msgid "This string is edited by RammingDialog and contains ramming specific parameters " -msgstr "Cette chaine est éditée par RammingDialog et contient les paramètres spécifiques d'expulsion " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1743 -msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." -msgstr "Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans le G-Code de sortie. Elle est utilisée pour compenser une mauvaise position de fin de course Z: par exemple si votre fin de course place votre buse à 0.3mm au dessus du plateau, réglez cette valeur sur -0.3 (ou corrigez votre fin de course)." - -#: xs/src/libslic3r/PrintConfig.cpp:1808 -msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below. " -msgstr "Ce vecteur enregistre les volumes requis pour changer l'outil utilisé pour la tour de nettoyage. Ces valeurs sont utilisées pour simplifier la création des volumes de purge complets ci-dessous. " - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:111 -msgid "" -"This version of Slic3r PE is not compatible with currently installed configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Cette version de Slic3r PE n'est pas compatible avec les ensembles de configuration actuellement installés.\n" -"Cela survient probablement du fait d'avoir lancé une ancienne version de Slic3r PE après en avoir utilisé une nouvelle.\n" -"\n" -"Vous pouvez soit quitter Slic3r et essayer à nouveau avec une version plus récente, ou vous pouvez relancer la configuration initiale. Procéder ainsi permettra de créer une sauvegarde de la configuration existante avant d'installer les fichiers compatibles avec ce Slic3r.\n" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1590 -msgid "Threads" -msgstr "Threads" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1591 -msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." -msgstr "Les threads sont utilisés pour paralléliser les calculs longs. Le nombre optimal de threads est légèrement supérieur au nombre de coeurs/processeurs disponibles." - -#: xs/src/slic3r/GUI/RammingChart.cpp:81 -msgid "Time" -msgstr "Durée" - -#: xs/src/libslic3r/PrintConfig.cpp:477 -msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions. " -msgstr "Temps d'attente nécessaire après que le filament ait été déchargé. Peut aider à obtenir des changements d'outils fiables avec des matériaux flexible qui ont besoin de plus de temps pour revenir à leurs dimensions originales. " - -#: xs/src/slic3r/GUI/Tab.cpp:750 -msgid "To do that please specify a new name for the preset." -msgstr "Pour faire cela veuillez spécifier un nouveau nom pour le préréglage." - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:34 -msgid "To download, follow the link below." -msgstr "Pour télécharger, suivez le lien ci-dessous." - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:338 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:72 -msgid "Tool" -msgstr "Outil" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:238 -msgid "Tool #" -msgstr "Outil #" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1144 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1602 -msgid "Tool change G-code" -msgstr "G-code de changement d'outil" - -#: xs/src/slic3r/GUI/Tab.cpp:1315 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-extrudeur" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1638 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369 -msgid "Top" -msgstr "Haut" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:187 -msgid "top solid infill" -msgstr "remplissage plein du dessus" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1613 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1624 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:143 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:85 -msgid "Top solid infill" -msgstr "Remplissage plein du dessus" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1642 -msgid "Top solid layers" -msgstr "Couches pleines du dessus" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369 -msgid "Top View" -msgstr "Vue du Dessus" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:246 -msgid "Top/bottom fill pattern" -msgstr "Motif de remplissage dessus/dessous" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:245 -msgid "Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded." -msgstr "Le volume de purge total est calculé en additionnant les deux valeurs ci-dessous, en fonction des outils qui sont chargés/déchargés." - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Total rammed volume" -msgstr "Volume total expulsé" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:82 -msgid "Total ramming time" -msgstr "Durée totale de l'expulsion" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1647 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:95 -msgid "Travel" -msgstr "Déplacement" - -#: xs/src/libslic3r/PrintConfig.cpp:1107 -msgid "Type of the printer." -msgstr "Type d'imprimante." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086 -msgid "Uniformly…" -msgstr "Uniformément…" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:24 -msgid "Unknown" -msgstr "Inconnu" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:232 -msgid "unloaded" -msgstr "déchargé" - -#: xs/src/libslic3r/PrintConfig.cpp:467 -msgid "Unloading speed" -msgstr "Vitesse de déchargement" - -#: xs/src/slic3r/GUI/Tab.cpp:2483 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"L'icône CADENAS OUVERT indique que certains paramètres ont été modifiés et ne sont pas égaux aux valeurs par défaut pour le groupe d'options actuel.\n" -"Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur les valeurs par défaut." - -#: xs/src/slic3r/GUI/Tab.cpp:2498 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"L'icône CADENAS OUVERT indique que la valeur a été changée et n'est pas égale à la valeur par défaut.\n" -"Cliquez pour régler la valeur actuelle sur la valeur par défaut." - -#: xs/src/slic3r/GUI/Tab.cpp:2445 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group to the system values." -msgstr "" -"CADENAS OUVERT;indique que certains paramètres ont été modifiés et ne sont pas égaux aux valeurs par défaut pour le groupe d'options actuel.\n" -"Cliquez sur l'icône CADENAS OUVERT pour régler tous les paramètres pour le groupe d'options actuel sur les valeurs par défaut." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:97 -msgid "Unretractions" -msgstr "Dérétractation" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1492 -msgid "Unsaved Changes" -msgstr "Changements Non Sauvegardés" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:750 -msgid "Unsaved Presets" -msgstr "Préréglages Non Sauvegardés" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:27 -msgid "Update available" -msgstr "Mise à jour disponible" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:279 xs/src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Mettre à jour automatiquement les Préréglages intégrés" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:264 -msgid "Updates" -msgstr "Mises à jour" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:283 -msgid "Updates are never applied without user's consent and never overwrite user's customized settings." -msgstr "Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisateur et n'annulent jamais les réglages personnalisés de l'utilisateur." - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:15 -msgid "Upgrade" -msgstr "Mise à jour" - -#: xs/src/slic3r/GUI/GUI.cpp:326 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Charger un firmware dans une imprimante basée sur un Arduino" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:989 -msgid "USB/Serial connection" -msgstr "Port USB/Série" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1194 -msgid "USB/serial port for printer connection." -msgstr "Port USB/Série pour la connexion de l'imprimante." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1656 -msgid "Use firmware retraction" -msgstr "Utiliser la rétractation du firmware" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:75 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Utiliser le rendu de legacy OpenGL 1.1" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1663 -msgid "Use relative E distances" -msgstr "Utiliser des valeurs E relatives" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:361 -msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." -msgstr "Utiliser cette option pour indiquer la lettre utilisée par l'extrudeur de votre imprimante (habituellement E, mais certaines imprimantes utilisent A)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1400 -msgid "Use this setting to rotate the support material pattern on the horizontal plane." -msgstr "Utiliser ce réglage pour orienter le motif du support sur le plan horizontal." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1670 -msgid "Use volumetric E" -msgstr "E Volumétrique" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:449 -msgid "Used Filament (g)" -msgstr "Filament Utilisé (g)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:447 -msgid "Used Filament (m)" -msgstr "Filament Utilisé (m)" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:448 -msgid "Used Filament (mm³)" -msgstr "Filament Utilisé (mm³)" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:21 -msgid "User" -msgstr "Utilisateur" - -#: xs/src/slic3r/GUI/Preset.cpp:649 xs/src/slic3r/GUI/Preset.cpp:706 -#: xs/src/slic3r/GUI/PresetBundle.cpp:1127 lib/Slic3r/GUI/Plater.pm:553 -msgid "User presets" -msgstr "Préréglages utilisateur" - -#: xs/src/slic3r/GUI/ButtonsDescription.cpp:38 -msgid "Value is the same as the system value" -msgstr "La valeur est identique à la valeur du système" - -#: xs/src/slic3r/GUI/ButtonsDescription.cpp:55 -msgid "Value was changed and is not equal to the system value or the last saved preset" -msgstr "La valeur a été changée et n'est pas égale à la valeur du système ou au dernier préréglage sauvegardé" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:55 -msgid "variants" -msgstr "variantes" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:49 xs/src/slic3r/GUI/Tab.cpp:755 -msgid "vendor" -msgstr "fabriquant" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:644 -msgid "Verbose G-code" -msgstr "G-code commenté" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66 -msgid "Version " -msgstr "Version " - -#: xs/src/slic3r/GUI/AboutDialog.cpp:60 -msgid "Version" -msgstr "Version" - -#: xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp:49 -msgid "version" -msgstr "version" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:318 -msgid "Vertical shells" -msgstr "Parois verticales" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:65 -msgid "View" -msgstr "Vue" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:409 -msgid "Volume" -msgstr "Volume" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Volume à purger (mm³) lorsque le filament est" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214 -msgid "Volumetric" -msgstr "Volumétrique" - -#: lib/Slic3r/GUI/Plater/3DPreview.pm:71 -msgid "Volumetric flow rate" -msgstr "Débit volumétrique" - -#: xs/src/libslic3r/GCode/PreviewData.cpp:370 -msgid "Volumetric flow rate (mm3/s)" -msgstr "Débit volumétrique (mm3/s)" - -#: xs/src/slic3r/GUI/RammingChart.cpp:86 -msgid "Volumetric speed" -msgstr "Vitesse volumétrique" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:500 -msgid "Warning" -msgstr "Alerte" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:205 -msgid "Welcome" -msgstr "Bienvenue" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:205 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Bienvenue sur Slic3r %s" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:131 -msgid "What do you want to print today? â„¢" -msgstr "Que voulez-vous imprimer aujourd'hui? â„¢" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:69 -msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" -msgstr "Lorsqu'ils sont sélectionnés, les préréglages de l'imprimante et du filament sont visibles dans l'éditeur de préréglage même s'ils sont désignés comme incompatibles avec l'imprimante en cours d'utilisation" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:219 -msgid "when printing " -msgstr "pendant l'impression des " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:136 -msgid "When printing multi-material objects, this settings will make slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "Lorsque vous imprimez des objets multi-matériaux, ce réglage fera en sorte que Slic3r rattache ensemble les parties de l'objet qui se superposent (la 2e partie sera rattachée à la 1ere, la 3e partie sera rattachée à la 1ere et la 2e, etc...)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:155 -msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." -msgstr "Lorsque vous imprimez plusieurs objets ou copies, ce réglage permet de terminer un objet avant de passer au suivant (en repartant de sa première couche). Cette fonction est utile pour éviter les risques d'impressions gâchées. Slic3r doit vous avertir et éviter les collisions entre les objets et l'extrudeur, mais soyez vigilant." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:605 -msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." -msgstr "Lors d'une impression avec de très faibles épaisseurs de couche, vous pouvez choisir d'imprimer une première couche plus épaisse pour améliorer l'adhérence et la tolérance aux plateaux imparfaits. Ce réglage peut être exprimé comme une valeur absolue ou un pourcentage (par exemple 150%) par rapport à l'épaisseur de couche par défaut." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1082 -msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." -msgstr "Lorsque la rétractation est déclenchée avant un changement d'outil, le filament est retiré de la longueur indiquée (la longueur est mesurée sur le filament brut, avant qu'il entre dans l'extrudeur)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1073 -msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." -msgstr "Lorsque la rétractation est déclenchée, le filament est tiré en arrière de la longueur indiquée (la longueur est mesurée sur le filament brut, avant qu'il entre dans l'extrudeur)." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:808 -msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." -msgstr "Lorsque vous réglez les autres vitesses à 0, Slic3r calculera automatiquement la vitesse optimale de façon à garder une pression constante dans l'extrudeur. Cette fonction expérimentale est utilisée pour régler la plus haute vitesse que vous souhaitez autoriser." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1127 -msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." -msgstr "Lorsque la rétractation est compensée après un changement d'outil, l'extrudeur exprimera cette quantité de filament en plus." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1119 -msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." -msgstr "Lorsque la rétractation est compensée après un déplacement, l'extruder exprimera cette quantité de filament en plus. Ce réglage est rarement nécessaire." - -#: xs/src/slic3r/GUI/Tab.cpp:2486 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "L'icône en forme de PUCE BLANCHE indique un préréglage non-système." - -#: xs/src/slic3r/GUI/Tab.cpp:2489 -msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." -msgstr "L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au dernier préréglage sauvegardé pour le groupe d'options actuel." - -#: xs/src/slic3r/GUI/Tab.cpp:2504 -msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." -msgstr "L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier préréglage sauvegardé." - -#: xs/src/slic3r/GUI/Tab.cpp:2451 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "PUCE BLANCHE;pour le bouton gauche : indique un préréglage non-système, pour le bouton droit : indique que le réglage n'a pas été modifié." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1716 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:70 -msgid "Width" -msgstr "Largeur" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:334 -msgid "Width (mm)" -msgstr "Largeur (mm)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1717 -msgid "Width of a wipe tower" -msgstr "Largeur d'une tour de nettoyage" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:41 -#, c-format -msgid "will always run at %d%% " -msgstr "fonctionnera toujours à %d%% " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:50 -msgid "will be turned off." -msgstr "sera désactivé." - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:442 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:149 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:91 -msgid "Wipe tower" -msgstr "Tour de nettoyage" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:564 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:585 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:602 -msgid "Wipe Tower" -msgstr "Tour de Nettoyage" - -#: xs/src/slic3r/GUI/WipeTowerDialog.cpp:142 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Tour de nettoyage - Ajustement du volume de purge" - -#: xs/src/libslic3r/PrintConfig.cpp:1847 -msgid "Wipe tower rotation angle" -msgstr "Angle de rotation de la tour de nettoyage" - -#: xs/src/libslic3r/PrintConfig.cpp:1848 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Angle de rotation de la tour de nettoyage par rapport à l'axe X " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1688 -msgid "Wipe while retracting" -msgstr "Nettoyer lors des rétractations" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1058 -msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." -msgstr "Avec les extrudeurs bowden, il est conseillé d'effectuer une rétractation rapide avant de réaliser le mouvement de nettoyage." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1564 -msgid "With sheath around the support" -msgstr "Avec une enveloppe autour du support" - -#: xs/src/slic3r/GUI/UpdateDialogs.cpp:72 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"Voulez-vous l'installer ?\n" -"\n" -"Notez qu'un snapshot complet de la configuration sera sauvegardé d'abord. Elle peut être restaurée à tout moment si vous rencontrez un problème avec la nouvelle version.\n" -"\n" -"Ensembles de configuration mis à jour :" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1703 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "Coordonnée X du coin avant gauche d'une tour de nettoyage" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1386 -msgid "XY separation between an object and its support" -msgstr "Séparation XY entre un objet et son support" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1388 -msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." -msgstr "Séparation XY entre un objet et son support. Si la valeur est exprimée en pourcentage (par exemple 50%), elle sera calculée à partir de la largeur du périmètre extérieur." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1732 -msgid "XY Size Compensation" -msgstr "Compensation de Taille XY" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1710 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Coordonnée Y du coin avant gauche d'une tour de nettoyage" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1970 -msgid "Yes" -msgstr "Oui" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:885 -msgid "You can put here your personal notes. This text will be added to the G-code header comments." -msgstr "Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté au commentaire en entête du G-Code." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:413 -msgid "You can put your notes regarding the filament here." -msgstr "Vous pouvez saisir vos remarques concernant le filament ici." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1015 -msgid "You can put your notes regarding the printer here." -msgstr "Vous pouvez saisir ici vos observations concernant l'imprimante." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:181 -msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." -msgstr "Vous pouvez régler ce paramètre sur une valeur positive pour désactiver complètement le ventilateur pendant les premières couches, afin de ne pas rendre l'adhérence plus difficile." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:931 -msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -msgstr "Vous pouvez utiliser toutes les options de configuration comme variables dans ce modèle. Par exemple : [layer_height], [fill_density] etc. Vous pouvez aussi utiliser [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749 -msgid "You have unsaved changes " -msgstr "Les modifications n'ont pas été sauvegardées " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:101 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "Vous devez redémarrer Slic3r afin que les modifications soient appliquées." - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594 -msgid "Your file was repaired." -msgstr "Votre fichier a été réparé." - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:744 -msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." -msgstr "Votre objet semble être trop grand, il a donc été automatiquement réduit afin de l'adapter à votre plateau d'impression." - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1742 -msgid "Z offset" -msgstr "Décalage Z" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:91 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:492 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1170 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1181 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1401 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1557 -msgid "°" -msgstr "°" - -#: xs/src/slic3r/GUI/ConfigWizard.cpp:484 -#: xs/src/slic3r/GUI/ConfigWizard.cpp:498 -msgid "°C" -msgstr "°C" - -#: supermerill's add: tab.cpp -msgid "Avoid unsupported perimeters" -msgstr "Eviter les périmètres sans support" - -#: supermerill's add: tab.cpp -msgid "Seam" -msgstr "Jointures" - -#: supermerill's add: tab.cpp -msgid "Looping perimeter" -msgstr "Périmètres en boucle" - -#: supermerill's add: tab.cpp -msgid "Fill internal" -msgstr "Remplissage interne" - -#: supermerill's add: tab.cpp -msgid "Fill external" -msgstr "Remplissage plein externe" - -#: supermerill's add: tab.cpp -msgid "Supporting dense layer" -msgstr "Couche de support pour remplissage plein" - -#: supermerill's add: tab.cpp -msgid "Anchor solid infill by X mm" -msgstr "Ancrage des remplissages plein de X mm " - -#: supermerill's add: tab.cpp -msgid "Perimeter speed" -msgstr "Vitesses pour les périmètres" - -#: supermerill's add: tab.cpp -msgid "Infill speed" -msgstr "Vitesses pour les remplissages" - -#: supermerill's add: tab.cpp -msgid "Support speed" -msgstr "Vitesses pour les supports" - -#: supermerill's add: tab.cpp -msgid "First layer speed" -msgstr "Vitesses pour la première couche" - -#: supermerill's add: tab.cpp -msgid "Wipe tower position" -msgstr "Position de la tour de vidage" - -#: supermerill's add: tab.cpp -msgid "Bridge flow ratio" -msgstr "Débit lors de ponts" - -#: supermerill's add: tab.cpp -msgid "XY compensation" -msgstr "Compensation en XY" - -#: supermerill's add: PrintConfig.cpp -msgid "remove_small_gaps" -msgstr "Retirer les petites imperfections" - -#: supermerill's add: PrintConfig.cpp -msgid "Top fan speed" -msgstr "Vitesse du ventilateur pour le dessus" - -#: supermerill's add: PrintConfig.cpp -msgid "Above the bridges" -msgstr "Au-dessus des ponts" - -#: supermerill's add: PrintConfig.cpp -msgid "First layer" -msgstr "Première couche" - -#: supermerill's add: PrintConfig.cpp -msgid "Top Pattern" -msgstr "Motif du dessus" - -#: supermerill's add: PrintConfig.cpp -msgid "Bottom Pattern" -msgstr "Motif du dessous" - -#: supermerill's add: PrintConfig.cpp -msgid "Enforce 100% fill volume" -msgstr "S'assurer que les remplissages sont exacts en volume" - -#: supermerill's add: PrintConfig.cpp -msgid "Bridged" -msgstr "Ponts" - -#: supermerill's add: PrintConfig.cpp -msgid "External" -msgstr "Externe" - -#: supermerill's add: PrintConfig.cpp -msgid "Seam position" -msgstr "Position des jointures" - -#: supermerill's add: PrintConfig.cpp -msgid "Only one perimeter on Top surfaces" -msgstr "Seulement un périmètre autoir des surfaces du dessus" - -#: supermerill's add: PrintConfig.cpp -msgid "Fill" -msgstr "Remplissage" - -#: supermerill's add: PrintConfig.cpp -msgid "Do not connect infill lines to each other" -msgstr "Ne pas connecter les lignes de remplissage entre elles" - -#: supermerill's add: PrintConfig.cpp -msgid "Algorithm" -msgstr "Algorithme" - -#: supermerill's add: PrintConfig.cpp -msgid "Sparse" -msgstr "Epars" - -#: supermerill's add: PrintConfig.cpp -msgid "Exact last layer height" -msgstr "Mettre la dernière tranche à la heuteur exacte" - -#: supermerill's add: PrintConfig.cpp -msgid "Minimum perimeters" -msgstr "Nombre min de périmètres" - -#: supermerill's add: PrintConfig.cpp -msgid "Only on bridged areas" -msgstr "Seulement sur ponts" - -#: supermerill's add: PrintConfig.cpp -msgid "Solid first layer" -msgstr "Première couche pleine" - -#: supermerill's add: PrintConfig.cpp -msgid "Travel move reduced" -msgstr "Moins de déplacements" - -#: supermerill's add: PrintConfig.cpp -msgid "Hidden" -msgstr "Cachée" - -#: supermerill's add: PrintConfig.cpp -msgid "Small" -msgstr "Fins" - -#: supermerill's add: PrintConfig.cpp -msgid "Solid" -msgstr "Plein" - -#: supermerill's add: PrintConfig.cpp -msgid "Interface" -msgstr "Interface" - -#: supermerill's add: PrintConfig.cpp -msgid "Top solid" -msgstr "Plein du dessus" - -#: supermerill's add: PrintConfig.cpp -msgid "All layers" -msgstr "Toutes les couches" - -#: supermerill's add: PrintConfig.cpp -msgid "Holes" -msgstr "Trous" - -#: tooltips - -#: supermerill's add: PrintConfig.cpp -msgid "Remove small gaps" -msgstr "Retire les mini-espaces/imperfections" - -#: supermerill's add: PrintConfig.cpp -msgid "Remove the small gaps in the 3D model when slicing. Disable it if you " - "are very confident on your model, or you want to print an item with a geometry " - "designed for vase mode." -msgstr "Retire touts les petits trous et espaces (imperfections) qui peuvent être présent sur le modèle. A ne décocher que si le modèle 3D à été crée exprès, pour le mode vase." - -#: supermerill's add: PrintConfig.cpp -msgid "This fan speed is enforced during all top fills." -msgstr "Cette vitesse de ventilation est utilisé pour toutes les surface du dessus." - -#: supermerill's add: PrintConfig.cpp -msgid "This factor affects the amount of plastic to overextrude " - "when we are filling on top of a bridge surface." - "With a number >1, we can retrieve a correct z-height " - "even if the bridged layer has fallen a bit. " - "It's useful if you want to have a nice flat top layer." -msgstr "Ce paramètre affecxte la quantité de matière déposée au-dessus des ponts. Sachant que les ponts s'affaissent un peu, avec un paramètre légèrement supérieur à 1, on peut revenir à la bonne hauteur. C'est surtotu utile si on veut obtenir des surfaces supérieure bien plate et jolie." - -#: supermerill's add: PrintConfig.cpp -msgid "The first layer will be grown / shrunk in the XY plane by the configured value " - "to compensate for the 1st layer squish aka an Elephant Foot effect. (should be negative = inwards)" -msgstr "La première couche est agrandie / rétrécie en XY par cette valeur pour compenser la déformation de la première couche. (negatif = vers l'intérieur de la pièce, positif = vers l'extérieur) !!! Devrait être négative (<0) afin de rétrécir la pièce !!!" - -#: supermerill's add: PrintConfig.cpp -msgid "Fill pattern for top infill. This only affects the top external visible layer, and not its adjacent solid shells." -msgstr "Motif pour les surfaces du dessus. Ceci affecte seulement la couche externe visible, et non les coques pleines adjacentes." - -#: supermerill's add: PrintConfig.cpp -msgid "Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells." -msgstr "Motif pour les surfaces du dessous. Ceci affecte seulement la couche externe visible, et non les coques pleines adjacentes." - -#: supermerill's add: PrintConfig.cpp -msgid "Experimental option which modifies (in solid infill) fill flow to have the exact amount of plastic inside the volume to fill " - "(it generally changes the flow from -7% to +4%, depending on the size of the surface to fill and the overlap parameters, " - "but it can go as high as +50% for infill in very small areas where rectilinear doesn't have good coverage). It has the advantage " - "to remove the over-extrusion seen in thin infill areas, from the overlap ratio" -msgstr "Option expérimentale qui modifie le débit dans les couches pleines pour s'assurer que le volume extrudé est égal au volume à remplir. En génral, le débit n'ets modifié que de 4-7% mais cela peut aller jusqu'a +50% dans les très petites zones où il est difficile de circuler. Le pricipal avantage est de retirer l'effet de sur-extrusion souvent vues dans les zones de remplissage étroites." - -#: supermerill's add: PrintConfig.cpp -msgid This parameter grows the top/bottom/solid layers by the specified MM to anchor them into the part. Put 0 to deactivate it." -msgstr "Ce paramètre agrandi les couches pleines par X mm pour bien les ancrer dans la pièce. Mettre 0 pour désactiver cette fonction." - -#: supermerill's add: PrintConfig.cpp -msgid "This parameter grows the bridged solid infill layers by the specified MM to anchor them into the part. Put 0 to deactivate it." -msgstr "Ce paramètre agrandi les couches de pont par X mm pour bien les ancrer dans la pièce. Mettre 0 pour désactiver cette fonction." - -#: supermerill's add: PrintConfig.cpp -msgid "Join the perimeters to create only one continuous extrusion without any z-hop." - " Long inside travel (from external to holes) are not extruded to give some space to the infill." -msgstr "Rabouter les périmètres pour en créer une unique et longue extrusion. Lors d'un passage de périmètre extérieur vers intérieur, si l'espace est grand, un déplacemnt sera tout de même utilisé." - -#: supermerill's add: PrintConfig.cpp -msgid "Position of perimeters starting points." -msgstr "Position des point de départ des jonctions entre périmètres" - -#: supermerill's add: PrintConfig.cpp -msgid "Use only one perimeter on flat top surface, to let more space to the top infill pattern." -msgstr "Utiliser seulement une seule ligne de périmètre sur les surfaces du dessus, afin de laisser le plus de place possible au motif de remplissage du dessus." - -#: supermerill's add: PrintConfig.cpp -msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves " - "but infill of the first layer, it can be overwrite by the 'default' (default depends of the type of the path) " - "speed if it's lower than that. If expressed as a percentage " - "(for example: 40%) it will scale the 'default' speeds." -msgstr "Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à toutes les impressions de la première couche, sauf les remplissages (et si la vitesse par défaut est plus petite, elle sera utilisée à la place). Si exprimée comme un pourcentage (par exemple 40%), cela modulera la vitesse par défaut." - -#: supermerill's add: PrintConfig.cpp -msgid "If expressed as absolute value in mm/s, this speed will be applied to infill moves " - "of the first layer, it can be overwrite by the 'default' (solid infill or infill if not bottom) " - "speed if it's lower than that. If expressed as a percentage " - "(for example: 40%) it will scale the 'default' speed." -msgstr "Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée aux impressions de remplissage de la première couche (et si la vitesse par défaut est plus petite, elle sera utilisée à la place). Si exprimée comme un pourcentage (par exemple 40%), cela modulera la vitesse par défaut." - -#: supermerill's add: PrintConfig.cpp -msgid "Enable gap fill algorithm. It will extrude small lines between perimeters " - "when there is not enough space for another perimeter or an infill." -msgstr "Active les impression de remplissage des petits trous qui peuvent subsister entre les périmètres et sui sont trop petits pour faire du remplissage." - -#: supermerill's add: PrintConfig.cpp -msgid "Enables the creation of a support layer under the first solid layer. This allows you to use a lower infill ratio without compromising the top quality." - " The dense infill is laid out with a 50% infill density." -msgstr "Active le remplacement du motif de remplissage sous les remplissage plein afin de permettre un meilleur support de ceux-ci. Cela permet de choisir un ratio de remplissage plus petit." - -#: supermerill's add: PrintConfig.cpp -msgid "If checked, the infill algorithm will try to not connect the lines near the infill. Can be useful for art or with high infill/perimeter overlap." -msgstr "Si coché, l'algorithme de dessin des patrons de remplissage va essayer de ne pas connecter ses lignes entre elles, en bordure des périmètres." - -#: supermerill's add: PrintConfig.cpp -msgid "Choose the way the dense layer is lay out." - " The automatic option let it try to draw the smallest surface with only strait lines inside the sparse infill." - " The anchored just enlarge a bit (by bridged anchor) the surfaces that need a better support." -msgstr "Choisissez la façon dont la couche de support est dessinée. L'option eutomatique essayera de trouver une surface sans virage au milieu du vide. L'option ancrée utilisera une surface un peu plus grande que celle supoortée." - -#: supermerill's add: PrintConfig.cpp -msgid "Automatic" -msgstr "Automatique" - -#: supermerill's add: PrintConfig.cpp -msgid "Automatic, only for small areas" -msgstr "Automatique, sur les zones étroites" - -#: supermerill's add: PrintConfig.cpp -msgid "Anchored" -msgstr "Ancré" - -#: supermerill's add: PrintConfig.cpp -msgid "This setting controls the height of last object layers to put the last layer at the exact highest height possible. Experimental." -msgstr "Ce paramètre fonctionne mal, ne l'utilisez pas. Il aurait dû placer la dernière couche exactement à la hauteur de l'objet, mais ça marche mal." - -#: supermerill's add: PrintConfig.cpp -msgid "Experimental option to remove perimeters where there is nothing under it and where a bridged infill should be better. Computationally intensive!" -msgstr "option très expérimentale pour permettre de ne pas mettre de périmètres s'il n'y a pas de couches en support en-dessous." - -#: supermerill's add: PrintConfig.cpp -msgid "Number of perimeters exluded from this option." -msgstr "Nombre de périmètre qui ne sont pas retirés par cette fonction" - -#: supermerill's add: PrintConfig.cpp -msgid "Only remove perimeters over areas marked as 'bridge'. Can be useful to let perimeter run over overhangs, but it's not very reliable." -msgstr "Ne retirer les périmètres qu'au dessus des endroit où il peut y avoir des ponts. Utile pour garder les surplombs." - -#: supermerill's add: PrintConfig.cpp -msgid "Use a solid layer instead of a raft for the layer that touch the build plate." -msgstr "Dépose une couche peinle sur le plateur à la place d'un quadriallage." - -#: supermerill's add: PrintConfig.cpp -msgid "Add a big cost to travel paths when possible (when going into a loop), so it will prefer a less optimal seam posistion if it's nearer." -msgstr "Ajoute un fort coût aux déplacement pour les minimiser davantage." - -#: supermerill's add: PrintConfig.cpp -msgid "The convex holes will be grown / shrunk in the XY plane by the configured value" - " (negative = inwards, positive = outwards, should be positive as the holes are always a bit smaller)." - " This might be useful for fine-tuning hole sizes." -msgstr "Les trous convexes vont être agrandis/rétécis en XY par cette valeur pour compenser la rétractation du palstique. (negatif = vers l'intérieur de la pièce, positif = vers l'extérieur) !!! Devrait être négative (<0) afin d'agrandir le trou!!!" - -#: supermerill's add: PrintConfig.cpp -msgid "Invalid value for --over-bridge-flow-ratio" -msgstr "Valeur invalide pour --over-bridge-flow-ratio" - -#: supermerill's add: others Tab.hpp -msgid "Hardware Settings" -msgstr "Paramètres du matériel" - -msgid "Rectilinear" -msgstr "Rectilinéaire" - -msgid "Grid" -msgstr "Grille" - -msgid "Stars" -msgstr "Etoiles" - -msgid "Cubic" -msgstr "Tri-Cubique" - -msgid "Line" -msgstr "Lignes" - -msgid "Concentric" -msgstr "Concentrique" - -msgid "Honeycomb" -msgstr "Hexagones" - -msgid "3D Honeycomb" -msgstr "Hexagonal 3D" - -msgid "Gyroid" -msgstr "Gyroide" - -msgid "Hilbert Curve" -msgstr "Hilbert (Fractale)" - -msgid "Ironing" -msgstr "Lissée" - -msgid "Concentric" -msgstr "Concentrique" - -msgid "Nearest" -msgstr "Au plus près" - -msgid "Random" -msgstr "Aléatoire" - -msgid "Aligned" -msgstr "Aligné" - -msgid "Concentric" -msgstr "Concentrique" diff --git a/resources/localization/it/Slic3rPE.mo b/resources/localization/it/Slic3rPE.mo deleted file mode 100644 index dd865ca9d..000000000 Binary files a/resources/localization/it/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/it/Slic3rPE_it.po b/resources/localization/it/Slic3rPE_it.po deleted file mode 100644 index 1bd270426..000000000 --- a/resources/localization/it/Slic3rPE_it.po +++ /dev/null @@ -1,7058 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.8\n" -"Language-Team: \n" - -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" -msgstr "Riguardo Slic3r" - -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 -msgid "Version" -msgstr "Versione" - -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "Forma" - -#: src/slic3r/GUI/BedShapeDialog.cpp:50 -msgid "Rectangular" -msgstr "Rettangolare" - -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 -msgid "Size" -msgstr "Dimensione" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -msgid "Size in X and Y of the rectangular plate." -msgstr "Dimensioni su X e Y del piano rettangolare." - -#: src/slic3r/GUI/BedShapeDialog.cpp:61 -msgid "Origin" -msgstr "Origine" - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" -"Distanza della coordinata 0,0 del G-code dall'angolo frontale sinistro del " -"rettangolo." - -#: src/slic3r/GUI/BedShapeDialog.cpp:66 -msgid "Circular" -msgstr "Circolare" - -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 -msgid "mm" -msgstr "mm" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "Diametro" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Diametro del piano di stampa. Si presume che l'origine (0,0) si trovi al " -"centro." - -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "Personalizzato" - -#: src/slic3r/GUI/BedShapeDialog.cpp:79 -msgid "Load shape from STL..." -msgstr "Carica forma da STL..." - -#: src/slic3r/GUI/BedShapeDialog.cpp:125 -msgid "Settings" -msgstr "Impostazioni" - -#: src/slic3r/GUI/BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" -"Scegli un file per importare la forma del piano da (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " -msgstr "Errore! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "Il file selezionato non contiene geometrie." - -#: src/slic3r/GUI/BedShapeDialog.cpp:328 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Il file selezionato contiene molteplici aree disgiunte. Non è supportato." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape" -msgstr "Forma Letto" - -#: src/slic3r/GUI/BonjourDialog.cpp:54 -msgid "Network lookup" -msgstr "Network lookup" - -#: src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Address" -msgstr "Indirizzo" - -#: src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Hostname" -msgstr "Hostname" - -#: src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "Service name" -msgstr "Nome servizio" - -#: src/slic3r/GUI/BonjourDialog.cpp:70 -msgid "OctoPrint version" -msgstr "Versione di OctoPrint" - -#: src/slic3r/GUI/BonjourDialog.cpp:188 -msgid "Searching for devices" -msgstr "Ricerca dispositivi" - -#: src/slic3r/GUI/BonjourDialog.cpp:195 -msgid "Finished" -msgstr "Finito" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "Descrizione colori testo e pulsanti" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "Valore uguale a quello di sistema" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" -msgstr "" -"Il valore è stato modificato e non è uguale al valore di sistema o " -"all'ultimo preset salvato" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 -msgid "Upgrade" -msgstr "Aggiorna" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 -msgid "Downgrade" -msgstr "Downgrade" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 -msgid "Before roll back" -msgstr "Prima di tornare indietro" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 -msgid "User" -msgstr "Utente" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 -msgid "Unknown" -msgstr "Ignoto" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "Attivo: " - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "versione di slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" -msgstr "stampa" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "filaments" -msgstr "filamenti" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 -msgid "printer" -msgstr "stampante" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 -msgid "vendor" -msgstr "venditore" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "version" -msgstr "versione" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "min slic3r version" -msgstr "versione min slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "max slic3r version" -msgstr "versione slic3r massima" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "model" -msgstr "modello" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "variants" -msgstr "varianti" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" -msgstr "Incompatibile con questo Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 -msgid "Activate" -msgstr "Attiva" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 -msgid "Configuration Snapshots" -msgstr "Istantanee di Configurazione" - -#: src/slic3r/GUI/ConfigWizard.cpp:92 -msgid "nozzle" -msgstr "ugello" - -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "predefinito" - -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Seleziona tutto" - -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "Deseleziona tutti" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Benvenuto su Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -msgid "Welcome" -msgstr "Benvenuti" - -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 -#, c-format -msgid "Run %s" -msgstr "Run %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:234 -#, c-format -msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -msgstr "" -"Ciao, benvenuto su Slic3r Prusa Edition! Questo %s ti aiuterà con la " -"configurazione iniziale; giusto un paio di impostazioni e sarai pronto a " -"stampare." - -#: src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" -msgstr "" -"Rimuovi profili utente - reinstalla da zero (sarà prima fatto uno snapshot)" - -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "Altri fornitori" - -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "Setup personalizzato" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Automatic updates" -msgstr "Aggiornamenti automatici" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Updates" -msgstr "Aggiornamenti" - -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Verifica la presenza di aggiornamenti" - -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 -msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -msgstr "" -"Se attivato, Slic3r verifica la presenza di una nuova versione di Slic3r PE " -"online. Quando una nuova versione diviene disponibile, viene mostrata una " -"notifica al successivo avvio dell'applicazione (mai durante l'uso del " -"programma). Questo è solo un meccanismo di notifica, non viene effettuato " -"nessun aggiornamento automatico." - -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Aggiorna automaticamente i Preset integrati" - -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 -msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." -msgstr "" -"Se abilitato, Slic3r scarica gli aggiornamenti dei preset inclusi in " -"background. Questi aggiornamenti sono scaricati in una posizione temporanea. " -"Quando una nuova versione dei preset diventa disponibile, viene offerta " -"all'avvio." - -#: src/slic3r/GUI/ConfigWizard.cpp:308 -msgid "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." -msgstr "" -"Gli aggiornamenti non vengono mai applicati senza il consenso dell'utente e " -"non sovrascrivono mai i settaggi personalizzati dell'utente." - -#: src/slic3r/GUI/ConfigWizard.cpp:313 -msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." -msgstr "" -"Inoltre una copia di backup dei preset viene creata prima di applicare un " -"aggiornamento." - -#: src/slic3r/GUI/ConfigWizard.cpp:320 -msgid "Other Vendors" -msgstr "Altri Fornitori" - -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Scegli un altro fornitore supportato da Slic3r PE:" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 -msgid "Firmware Type" -msgstr "Tipo Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 -msgid "Firmware" -msgstr "Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:385 -msgid "Choose the type of firmware used by your printer." -msgstr "Scegliete il firmware usato dalla vostra stampante." - -#: src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape and Size" -msgstr "Forma e dimensioni del piano" - -#: src/slic3r/GUI/ConfigWizard.cpp:422 -msgid "Set the shape of your printer's bed." -msgstr "Imposta la dimensione del piano della stampante." - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Filament and Nozzle Diameters" -msgstr "Diametro filamento e ugello" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Print Diameters" -msgstr "Diametro di stampa" - -#: src/slic3r/GUI/ConfigWizard.cpp:452 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Inserisci il diametro dell'ugello dell'estrusore della stampante." - -#: src/slic3r/GUI/ConfigWizard.cpp:455 -msgid "Nozzle Diameter:" -msgstr "Diametro ugello:" - -#: src/slic3r/GUI/ConfigWizard.cpp:465 -msgid "Enter the diameter of your filament." -msgstr "Inserite il diametro del vostro filamento." - -#: src/slic3r/GUI/ConfigWizard.cpp:466 -msgid "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." -msgstr "" -"E' necessaria una buona precisione, quindi utilizza un calibro ed effettua " -"diverse misurazioni lungo il filamento, quindi calcola la media." - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Filament Diameter:" -msgstr "Diametro del filamento:" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Extruder and Bed Temperatures" -msgstr "Temperature dell'estrusore e del piano" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Temperatures" -msgstr "Temperature" - -#: src/slic3r/GUI/ConfigWizard.cpp:503 -msgid "Enter the temperature needed for extruding your filament." -msgstr "Inserisci la temperatura necessaria per estrudere il filamento." - -#: src/slic3r/GUI/ConfigWizard.cpp:504 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "" -"Una regola generale è da 160 a 230°C per il PLA, e da 215 a 250°C per l'ABS." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Extrusion Temperature:" -msgstr "Temperatura di estrusione:" - -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 -msgid "°C" -msgstr "°C" - -#: src/slic3r/GUI/ConfigWizard.cpp:517 -msgid "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." -msgstr "" -"Inserisci la temperatura del piano necessaria per far attaccare il filamento " -"al piano riscaldato." - -#: src/slic3r/GUI/ConfigWizard.cpp:518 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"Una regola generale è 60°C per il PLA e 110°C per l'ABS. Lascia a zero se " -"non hai un piano riscaldato." - -#: src/slic3r/GUI/ConfigWizard.cpp:521 -msgid "Bed Temperature:" -msgstr "Temperatura letto:" - -#: src/slic3r/GUI/ConfigWizard.cpp:833 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:834 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:835 -msgid "&Finish" -msgstr "&Completa" - -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" -msgstr "Wizard di configurazione" - -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" -msgstr "&Wizard di configurazione" - -#: src/slic3r/GUI/ConfigWizard.cpp:909 -msgid "Configuration Assistant" -msgstr "Assistente configurazione" - -#: src/slic3r/GUI/ConfigWizard.cpp:910 -msgid "Configuration &Assistant" -msgstr "&Assistente configurazione" - -#: src/slic3r/GUI/Field.cpp:109 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:140 -#, c-format -msgid "%s doesn't support percentage" -msgstr "%s non supporta la percentuale" - -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:153 -msgid "Input value is out of range" -msgstr "Valore input fuori portata" - -#: src/slic3r/GUI/Field.cpp:176 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:179 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:133 -msgid "Flash!" -msgstr "Flash!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "Cancella" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Flash in corso. Non disconnettere la stampante!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:245 -msgid "Flashing succeeded!" -msgstr "Flash completato con successo!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:246 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "" -"Flash fallito. Ti preghiamo di consultare il registro avrdude qui sotto." - -#: src/slic3r/GUI/FirmwareDialog.cpp:247 -msgid "Flashing cancelled." -msgstr "Flash cancellato." - -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 -msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:581 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:690 -msgid "Firmware flasher" -msgstr "Flasher Firmware" - -#: src/slic3r/GUI/FirmwareDialog.cpp:712 -msgid "Firmware image:" -msgstr "Immagine firmware:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:716 -msgid "Serial port:" -msgstr "Porta seriale:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:718 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:719 -msgid "Rescan" -msgstr "Ri-scansiona" - -#: src/slic3r/GUI/FirmwareDialog.cpp:726 -msgid "Progress:" -msgstr "Progresso:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:729 -msgid "Status:" -msgstr "Stato:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:730 -msgid "Ready" -msgstr "Pronto" - -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "Avanzato: registro output avrdude" - -#: src/slic3r/GUI/FirmwareDialog.cpp:809 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"Sei sicuro di voler cancellare il flash del firmware?\n" -"Questo potrebbe lasciare la tua stampante in una condizione inutilizzabile!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:810 -msgid "Confirmation" -msgstr "Conferma" - -#: src/slic3r/GUI/FirmwareDialog.cpp:813 -msgid "Cancelling..." -msgstr "Cancellazione..." - -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "Ruota" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "Scala" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 -msgid "Rotate lower part upwards" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 -msgid "Perform cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2276 -msgid "Cut object:" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 -msgid "Cut" -msgstr "Taglia" - -#: src/slic3r/GUI/GLGizmo.cpp:2466 -msgid "Keep upper part" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2467 -msgid "Keep lower part" -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "Avvertenza" - -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "Tentativo di liberare lo scalare senza riferimenti" - -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 -msgid "Warning" -msgstr "Attenzione" - -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Scegli uno o più file (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." -msgstr "" -"Gli array dei nomi di lingua e gli identificatori dovrebbero avere la stessa " -"dimensione." - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" -msgstr "Seleziona la lingua" - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" -msgstr "Lingua" - -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" -msgstr "Predefinito" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" -msgstr "Istantanee di &Configurazione" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" -msgstr "Ispeziona / attiva istantanee di configurazione" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" -msgstr "Cattura i&stantanea di configurazione" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" -msgstr "Cattura un'istantanea della configurazione" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" -msgstr "&Preferenze" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Preferenze applicazione" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" -msgstr "Avanzate" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "Cambia &Lingua Applicazione" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "Installa &firmware stampante" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Carica un'immagine del firmware su una stampante basata su Arduino" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "Cattura istantanea della configurazione" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "Nome istantanea" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "L'applicazione verrà riavviata" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "Attenzione!" - -#: src/slic3r/GUI/GUI_App.cpp:691 -msgid "&Configuration" -msgstr "&Configurazione" - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " -msgstr "Sono presenti modifiche non salvate " - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" -msgstr ". Scartare le modifiche e continuare comunque?" - -#: src/slic3r/GUI/GUI_App.cpp:712 -msgid "Unsaved Presets" -msgstr "Preset non salvati" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Layers and Perimeters" -msgstr "Layer e Perimetri" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 -msgid "Infill" -msgstr "Riempimento" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "Materiale supporto" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "Velocità" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 -msgid "Extruders" -msgstr "Estrusori" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 -msgid "Extrusion Width" -msgstr "Larghezza Estrusione" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 -msgid "Name" -msgstr "Nome" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 -msgid "Extruder" -msgstr "Estrusore" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "" -"L'oggetto selezionato non può essere diviso perché contiene solo una parte." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 -msgid "The supplied name is not valid;" -msgstr "Il nome fornito non è valido;" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 -msgid "the following characters are not allowed:" -msgstr "i seguenti caratteri non sono permessi:" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 -msgid "View" -msgstr "Vista" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Tipo di caratteristica" - -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 -msgid "Height" -msgstr "Altezza" - -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 -msgid "Width" -msgstr "Larghezza" - -#: src/slic3r/GUI/GUI_Preview.cpp:242 -msgid "Volumetric flow rate" -msgstr "Portata volumetrica" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "Strumento" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:247 -msgid "Show" -msgstr "Mostra" - -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 -msgid "Feature types" -msgstr "Tipi di caratteristica" - -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Perimetro" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "Perimetro esterno" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "Perimetro sporgente" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "Riempimento interno" - -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Riempimento solido" - -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Riempimento solido superiore" - -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "Riempimento Bridge" - -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "Riempimento spazi" - -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "Skirt" - -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Interfaccia materiale supporto" - -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "Torre di spurgo" - -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 -msgid "Travel" -msgstr "Spostamento" - -#: src/slic3r/GUI/GUI_Preview.cpp:270 -msgid "Retractions" -msgstr "Retrazioni" - -#: src/slic3r/GUI/GUI_Preview.cpp:271 -msgid "Unretractions" -msgstr "Non retrazioni" - -#: src/slic3r/GUI/GUI_Preview.cpp:272 -msgid "Shells" -msgstr "Gusci" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" -msgstr "Esporta G-code" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" -msgstr "Ripeti l'ultimo slice veloce" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" -msgstr "Seleziona Scheda Piano" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "Seleziona Scheda impostazioni di Stampa" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" -msgstr "Seleziona Scheda Impostazioni Filamento" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "Seleziona Scheda Impostazioni Stampante" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Preferenze" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" -msgstr "Ordina" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" -msgstr "Cancella tutto" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr "" -" - Ricorda di controllare gli aggiornamenti su http://github.com/prusa3d/" -"slic3r/releases" - -#: src/slic3r/GUI/MainFrame.cpp:130 -msgid "Plater" -msgstr "Piano" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "&Apri" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Load exported configuration file" -msgstr "Carica un file di configurazione esportato" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Load presets from a bundle" -msgstr "Carica i preset da un gruppo" - -#: src/slic3r/GUI/MainFrame.cpp:256 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export &G-code" -msgstr "Esporta &G-code" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export current plate as G-code" -msgstr "Esporta il piano corrente come G-code" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export plate as &STL" -msgstr "Esporta piano come &STL" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export current plate as STL" -msgstr "Esporta il piano corrente come STL" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export plate as &AMF" -msgstr "Esporta piano come &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export current plate as AMF" -msgstr "Esporta il piano corrente come AMF" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export &Config" -msgstr "Esporta &Configurazione" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export current configuration to file" -msgstr "Esporta la configurazione corrente su file" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export Config &Bundle" -msgstr "Esporta G&ruppo di Configurazioni" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export all presets to file" -msgstr "Esporta tutti i preset su file" - -#: src/slic3r/GUI/MainFrame.cpp:271 -msgid "&Export" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Slice a file into a G-code" -msgstr "Processa un file in G-code" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Quick Slice and Save As" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Slice a file into a G-code, save as" -msgstr "Processa un file in G-code, salva come" - -#: src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat Last Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "(Re)Slice &Now" -msgstr "(Re)Slice &Ora" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "Start new slicing process" -msgstr "Inizia un nuovo processo di slicing" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "&Repair STL file" -msgstr "&Ripara file STL" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "Automatically repair an STL file" -msgstr "Ripara automaticamente un file STL" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "&Quit" -msgstr "&Chiudi" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" -msgstr "Chiudi Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "&Select all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Delete &all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "&Plater Tab" -msgstr "Scheda &Piano" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "Show the plater" -msgstr "Mostra il piano" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "P&rint Settings Tab" -msgstr "Scheda impostazioni di &Stampa" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "Show the print settings" -msgstr "Mostra impostazioni di stampa" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "&Filament Settings Tab" -msgstr "Scheda Impostazioni &Filamento" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "Show the filament settings" -msgstr "Mostra impostazioni filamento" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Print&er Settings Tab" -msgstr "Scheda Impostazioni Stampant&e" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Show the printer settings" -msgstr "Mostra impostazioni della stampante" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "&Iso" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "Vista isometrica" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "S&uperiore" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "Vista superiore" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "I&nferiore" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "Vista inferiore" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "&Frontale" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "Vista anteriore" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "&Posteriore" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "Vista posteriore" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "&Sinistra" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "Vista sinistra" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "&Destra" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "Vista destra" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "&Driver Prusa 3D" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Apri la pagina di download dei driver Prusa3D sul tuo browser" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "&Versioni Prusa Edition" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Apri la pagina delle versioni Prusa Edition sul tuo browser" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "Sito &web Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "Apri la pagina di Slic3r sul tuo browser" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "&Manuale Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "Apri il manuale di Slic3r sul tuo browser" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "&Informazioni di sistema" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "Mostra informazioni di sistema" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "Cartella Mostra &Configurazione" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "Mostra cartella configurazione utente (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "Segnala un &problema" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Segnala un problema su Slic3r Prusa Edition" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "&Su Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "Mostra la finestra di dialogo al riguardo di" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "&File" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" -msgstr "F&inestra" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" -msgstr "&Vista" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" -msgstr "&Aiuto" - -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Scegli un file da processare (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." -msgstr "File non processato precedentemente." - -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" -msgstr "Errore" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "File precedentemente processato (" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." -msgstr ") non trovato." - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "File Not Found" -msgstr "File non trovato" - -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " -msgstr "Salva " - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "SVG" -msgstr "SVG" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "G-code" -msgstr "G-code" - -# Context: L('Save ') . ($params{export_svg} ? L('SVG') : L('G-code')) . L(' file as:'), e.g. "Save G-Code file as:" -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr " file come:" - -#: src/slic3r/GUI/MainFrame.cpp:548 -msgid "Save zip file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Slicing" -msgstr "Slicing" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid " was successfully sliced." -msgstr " generato con successo." - -#: src/slic3r/GUI/MainFrame.cpp:585 -msgid "Slicing Done!" -msgstr "Slicing Completato!" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Select the STL file to repair:" -msgstr "Seleziona il file STL da riparare:" - -#: src/slic3r/GUI/MainFrame.cpp:614 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "" -"Salva il file OBJ (meno soggetto a errori di coordinate dell'STL) come:" - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Your file was repaired." -msgstr "Il file è stato riparato." - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Repair" -msgstr "Ripara" - -#: src/slic3r/GUI/MainFrame.cpp:643 -msgid "Save configuration as:" -msgstr "Salva configurazione come:" - -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 -msgid "Select configuration to load:" -msgstr "Seleziona configurazione da caricare:" - -#: src/slic3r/GUI/MainFrame.cpp:700 -msgid "Save presets bundle as:" -msgstr "Salva il gruppo di preset come:" - -#: src/slic3r/GUI/MainFrame.cpp:751 -#, c-format -msgid "%d presets successfully imported." -msgstr "%d preset importati correttamente." - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" -msgstr "Errore Slic3r" - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" -msgstr "Slic3r ha riscontrato un errore" - -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/Plater.cpp:126 -msgid "Volume" -msgstr "Volume" - -#: src/slic3r/GUI/Plater.cpp:127 -msgid "Facets" -msgstr "Facce" - -#: src/slic3r/GUI/Plater.cpp:128 -msgid "Materials" -msgstr "Materiali" - -#: src/slic3r/GUI/Plater.cpp:131 -msgid "Manifold" -msgstr "Manifold" - -#: src/slic3r/GUI/Plater.cpp:174 -msgid "Sliced Info" -msgstr "Informazioni processo" - -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 -msgid "Used Filament (m)" -msgstr "Filamento usato (m)" - -#: src/slic3r/GUI/Plater.cpp:194 -msgid "Used Filament (mm³)" -msgstr "Filamento usato (mm³)" - -#: src/slic3r/GUI/Plater.cpp:195 -msgid "Used Filament (g)" -msgstr "Filamento usato (g)" - -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 -msgid "Cost" -msgstr "Costo" - -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 -msgid "Estimated printing time" -msgstr "Tempo di stampa stimato" - -#: src/slic3r/GUI/Plater.cpp:198 -msgid "Number of tool changes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "Supporto" - -#: src/slic3r/GUI/Plater.cpp:364 -msgid "Select what kind of support do you need" -msgstr "Seleziona il tipo di supporto richiesto" - -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Nessuno" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 -msgid "Support on build plate only" -msgstr "Supporti solo dal piano di stampa" - -#: src/slic3r/GUI/Plater.cpp:367 -msgid "Everywhere" -msgstr "Ovunque" - -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 -msgid "Brim" -msgstr "Brim" - -#: src/slic3r/GUI/Plater.cpp:381 -msgid "" -"This flag enables the brim that will be printed around each object on the " -"first layer." -msgstr "" -"La spunta su questa opzione abilita il brim che verrà stampato attorno ad " -"ogni oggetto nel primo layer." - -#: src/slic3r/GUI/Plater.cpp:390 -msgid "Purging volumes" -msgstr "Volumi di spurgo" - -#: src/slic3r/GUI/Plater.cpp:556 -msgid "Print settings" -msgstr "Impostazioni di stampa" - -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 -msgid "Filament" -msgstr "Filamento" - -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:560 -msgid "Printer" -msgstr "Stampante" - -#: src/slic3r/GUI/Plater.cpp:588 -msgid "Send to printer" -msgstr "Manda alla stampante" - -#: src/slic3r/GUI/Plater.cpp:607 -msgid "Slice now" -msgstr "Processa ora" - -#: src/slic3r/GUI/Plater.cpp:787 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d di perimetri)" - -#: src/slic3r/GUI/Plater.cpp:792 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Auto-riparati (%d errori)" - -#: src/slic3r/GUI/Plater.cpp:795 -#, c-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" -"%d facce degenerate, %d spigoli riparati, %d facce rimosse, %d faccee " -"aggiunte, %d facce invertite, %d spigoli inversi" - -#: src/slic3r/GUI/Plater.cpp:805 -msgid "Yes" -msgstr "Si" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:855 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1304 -msgid "Loading" -msgstr "Caricando" - -#: src/slic3r/GUI/Plater.cpp:1314 -#, c-format -msgid "Processing input file %s\n" -msgstr "Elaborando il file di input %s\n" - -#: src/slic3r/GUI/Plater.cpp:1366 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Questo file contiene numerosi oggetti posizionati ad altezze multiple. " -"Invece di considerarli come oggetti multipli, devo considerare \n" -"questo file come un oggetto singolo con parti multiple?\n" - -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 -msgid "Multi-part object detected" -msgstr "Rilevato oggetto in parti multiple" - -#: src/slic3r/GUI/Plater.cpp:1388 -#, c-format -msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1408 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Sono stati caricati oggetti multipli per stampante multi-material.\n" -"Invece di considerarli come oggetti multipli, devo considerarli come parte " -"di un singolo oggetto avente parti multiple?\n" - -#: src/slic3r/GUI/Plater.cpp:1424 -msgid "Loaded" -msgstr "Caricato" - -#: src/slic3r/GUI/Plater.cpp:1492 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" -"L'oggetto sembra essere troppo grande, è stato quindi scalato " -"automaticamente per entrare nel piano di stampa." - -#: src/slic3r/GUI/Plater.cpp:1493 -msgid "Object too large?" -msgstr "Oggetto troppo grande?" - -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "Esporta configurazione di stampa" - -#: src/slic3r/GUI/Plater.cpp:1538 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1702 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1705 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1736 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1740 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1782 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1787 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1797 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1818 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" -"L'oggetto selezionato non può essere diviso perché contiene più di un volume/" -"materiale." - -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "Un altro processo di esportazione è in corso." - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "Esportazione fallita" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "Cancella" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "Rimuovi l'oggetto selezionato" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Increase copies" -msgstr "Aumenta copie" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Place one more copy of the selected object" -msgstr "Posiziona una o più copie dell'oggetto selezionato" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Decrease copies" -msgstr "Diminuisci le copie" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Remove one copy of the selected object" -msgstr "Rimuovi una copia dell'oggetto selezionato" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Set number of copies" -msgstr "Imposta numero delle copie" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Change the number of copies of the selected object" -msgstr "Cambia il numero di copie dell'oggetto selezionato" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload from Disk" -msgstr "Ricarica da Disco" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload the selected file from Disk" -msgstr "Ricarica il file selezionato dal Disco" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "Esporta questo singolo oggetto come file STL" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Along X axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Mirror the selected object along the X axis" -msgstr "Specchia l'oggetto selezionato sull'asse X" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Along Y axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Mirror the selected object along the Y axis" -msgstr "Specchia l'oggetto selezionato sull'asse y" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Along Z axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Mirror the selected object along the Z axis" -msgstr "Specchia l'oggetto selezionato sull'asse Z" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror" -msgstr "Specchia" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror the selected object" -msgstr "Specchia l'oggetto selezionato" - -#: src/slic3r/GUI/Plater.cpp:2400 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 -msgid "Split the selected object into individual objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 -msgid "Split the selected object into individual sub-parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 -msgid "Split" -msgstr "Dividi" - -#: src/slic3r/GUI/Plater.cpp:2405 -msgid "Split the selected object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save G-code file as:" -msgstr "Salva il file G-code come:" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2845 -#, c-format -msgid "STL file exported to %s" -msgstr "File STL esportato a %s" - -#: src/slic3r/GUI/Plater.cpp:2861 -#, c-format -msgid "AMF file exported to %s" -msgstr "File AMF esportato a %s" - -#: src/slic3r/GUI/Plater.cpp:2864 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "Errore nell'esportazione del file AMF %s" - -#: src/slic3r/GUI/Plater.cpp:2891 -#, c-format -msgid "3MF file exported to %s" -msgstr "File 3MF esportato a %s" - -#: src/slic3r/GUI/Plater.cpp:2894 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "Errore nell'esportazione del file 3MF %s" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 -msgid "General" -msgstr "Generale" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "Ricorda la directory di output" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" -"Se attivo, Slic3r suggerirà l'ultima cartella di destinazione invece della " -"cartella contenente il file di ricezione." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Auto-centra le parti" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" -"Se attivo, Slic3r posizionerà automaticamente gli oggetti al centro del " -"piano di stampa." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Lavorazione in background" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" -"Se attivo, Slic3r processerà in anticipo gli oggetti non appena saranno " -"caricati, così da risparmiare tempo durante l'esportazione del G-code." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "Sopprimi preset \" - default - \"" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" -"Sopprimi i preset \" - default - \" nelle selezioni Stampa / Filamento / " -"Stampante non appena sono disponibili altri preset validi." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Mostra preset di stampa e di filamento incompatibili" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" -"Quando attivato, i preset di stampa e di filamento vengono mostrati " -"nell'editor dei preset anche se sono segnati come incompatibili con la " -"stampante attiva" - -#: src/slic3r/GUI/Preferences.cpp:90 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Utilizza il rendering legacy di OpenGL 1.1" - -#: src/slic3r/GUI/Preferences.cpp:92 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" -"Se hai problemi nel rendering causati da bug nel driver OpenGL 2.0, puoi " -"provare ad attivare questa opzione. Si disattiverà la modifica altezza layer " -"e l'anti-aliasing, quindi è meglio aggiornare i driver grafici." - -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "E' necessario riavviare Slic3r per rendere effettive le modifiche." - -#: src/slic3r/GUI/Preset.cpp:170 -msgid "modified" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 -msgid "System presets" -msgstr "Preset di sistema" - -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 -msgid "User presets" -msgstr "Preset utente" - -#: src/slic3r/GUI/Preset.cpp:1157 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" -"Se il tempo previsto per il layer è inferiore a ~%ds, la ventola girerà al %d" -"%% e la velocità di stampa sarà ridotta così da impiegare non meno di %ds su " -"quel layer (in ogni caso, la velocità non sarà mai ridotta sotto %dmm/s)." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Se il tempo di stampa previsto per il layer è più lungo, ma comunque " -"inferiore a ~%ds, la ventola girerà ad una velocità proporzionalmente " -"decrescente compresa tra %d%% e %d%%." - -#: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"Durante gli altri layer, la ventola " - -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "Ventola " - -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "lavorerà sempre a %d%% " - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "ad eccezione dei primi %d layers" - -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "ad eccezione del primo layer" - -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "verrà spento." - -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "perimetri esterni" - -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "perimetri" - -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "riempimento" - -#: src/slic3r/GUI/PresetHints.cpp:181 -msgid "solid infill" -msgstr "riempimento solido" - -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "riempimento solido superiore" - -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "supporto" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "interfaccia supporto" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Volumetrica primo strato" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Ponteggio volumetrico" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "Volumetrico" - -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr " Il flusso viene massimizzato " - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "secondo il massimo del profilo di stampa" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "durante la stampa " - -#: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " -msgstr " con una portata volumetrica " - -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/s" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " alla velocità del filamento di %3.2f mm/s." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" -"Spessore raccomandato per oggetto con parete sottile: Non disponibile a " -"causa di un'altezza layer non valida." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "" -"Spessore raccomandato per oggetto con parete sottile per altezza layer %.2f " -"e " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d linee: %.2lf mm" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "NESSUN RAMMING" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "Tempo" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 -msgid "s" -msgstr "s" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "Velocità volumetrica" - -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 -msgid "Compatible printers" -msgstr "Stampanti compatibili" - -#: src/slic3r/GUI/Tab.cpp:50 -msgid "Select the printers this profile is compatible with." -msgstr "Seleziona le stampanti compatibili con questo profilo." - -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:56 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " -msgstr "Salva attuale " - -#: src/slic3r/GUI/Tab.cpp:119 -msgid "Delete this preset" -msgstr "Cancella questo preset" - -#: src/slic3r/GUI/Tab.cpp:131 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Scorri il cursore sui bottoni per ottenere maggiori informazioni o clicca su " -"questo bottone." - -#: src/slic3r/GUI/Tab.cpp:824 -msgid "It's a default preset." -msgstr "E' un preset preimpostato." - -#: src/slic3r/GUI/Tab.cpp:825 -msgid "It's a system preset." -msgstr "E' un preset di sistema." - -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " -msgstr "Il preset corrente è ereditato da " - -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " -msgstr "Non può essere eliminato o modificato. " - -#: src/slic3r/GUI/Tab.cpp:832 -msgid "" -"Any modifications should be saved as a new preset inherited from this one. " -msgstr "" -"Qualunque modifica dovrebbe essere salvata come un nuovo preset ereditato da " -"questo. " - -#: src/slic3r/GUI/Tab.cpp:833 -msgid "To do that please specify a new name for the preset." -msgstr "" -"Per favore specifica un nuovo nome per il preset per effettuare l'operazione." - -#: src/slic3r/GUI/Tab.cpp:837 -msgid "Additional information:" -msgstr "Informazioni aggiuntive:" - -#: src/slic3r/GUI/Tab.cpp:843 -msgid "printer model" -msgstr "modello stampante" - -#: src/slic3r/GUI/Tab.cpp:851 -msgid "default print profile" -msgstr "profilo di stampa predefinito" - -#: src/slic3r/GUI/Tab.cpp:854 -msgid "default filament profile" -msgstr "profilo filamento predefinito" - -#: src/slic3r/GUI/Tab.cpp:868 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:872 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 -msgid "Layers and perimeters" -msgstr "Layer e perimetri" - -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 -msgid "Layer height" -msgstr "Altezza layer" - -#: src/slic3r/GUI/Tab.cpp:924 -msgid "Vertical shells" -msgstr "Gusci verticali" - -#: src/slic3r/GUI/Tab.cpp:935 -msgid "Horizontal shells" -msgstr "Gusci orizzontali" - -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 -msgid "Solid layers" -msgstr "Layer solidi" - -#: src/slic3r/GUI/Tab.cpp:941 -msgid "Quality (slower slicing)" -msgstr "Qualità (slicing più lento)" - -#: src/slic3r/GUI/Tab.cpp:958 -msgid "Reducing printing time" -msgstr "Ridurre tempo di stampa" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Skirt and brim" -msgstr "Skirt e brim" - -#: src/slic3r/GUI/Tab.cpp:987 -msgid "Raft" -msgstr "Raft" - -#: src/slic3r/GUI/Tab.cpp:991 -msgid "Options for support material and raft" -msgstr "Opzioni per materiale di supporto e raft" - -#: src/slic3r/GUI/Tab.cpp:1006 -msgid "Speed for print moves" -msgstr "Velocità per i movimenti di stampa" - -#: src/slic3r/GUI/Tab.cpp:1018 -msgid "Speed for non-print moves" -msgstr "Velocità per i movimenti non di stampa" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Modifiers" -msgstr "Modificatori" - -#: src/slic3r/GUI/Tab.cpp:1024 -msgid "Acceleration control (advanced)" -msgstr "Controllo Accelerazione (avanzato)" - -#: src/slic3r/GUI/Tab.cpp:1031 -msgid "Autospeed (advanced)" -msgstr "Autovelocità (avanzato)" - -#: src/slic3r/GUI/Tab.cpp:1037 -msgid "Multiple Extruders" -msgstr "Estrusori multipli" - -#: src/slic3r/GUI/Tab.cpp:1045 -msgid "Ooze prevention" -msgstr "Prevenzione delle fuoriuscite" - -#: src/slic3r/GUI/Tab.cpp:1062 -msgid "Extrusion width" -msgstr "Larghezza estrusione" - -#: src/slic3r/GUI/Tab.cpp:1072 -msgid "Overlap" -msgstr "Sovrapposizione" - -#: src/slic3r/GUI/Tab.cpp:1075 -msgid "Flow" -msgstr "Flusso" - -#: src/slic3r/GUI/Tab.cpp:1078 -msgid "Other" -msgstr "Altro" - -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 -msgid "Output options" -msgstr "Opzioni Output" - -#: src/slic3r/GUI/Tab.cpp:1086 -msgid "Sequential printing" -msgstr "Stampa sequenziale" - -#: src/slic3r/GUI/Tab.cpp:1088 -msgid "Extruder clearance (mm)" -msgstr "Spazio libero per l'estrusore (mm)" - -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 -msgid "Output file" -msgstr "File di Output" - -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 -msgid "Post-processing scripts" -msgstr "Script di post produzione" - -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 -msgid "Notes" -msgstr "Note" - -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 -msgid "Dependencies" -msgstr "Dipendenze" - -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 -msgid "Profile dependencies" -msgstr "Dipendenze profilo" - -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"La modalità Vaso a Spirale richiede:\n" -"- un perimetro\n" -"- assenza di layer solidi superiori\n" -"- densità riempimento 0%\n" -"- assenza di materiale di supporto\n" -"- assicura_spessore_ guscio_ verticale disattivato\n" -"\n" -"Posso regolare queste impostazioni così da attivare il Vaso a Spirale?" - -#: src/slic3r/GUI/Tab.cpp:1168 -msgid "Spiral Vase" -msgstr "Vaso a Spirale" - -#: src/slic3r/GUI/Tab.cpp:1191 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"La Torre di Spurgo attualmente supporta solamente supporti non solubili\n" -"se questi sono stampati con l'attuale estrusore senza attivare un cambio " -"d'attrezzo.\n" -"(entrambi support_material_extruder e support_material_interface_extruder " -"devono essere impostati a 0).\n" -"\n" -"Devo regolare queste impostazioni per abilitare la Torre di Spurgo?" - -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 -msgid "Wipe Tower" -msgstr "Torre di Spurgo" - -#: src/slic3r/GUI/Tab.cpp:1209 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"Perché la Wipe Tower possa funzionare con i supporti solubili, gli strati " -"dei supporti devono essere sincronizzati con quelli del modello.\n" -"\n" -"Sincronizzare i supporti per abilitare la Wipe Tower?" - -#: src/slic3r/GUI/Tab.cpp:1227 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"I supporti hanno più successo se l'opzione seguente è attivata:\n" -"-Rileva i perimetri in bridging\n" -"\n" -"Adattare questa opzione ai supporti?" - -#: src/slic3r/GUI/Tab.cpp:1230 -msgid "Support Generator" -msgstr "Generatore Supporto" - -# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n") -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "Il " - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" il pattern di riempimento non dovrebbe funzionare con densità 100%.\n" -"\n" -"Posso cambiarlo in pattern di riempimento rettilineo?" - -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " -msgstr "Temperatura " - -#: src/slic3r/GUI/Tab.cpp:1394 -msgid "Bed" -msgstr "Letto" - -#: src/slic3r/GUI/Tab.cpp:1399 -msgid "Cooling" -msgstr "Raffreddamento" - -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Enable" -msgstr "Abilita" - -#: src/slic3r/GUI/Tab.cpp:1411 -msgid "Fan settings" -msgstr "Impostazioni ventola" - -#: src/slic3r/GUI/Tab.cpp:1412 -msgid "Fan speed" -msgstr "Velocità ventola" - -#: src/slic3r/GUI/Tab.cpp:1420 -msgid "Cooling thresholds" -msgstr "Soglia di raffreddamento" - -#: src/slic3r/GUI/Tab.cpp:1426 -msgid "Filament properties" -msgstr "Proprietà filamento" - -#: src/slic3r/GUI/Tab.cpp:1430 -msgid "Print speed override" -msgstr "Scavalca velocità di stampa" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Parametri di cambio strumento per stampanti MM con estrusore singolo" - -#: src/slic3r/GUI/Tab.cpp:1455 -msgid "Ramming settings" -msgstr "Impostazioni del ramming" - -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 -msgid "Custom G-code" -msgstr "G-code personalizzato" - -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 -msgid "Start G-code" -msgstr "Inizia G-code" - -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 -msgid "End G-code" -msgstr "Fine G-code" - -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr " Naviga " - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 -msgid "Test" -msgstr "Test" - -#: src/slic3r/GUI/Tab.cpp:1615 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 -msgid "Success!" -msgstr "Successo!" - -#: src/slic3r/GUI/Tab.cpp:1636 -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"File HTTPS CA opzionale. E' necessario solo se si intende usare un HTTPS con " -"certificato autofirmato." - -#: src/slic3r/GUI/Tab.cpp:1648 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "File di certificato (*.crt, *.pem)|*.crt;*.pem|All files|*.*" - -#: src/slic3r/GUI/Tab.cpp:1649 -msgid "Open CA certificate file" -msgstr "Apri file di certificato CA" - -#: src/slic3r/GUI/Tab.cpp:1676 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 -msgid "Size and coordinates" -msgstr "Dimensione e coordinate" - -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " -msgstr " Imposta " - -#: src/slic3r/GUI/Tab.cpp:1740 -msgid "Capabilities" -msgstr "Capacità" - -#: src/slic3r/GUI/Tab.cpp:1745 -msgid "Number of extruders of the printer." -msgstr "Numero estrusori della stampante." - -#: src/slic3r/GUI/Tab.cpp:1773 -msgid "USB/Serial connection" -msgstr "Connessione USB/Seriale" - -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 -msgid "Serial port" -msgstr "Porta seriale" - -#: src/slic3r/GUI/Tab.cpp:1779 -msgid "Rescan serial ports" -msgstr "Scansiona nuovamente porte seriali" - -#: src/slic3r/GUI/Tab.cpp:1801 -msgid "Connection to printer works correctly." -msgstr "Connessione con la stampante funzionante." - -#: src/slic3r/GUI/Tab.cpp:1804 -msgid "Connection failed." -msgstr "Connessione fallita." - -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 -msgid "Before layer change G-code" -msgstr "Prima del G-code di cambio di strato" - -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 -msgid "After layer change G-code" -msgstr "Dopo il G-code di cambio di strato" - -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 -msgid "Tool change G-code" -msgstr "G-code cambio strumento" - -#: src/slic3r/GUI/Tab.cpp:1877 -msgid "Between objects G-code (for sequential printing)" -msgstr "G-code tra gli oggetti (per stampa sequenziale)" - -#: src/slic3r/GUI/Tab.cpp:1938 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2040 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2045 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2052 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2057 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 -msgid "Single extruder MM setup" -msgstr "Setup Estrusore singolo MM" - -#: src/slic3r/GUI/Tab.cpp:2104 -msgid "Single extruder multimaterial parameters" -msgstr "Parametri multimateriali estrusore singolo" - -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "Estrusore %d" - -#: src/slic3r/GUI/Tab.cpp:2125 -msgid "Layer height limits" -msgstr "Limiti altezza layer" - -#: src/slic3r/GUI/Tab.cpp:2130 -msgid "Position (for multi-extruder printers)" -msgstr "Posizione (per stampanti multi-estrusore)" - -#: src/slic3r/GUI/Tab.cpp:2133 -msgid "Retraction" -msgstr "Retrazione" - -#: src/slic3r/GUI/Tab.cpp:2136 -msgid "Only lift Z" -msgstr "Eleva solo Z" - -#: src/slic3r/GUI/Tab.cpp:2149 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" -"Retrai quando l'attrezzo è disabilitato (impostazioni avanzate per setup " -"multi-estrusore)" - -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "Anteprima" - -#: src/slic3r/GUI/Tab.cpp:2284 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"La funzione Wipe non è disponibile quando si usa la modalità Retrazione " -"Firmware.\n" -"\n" -"Devo disattivarla per poter abilitare la Retrazione Firmware?" - -#: src/slic3r/GUI/Tab.cpp:2286 -msgid "Firmware Retraction" -msgstr "Retrazione Firmware" - -#: src/slic3r/GUI/Tab.cpp:2565 -#, c-format -msgid "Default preset (%s)" -msgstr "Preset predefiniti (%s)" - -#: src/slic3r/GUI/Tab.cpp:2566 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2583 -msgid "has the following unsaved changes:" -msgstr "ha le seguenti modifiche non salvate:" - -#: src/slic3r/GUI/Tab.cpp:2586 -msgid "is not compatible with printer" -msgstr "non è compatibile con la stampante" - -#: src/slic3r/GUI/Tab.cpp:2587 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2589 -msgid "and it has the following unsaved changes:" -msgstr "e sono presenti le seguenti modifiche non salvate:" - -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "Eliminare le modifiche e continuare comunque?" - -#: src/slic3r/GUI/Tab.cpp:2593 -msgid "Unsaved Changes" -msgstr "Modifiche non salvate" - -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "The supplied name is empty. It can't be saved." -msgstr "Il nome fornito è vuoto. Non può essere salvato." - -#: src/slic3r/GUI/Tab.cpp:2704 -msgid "Cannot overwrite a system profile." -msgstr "Impossibile sovrascrivere un profilo di sistema." - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Cannot overwrite an external profile." -msgstr "Impossibile sovrascrivere un profilo esterno." - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "remove" -msgstr "rimuovi" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "delete" -msgstr "cancella" - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " -msgstr "Sei sicuro di voler " - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr " il preset selezionato?" - -#: src/slic3r/GUI/Tab.cpp:2736 -msgid "Remove" -msgstr "Rimuovi" - -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" -msgstr " Preset" - -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "Tutto" - -#: src/slic3r/GUI/Tab.cpp:2869 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" -msgstr "" -"LUCCHETTO CHIUSO; indica che le impostazioni sono le stesse dei valori di " -"sistema per il corrente gruppo di opzioni" - -#: src/slic3r/GUI/Tab.cpp:2872 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." -msgstr "" -"LUCCHETTO APERTO;indica che è stata modificata qualche impostazione e non è " -"uguale ai valori di sistema del corrente gruppo di opzioni.\n" -"Clicca l'icona LUCCHETTO CHIUSO per resettare tutte le impostazioni del " -"corrente gruppo di opzioni ai valori di sistema." - -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" -"WHITE BULLET;per il bottone sinistro: indica un preset non di sistema,\n" -"per il bottone destro: indica che le impostazioni non sono state modificate." - -#: src/slic3r/GUI/Tab.cpp:2882 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." -msgstr "" -"FRECCIA INDIETRO; indica che le impostazioni sono state modificate e non " -"sono uguali all'ultimo preset salvato per l'attuale gruppo opzioni.\n" -"Clicca l'icona FRECCIA INDIETRO per resettare all'ultimo preset salvato " -"tutte le impostazioni per il seguente gruppo di opzioni." - -#: src/slic3r/GUI/Tab.cpp:2908 -msgid "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" -msgstr "" -"Icona LUCCHETTO CHIUSO indica che le impostazioni sono uguali ai valori di " -"sistema per il seguente gruppo di opzioni" - -#: src/slic3r/GUI/Tab.cpp:2910 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"L'icona del LUCCHETTO APERTO indica che alcune impostazioni sono state " -"cambiate e non sono uguali ai valori di sistema per il gruppo di opzioni " -"corrente.\n" -"Cliccate per resettare tutte le impostazioni per il gruppo corrente ai " -"valori di sistema." - -#: src/slic3r/GUI/Tab.cpp:2913 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "L'icona a forma di PALLINO BIANCO indica un preset non di sistema." - -#: src/slic3r/GUI/Tab.cpp:2916 -msgid "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." -msgstr "" -"L'icona a forma di PALLINO BIANCO indica che le impostazioni sono uguali " -"agli ultimi preset salvati per il gruppo di opzioni corrente." - -#: src/slic3r/GUI/Tab.cpp:2918 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." -msgstr "" -"Icona FRECCIA INDIETRO indica che le impostazioni sono state cambiate e non " -"sono uguali all'ultimo preset salvato per il seguente gruppo di opzioni.\n" -"Clicca per resettare all'ultimo preset salvato tutte le impostazioni per il " -"seguente gruppo di opzioni." - -#: src/slic3r/GUI/Tab.cpp:2924 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"L'icona del LUCCHETTO CHIUSO indica che il valore è uguale al valore di " -"sistema." - -#: src/slic3r/GUI/Tab.cpp:2925 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"L'icona del LUCCHETTO APERTO indica che il valore è stato cambiato e non è " -"uguale al valore di sistema. \n" -"Cliccate per resettare il valore corrente al valore di sistema." - -#: src/slic3r/GUI/Tab.cpp:2931 -msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." -msgstr "" -"L'icona a forma di PALLINO BIANCO indica che il valore è lo stesso " -"dell'ultimo preset salvato." - -#: src/slic3r/GUI/Tab.cpp:2932 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"La FRECCIA ALL'INDIETRO indica che il valore è stato cambiato e non è uguale " -"all'ultimo preset salvato.\n" -"Cliccare per resettare il valore corrente all'ultimo preset salvato." - -# Used in this context: _("Save ") + title + _(" as:") -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" -msgstr " come:" - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "The supplied name is not available." -msgstr "Il nome fornito non è disponibile." - -#: src/slic3r/GUI/Tab.cpp:3092 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 -msgid "Layers" -msgstr "Layer" - -#: src/slic3r/GUI/Tab.cpp:3098 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3183 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3188 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 -msgid "Print Settings" -msgstr "Impostazioni Stampa" - -#: src/slic3r/GUI/Tab.hpp:311 -msgid "Filament Settings" -msgstr "Impostazioni Filamento" - -#: src/slic3r/GUI/Tab.hpp:344 -msgid "Printer Settings" -msgstr "Impostazioni stampante" - -#: src/slic3r/GUI/Tab.hpp:367 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:393 -msgid "Save preset" -msgstr "Salva preset" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "Update available" -msgstr "Aggiornamento disponibile" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" -msgstr "Nuova versione di Slic3r PE disponibile" - -#: src/slic3r/GUI/UpdateDialogs.cpp:35 -msgid "To download, follow the link below." -msgstr "Vai sul link sotto per scaricare." - -#: src/slic3r/GUI/UpdateDialogs.cpp:42 -msgid "Current version:" -msgstr "Versione corrente:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "New version:" -msgstr "Nuova versione:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:52 -msgid "Don't notify about new releases any more" -msgstr "Non notificare più i nuovi rilasci" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 -msgid "Configuration update" -msgstr "Aggiornamento di configurazione" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 -msgid "Configuration update is available" -msgstr "Aggiornamento di configurazione disponibile" - -#: src/slic3r/GUI/UpdateDialogs.cpp:73 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"Vuoi installarlo?\n" -"\n" -"Nota: verrà prima creata un'istantanea della configurazione completa. Potrà " -"essere ripristinata in qualunque momento se dovessero presentarsi problemi " -"con la nuova versione.\n" -"\n" -"Gruppo di configurazioni aggiornate:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "Incompatibilità Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "Configurazione Slic3r incompatibile" - -#: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Questa versione di Slic3r PE non è compatibile con gli attuali gruppi di " -"configurazioni installati.\n" -"Probabilmente è causato dall'esecuzione di una vecchia versione di Slic3r PE " -"dopo averne utilizzata una più recente.\n" -"\n" -"Prova a chiudere Slic3r e riprovare con una versione più nuova, o prova ad " -"effettuare nuovamente la configurazione iniziale. Così facendo creerai " -"un'istantanea di backup della configurazione esistente prima di istallare i " -"file compatibili con questo Slic3r.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Questa versione di Slic3r PE: %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:126 -msgid "Incompatible bundles:" -msgstr "Gruppi incompatibili:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" -msgstr "Esci da Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:145 -msgid "Re-configure" -msgstr "Ri-configura" - -#: src/slic3r/GUI/UpdateDialogs.cpp:166 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -msgstr "" -"Slic3r PE adesso utilizza una struttura di aggiornamento delle " -"configurazioni.\n" -"\n" -"Sono stati introdotti i così detti 'Preset di sistema', che contengono i " -"settaggi integrati predefiniti per varie stampanti. Questi preset di sistema " -"non possono essere modificati, però l'utente può creare i propri preset " -"ereditando le impostazioni da quelli di sistema.\n" -"Un preset ereditato può sia ereditare un valore particolare dal genitore, o " -"sovrascriverlo con un valore personalizzato.\n" -"\n" -"Si prega di procedere con il %s che segue per impostare i nuovi preset e " -"scegliere se abilitare gli aggiornamenti automatici del preset." - -#: src/slic3r/GUI/UpdateDialogs.cpp:182 -msgid "For more information please visit our wiki page:" -msgstr "Per maggiori informazioni visita la nostra pagina wiki:" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 -msgid "Ramming customization" -msgstr "Personalizzazione del ramming" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"Il ramming è la rapida estrusione appena prima di un cambio di strumento in " -"una stampante MM a estrusore singolo. Lo scopo è di dare la forma corretta " -"al capo del filamento scaricato cosicché non prevenga l'inserzione del nuovo " -"filamento e perché possa essere inserito più facilmente esso stesso. Questa " -"fase è importante e materiali diversi possono richiedere diverse velocità " -"per ottenere la forma corretta. Per questo motivi le velocità di estrusione " -"del ramming possono essere modificate.\n" -"\n" -"Questa è un'impostazione per esperti, valori scorretti produrranno " -"facilmente dei blocchi, o porteranno l'ingranaggio di estrusione a macinare " -"il filamento etc." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 -msgid "Total ramming time" -msgstr "Tempo totale di ramming" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 -msgid "Total rammed volume" -msgstr "Volume totale di ramming" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Ramming line width" -msgstr "Larghezza della linea di Ramming" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 -msgid "Ramming line spacing" -msgstr "Distanza tra le linee di Ramming" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Torre di spurgo - Regolazione volume di spurgo" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 -msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." -msgstr "" -"Qui è possibile regolare il volume di spurgo necessario (mm³) per ogni " -"coppia di strumenti." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 -msgid "Extruder changed to" -msgstr "Cambia estrusore a" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 -msgid "unloaded" -msgstr "scaricato" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 -msgid "loaded" -msgstr "caricato" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "Tool #" -msgstr "Utensile #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." -msgstr "" -"Il volume totale di purga viene calcolato sommando i due valori sotto, a " -"seconda di quali strumenti vengono scaricati/caricati." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "Il volume di spurgo (mm³) quando il filamento viene" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 -msgid "From" -msgstr "Da" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 -msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"Cambiare alle impostazioni semplici eliminerà tutte le modifiche fatte alle " -"impostazioni complesse!\n" -"\n" -"Procedere?" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show simplified settings" -msgstr "Mostra impostazioni semplificate" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show advanced settings" -msgstr "Mostra impostazioni avanzate" - -#: src/slic3r/Utils/OctoPrint.cpp:65 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:80 -msgid "Connection to OctoPrint works correctly." -msgstr "Connessione con OctoPrint funzionante." - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Could not connect to OctoPrint" -msgstr "Non è possibile connettere ad OctoPrint" - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Nota: è richiesta una versione di OctoPrint 1.1.0 o successiva." - -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:186 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:571 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "richiede min. %s e max. %s" - -#: src/slic3r/Utils/PresetUpdater.cpp:576 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:578 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:334 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:335 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:357 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:372 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:375 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:379 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Print.cpp:1175 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1201 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1216 -msgid "" -"Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1234 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1239 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1241 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1253 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1255 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1257 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1259 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1281 -msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1290 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1307 -msgid "" -"One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1324 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1328 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1350 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1354 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:41 -msgid "Bed shape" -msgstr "Forma letto" - -#: src/libslic3r/PrintConfig.cpp:48 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"Questa impostazione controlla l'altezza (e quindi il numero totale) degli " -"strati/layer. Un layer più sottile sarà più preciso ma sarà necessario più " -"tempo per stampare." - -#: src/libslic3r/PrintConfig.cpp:56 -msgid "Max print height" -msgstr "Altezza massima di stampa" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." -msgstr "" -"Impostate alla massima altezza che può essere raggiunta dal vostro estrusore " -"durante la stampa." - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" -msgstr "Evita incrocio perimetri" - -#: src/libslic3r/PrintConfig.cpp:74 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"Ottimizza il movimenti di spostamento per minimizzare l'incrocio di " -"perimetri. E' comunemente usato con estrusori Bowden che soffrono di oozing. " -"Questa caratteristica rallenta sia la stampa che la generazione del G-code." - -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 -msgid "Other layers" -msgstr "Altri layer" - -#: src/libslic3r/PrintConfig.cpp:83 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" -"Temperatura per i layer dopo il primo. Imposta questo a zero per disattivare " -"i comandi di controllo della temperatura del letto in output." - -#: src/libslic3r/PrintConfig.cpp:86 -msgid "Bed temperature" -msgstr "Temperatura letto" - -#: src/libslic3r/PrintConfig.cpp:93 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"Questo codice personalizzato è inserito ad ogni cambio layer, subito prima " -"del movimento Z. Si fa presente che puoi usare variabili sostitutive per " -"tutte le impostazioni di Slic3r sia per [layer_num] che per [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:104 -msgid "Between objects G-code" -msgstr "G-code tra gli oggetti" - -#: src/libslic3r/PrintConfig.cpp:105 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Questo codice è inserito tra gli oggetti quando si utilizza una stampa " -"sequenziale. Come predefinito, la temperatura di estrusione e del piano sono " -"resettate con il comando non-attesa; in ogni caso se nel codice " -"personalizzato vengono rilevati i comandi M104,M109,M140 o M190, Slic3r non " -"aggiungerà i comandi di temperatura. Si fa presente che puoi usare variabili " -"sostitutive per tutte le impostazioni di Slic3r, quindi puoi inserire un " -"comando \"M109 S[first_layer_temperature]\" quando preferisci." - -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Inferiore" - -#: src/libslic3r/PrintConfig.cpp:116 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Numero di layer solidi da generare sulle superfici inferiori." - -#: src/libslic3r/PrintConfig.cpp:118 -msgid "Bottom solid layers" -msgstr "Layer solidi sul fondo" - -#: src/libslic3r/PrintConfig.cpp:123 -msgid "Bridge" -msgstr "Bridge" - -#: src/libslic3r/PrintConfig.cpp:124 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "" -"Questa è l'accelerazione che la tua stampante utilizzerà per i bridge. " -"Impostala a zero per disattivare il controllo dell'accelerazione per i " -"bridge." - -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 -msgid "mm/s²" -msgstr "mm/s²" - -#: src/libslic3r/PrintConfig.cpp:133 -msgid "Bridging angle" -msgstr "Angolo Ponteggio" - -#: src/libslic3r/PrintConfig.cpp:135 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" -"Ignora angolo Bridging. Se lasciato a zero, l'angolo di bridging verrà " -"calcolato automaticamente. Altrimenti l'angolo fornito sarà utilizzato per " -"tutti i bridge. Usa 180° per l'angolo zero." - -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:145 -msgid "Bridges fan speed" -msgstr "Velocità ventola Bridge" - -#: src/libslic3r/PrintConfig.cpp:146 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "" -"Questa velocità della ventola verrà forzata durante tutti i bridge e " -"overhang." - -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 -msgid "%" -msgstr "%" - -#: src/libslic3r/PrintConfig.cpp:155 -msgid "Bridge flow ratio" -msgstr "Rapporto flusso Bridge" - -#: src/libslic3r/PrintConfig.cpp:157 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"Questo fattore influenza la quantità di plastica per il bridging. Puoi " -"diminuirlo leggermente per tendere il materiale estruso ed evitare che si " -"afflosci, sebbene le impostazioni predefinite sono generalmente buone ed è " -"consigliabile sperimentare con il raffreddamento (usare la ventola) prima di " -"modificare questo valore." - -#: src/libslic3r/PrintConfig.cpp:168 -msgid "Bridges" -msgstr "Bridge" - -#: src/libslic3r/PrintConfig.cpp:170 -msgid "Speed for printing bridges." -msgstr "Velocità di stampa Bridge." - -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 -msgid "mm/s" -msgstr "mm/s" - -#: src/libslic3r/PrintConfig.cpp:178 -msgid "Brim width" -msgstr "Larghezza brim" - -#: src/libslic3r/PrintConfig.cpp:179 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Larghezza orizzontale del brim che sarà stampata attorno ad ogni oggetto nel " -"primo layer." - -#: src/libslic3r/PrintConfig.cpp:187 -msgid "Clip multi-part objects" -msgstr "Collega oggetti multi-part" - -#: src/libslic3r/PrintConfig.cpp:188 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" -"Durante la stampa di oggetti multi-materiali, questa impostazione farà si " -"che slic3r unisca le parti sovrapposte dell'oggetto (la seconda sarà " -"collegata con la prima, la terza parte sarà collegata con la prima e la " -"seconda ecc..)." - -#: src/libslic3r/PrintConfig.cpp:196 -msgid "Colorprint height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Compatible printers condition" -msgstr "Condizioni di stampante compatibile" - -#: src/libslic3r/PrintConfig.cpp:208 -msgid "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." -msgstr "" -"Un'espressione booleana che usa i valori di configurazione di un profilo " -"stampante attivo. Se questa espressione produce un risultato vero, questo " -"profilo si considera compatibile con il profilo stampante attivo." - -#: src/libslic3r/PrintConfig.cpp:220 -msgid "Compatible print profiles condition" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:221 -msgid "" -"A boolean expression using the configuration values of an active print " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active print profile." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:235 -msgid "Complete individual objects" -msgstr "Completa oggetti individuali" - -#: src/libslic3r/PrintConfig.cpp:236 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"Durante la stampa di oggetti multipli o copie, questa funzione completerà " -"ciascun oggetto prima di spostarsi al prossimo (e iniziando la stampa dal " -"primo layer). Questa funzione è utile per evitare il rischio di stampe " -"rovinate. Slic3r dovrebbe avvisarti e prevenire collisioni con l'estrusore, " -"ma fai attenzione." - -#: src/libslic3r/PrintConfig.cpp:245 -msgid "Enable auto cooling" -msgstr "Abilita auto raffreddamento" - -#: src/libslic3r/PrintConfig.cpp:246 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "" -"Questo contrassegno abilita la logica del raffreddamento automatico in modo " -"da regolare la velocità di stampa e la velocità della ventola in base al " -"tempo di stampa del layer." - -#: src/libslic3r/PrintConfig.cpp:252 -msgid "Cooling tube position" -msgstr "Posizione tubo di raffreddamento" - -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "" -"Distanza del centro del tubo di raffreddamento dalla punta dell'estrusore " - -#: src/libslic3r/PrintConfig.cpp:261 -msgid "Cooling tube length" -msgstr "Lunghezza del tubo di raffreddamento" - -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "" -"Lunghezza del tubo di raffreddamento per limitare lo spazio delle mosse di " -"raffreddamento al suo interno " - -#: src/libslic3r/PrintConfig.cpp:271 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"Questa è l'accelerazione a cui la stampante sarà reimpostata dopo aver " -"utilizzato un valore di accelerazione per un ruolo specifico (perimetro/" -"riempimento). Imposta a zero per evitare del tutto la reimpostazione " -"dell'accelerazione." - -#: src/libslic3r/PrintConfig.cpp:281 -msgid "Default filament profile" -msgstr "Profilo filamento predefinito" - -#: src/libslic3r/PrintConfig.cpp:282 -msgid "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." -msgstr "" -"Profilo filamento di default associato al profilo stampante corrente. Alla " -"selezione del profilo stampante corrente, questo profilo filamento verrà " -"attivato." - -#: src/libslic3r/PrintConfig.cpp:287 -msgid "Default print profile" -msgstr "Profilo di stampa predefinito" - -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 -msgid "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." -msgstr "" -"Profilo di stampa di default associato al profilo stampante corrente. Alla " -"selezione del profilo stampante corrente, questo profilo di stampa verrà " -"attivato." - -#: src/libslic3r/PrintConfig.cpp:293 -msgid "Disable fan for the first" -msgstr "Disattiva ventola per i primi" - -#: src/libslic3r/PrintConfig.cpp:294 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" -"E' possibile impostare un valore positivo per disattivare completamente la " -"ventola durante i primi layer, così da non peggiorare l'adesione." - -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "layers" -msgstr "layer" - -#: src/libslic3r/PrintConfig.cpp:304 -msgid "Don't support bridges" -msgstr "Non supportare i bridge" - -#: src/libslic3r/PrintConfig.cpp:306 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "" -"Opzione sperimentale per prevenire la formazione di supporti sotto i bridge." - -#: src/libslic3r/PrintConfig.cpp:313 -msgid "Distance between copies" -msgstr "Distanza tra le copie" - -#: src/libslic3r/PrintConfig.cpp:314 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "Distanza usata per la funzione disposizione automatica del piatto." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Elephant foot compensation" -msgstr "Compensazione zampa d'elefante" - -#: src/libslic3r/PrintConfig.cpp:324 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"Il primo layer verrà ristretto sul piano XY dal valore configurato, così da " -"compensare per lo schiacciamento del 1° layer, anche noto come effetto Zampa " -"d'elefante." - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "" -"Questa procedura finale è inserita alla fine del file di output. Si fa " -"presente che puoi usare variabili sostitutive per tutte le impostazioni di " -"Slic3r." - -#: src/libslic3r/PrintConfig.cpp:345 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"Questa procedura finale è inserita alla fine del file di output, prima del " -"termine del gcode della stampante. Si fa presente che puoi usare variabili " -"sostitutive per tutte le impostazioni di Slic3r. Se hai estrusori multipli, " -"il gcode è processato nell'ordine dell'estrusore." - -#: src/libslic3r/PrintConfig.cpp:356 -msgid "Ensure vertical shell thickness" -msgstr "Mantieni spessore guscio verticale" - -#: src/libslic3r/PrintConfig.cpp:358 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" -"Aggiunge un riempimento solido vicino le superfici inclinate per garantire " -"lo spessore verticale (layer solidi superiore + inferiore)" - -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Trama riempimento superiore/inferiore" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "" -"Pattern di riempimento per il fondo o la cima. Questo influenza solo lo " -"strato visibile esterno e non i perimetri adiacenti." - -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 -msgid "External perimeters" -msgstr "Perimetri esterni" - -#: src/libslic3r/PrintConfig.cpp:388 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" -"Imposta questo valore diverso da zero per impostare una larghezza " -"d'estrusione manuale per i perimetri esterni. Se lasciato a zero, verrà " -"utilizzata la larghezza predefinita se impostata; diversamente verrà " -"utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in " -"percentuale (per esempio 200%), sarà calcolato sull'altezza del layer." - -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "mm or % (leave 0 for default)" -msgstr "mm o % (lasciate 0 per il default)" - -#: src/libslic3r/PrintConfig.cpp:399 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Questa impostazione separata avrà effetto sulla velocità dei perimetri " -"esterni (quelli visibili). Se espresso come percentuale (per esempio: 80%) " -"verrà calcolato sull'impostazione della velocità dei perimetri qui sopra. " -"Imposta a zero per automatico." - -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 -msgid "mm/s or %" -msgstr "mm/s o %" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "External perimeters first" -msgstr "Perimetri esterni per primi" - -#: src/libslic3r/PrintConfig.cpp:411 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "" -"Stampa i perimetri di contorno dal più esterno al più interno invece " -"dell'ordine predefinito inverso." - -#: src/libslic3r/PrintConfig.cpp:418 -msgid "Extra perimeters if needed" -msgstr "Perimetro aggiuntivo se necessario" - -#: src/libslic3r/PrintConfig.cpp:420 -#, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" -"Aggiunge più perimetri quando necessario per evitare spazi tra i perimetri " -"inclinati. Slic3r continua ad aggiungere perimetri fino a quando almeno il " -"70% del giro immediatamente sopra sarà supportato." - -#: src/libslic3r/PrintConfig.cpp:431 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" -"Estrusore da utilizzare (a meno che non siano specificate impostazioni " -"d'estrusore più specifiche). Questo valore scavalca l'estrusore dei " -"perimetri e di riempimento, ma non l'estrusore dei supporti." - -#: src/libslic3r/PrintConfig.cpp:444 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"Imposta la distanza verticale tra la punta dell'ugello e (solitamente) le " -"barre del carrello X. In altre parole, questa è l'altezza dello spazio " -"cilindrico attorno l'estrusore, e indica la profondità massima che " -"l'estrusore può affacciarsi prima di sbattere con altri oggetti stampati." - -#: src/libslic3r/PrintConfig.cpp:455 -msgid "Radius" -msgstr "Raggio" - -#: src/libslic3r/PrintConfig.cpp:456 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"Imposta il raggio di spazio attorno all'estrusore. Se l'estrusore non è " -"centrato, scegli il valore più grande per sicurezza. Questa impostazione è " -"usata per controllare le collisioni e per mostrare l'anteprima grafica nel " -"piano." - -#: src/libslic3r/PrintConfig.cpp:467 -msgid "Extruder Color" -msgstr "Colore estrusore" - -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Utilizzato solo nell'interfaccia di Slic3r come aiuto visivo." - -#: src/libslic3r/PrintConfig.cpp:475 -msgid "Extruder offset" -msgstr "Offset estrusore" - -#: src/libslic3r/PrintConfig.cpp:476 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"Se il firmware non gestisce lo spostamento dell'estrusore, è necessario che " -"il G-code ne tenga conto. Questa opzione permette di specificare lo " -"spostamento di ciascun estrusore rispetto al primo. Si aspetta delle " -"coordinate positive (che saranno sottratte dalle coordinate XY)." - -#: src/libslic3r/PrintConfig.cpp:486 -msgid "Extrusion axis" -msgstr "Asse estrusore" - -#: src/libslic3r/PrintConfig.cpp:487 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"Usa questa opzione per impostare la lettera dell'asse associato " -"all'estrusore della tua stampante (solitamente E, ma alcune stampanti " -"utilizzano A)." - -#: src/libslic3r/PrintConfig.cpp:493 -msgid "Extrusion multiplier" -msgstr "Moltiplicatore estrusione" - -#: src/libslic3r/PrintConfig.cpp:494 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"Questo fattore modifica proporzionalmente il valore del flusso. Dovrai " -"modificare questa impostazione per ottenere una buona finitura superficiale " -"e correggere la larghezza delle pareti singole. Normalmente i valori sono " -"tra 0.9 e 1.1. Se ritieni di dover modificare questo valore ulteriormente, " -"controlla il diametro del filamento e i passi E del tuo firmware." - -#: src/libslic3r/PrintConfig.cpp:503 -msgid "Default extrusion width" -msgstr "Larghezza estrusione predefinita" - -#: src/libslic3r/PrintConfig.cpp:505 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" -"Imposta questo valore diverso da zero per permettere la larghezza estrusione " -"manuale. Se lasciato a zero, Slic3r ricava la larghezza d'estrusione dal " -"diametro dell'ugello (vedi il suggerimento per la larghezza di estrusione " -"perimetro,larghezza estrusione riempimento ecc.). Se espresso come " -"percentuale (ad esempio 230%), sarà calcolato sull'altezza del layer." - -#: src/libslic3r/PrintConfig.cpp:509 -msgid "mm or % (leave 0 for auto)" -msgstr "mm o % (lasciate 0 per l'automatico)" - -#: src/libslic3r/PrintConfig.cpp:515 -msgid "Keep fan always on" -msgstr "Mantieni la ventola sempre accesa" - -#: src/libslic3r/PrintConfig.cpp:516 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"Se questo è attivo, la ventola non verrà mai disattiva e verrà mantenuta " -"attiva almeno alla velocità minima. Utile per il PLA, dannosa per l'ABS." - -#: src/libslic3r/PrintConfig.cpp:522 -msgid "Enable fan if layer print time is below" -msgstr "Abilita ventola se il tempo di stampa del layer è inferiore" - -#: src/libslic3r/PrintConfig.cpp:523 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"Se il tempo stimato di stampa del layer è al di sotto di questo numero di " -"secondi, la ventola sarà attivata e la sua velocità sarà calcolata " -"interpolando la velocità minima e massima." - -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 -msgid "approximate seconds" -msgstr "secondi approssimativi" - -#: src/libslic3r/PrintConfig.cpp:534 -msgid "Color" -msgstr "Colore" - -#: src/libslic3r/PrintConfig.cpp:541 -msgid "Filament notes" -msgstr "Note filamento" - -#: src/libslic3r/PrintConfig.cpp:542 -msgid "You can put your notes regarding the filament here." -msgstr "E' possibile inserire qui le note riguardanti il filamento." - -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 -msgid "Max volumetric speed" -msgstr "Massima velocità volumetrica" - -#: src/libslic3r/PrintConfig.cpp:552 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"Massima velocità volumetrica consentita per questo filamento. Limita la " -"velocità volumetrica massima di una stampa alla velocità volumetrica minima " -"del filamento e di stampa. Imposta a zero per non avere limite." - -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "mm³/s" - -#: src/libslic3r/PrintConfig.cpp:562 -msgid "Loading speed" -msgstr "Velocità di caricamento" - -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "Velocità utilizzata per caricare il filamento sulla torre di spurgo. " - -#: src/libslic3r/PrintConfig.cpp:571 -msgid "Loading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:580 -msgid "Unloading speed" -msgstr "Velocità di scaricamento" - -#: src/libslic3r/PrintConfig.cpp:581 -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " -msgstr "" -"Velocità usata per scaricare il filamento sulla wipe tower (non influisce " -"sulla parte iniziale dello scaricamento dopo il ramming) " - -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:591 -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:599 -msgid "Delay after unloading" -msgstr "Ritardo dopo lo scarico" - -#: src/libslic3r/PrintConfig.cpp:600 -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " -msgstr "" -"Tempo di attesa dopo lo scaricamento del filamento. Può aiutare per ottenere " -"cambi affidabili con materiali flessibili che potrebbero richiedere più " -"tempo per tornare alle dimensioni originali. " - -#: src/libslic3r/PrintConfig.cpp:610 -msgid "Number of cooling moves" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:611 -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:620 -msgid "Speed of the first cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:629 -msgid "Minimal purge on wipe tower" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:630 -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:635 -msgid "mm³" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:641 -msgid "Speed of the last cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:650 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:651 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:659 -msgid "Ramming parameters" -msgstr "Parametri del ramming" - -#: src/libslic3r/PrintConfig.cpp:660 -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " -msgstr "" -"Questa stringa viene controllata da RammingDialog e contiene parametri " -"specifici del ramming " - -#: src/libslic3r/PrintConfig.cpp:667 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"Inserisci qui il diametro del filamento. E' richiesta una buona precisione, " -"pertanto usa un calibro ed esegui misurazioni multiple lungo il filamento, " -"per poi ricavare una media." - -#: src/libslic3r/PrintConfig.cpp:685 -msgid "Density" -msgstr "Densità" - -#: src/libslic3r/PrintConfig.cpp:686 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"Inserisci qui la densità del filamento. E' solo un'informazione statistica. " -"Un metodo approssimativo consiste nel pesare un pezzo di filamento di " -"lunghezza nota, e calcolare il rapporto tra lunghezza e volume. E' meglio " -"calcolare il volume direttamente attraverso il dislocamento." - -#: src/libslic3r/PrintConfig.cpp:689 -msgid "g/cm³" -msgstr "g/cm³" - -#: src/libslic3r/PrintConfig.cpp:695 -msgid "Filament type" -msgstr "Tipo filamento" - -#: src/libslic3r/PrintConfig.cpp:696 -msgid "The filament material type for use in custom G-codes." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:712 -msgid "Soluble material" -msgstr "Materiale solubile" - -#: src/libslic3r/PrintConfig.cpp:713 -msgid "Soluble material is most likely used for a soluble support." -msgstr "Il materiale solubile è comunemente usato per un supporto solubile." - -#: src/libslic3r/PrintConfig.cpp:719 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "" -"Inserisci qui il costo del filamento per kg. E' solo un'informazione " -"statistica." - -#: src/libslic3r/PrintConfig.cpp:720 -msgid "money/kg" -msgstr "soldi/kg" - -#: src/libslic3r/PrintConfig.cpp:729 -msgid "Fill angle" -msgstr "Angolo riempimento" - -#: src/libslic3r/PrintConfig.cpp:731 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"Angolo base predefinito per l'orientamento del riempimento. Su questo verrà " -"applicato il tratteggio. I bridge saranno riempiti utilizzando la migliore " -"direzione che Slic3r può determinare, quindi questa impostazione non " -"influisce sui bridge." - -#: src/libslic3r/PrintConfig.cpp:744 -msgid "Fill density" -msgstr "Densità riempimento" - -#: src/libslic3r/PrintConfig.cpp:746 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "Densità del riempimento interno, espresso nell'intervallo 0% - 100%." - -#: src/libslic3r/PrintConfig.cpp:782 -msgid "Fill pattern" -msgstr "Schema riempimento" - -#: src/libslic3r/PrintConfig.cpp:784 -msgid "Fill pattern for general low-density infill." -msgstr "Schema per riempimento comune a bassa densità." - -#: src/libslic3r/PrintConfig.cpp:801 -msgid "Grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:802 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Cubic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:805 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:808 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:809 -msgid "Gyroid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 -msgid "First layer" -msgstr "Primo strato" - -#: src/libslic3r/PrintConfig.cpp:817 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "" -"Questa è l'accelerazione che la stampante utilizzerà per il primo layer. " -"Imposta a zero per disattivare il controllo dell'accelerazione per il primo " -"layer." - -#: src/libslic3r/PrintConfig.cpp:827 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "" -"Temperatura piano riscaldato per il primo layer. Imposta a zero per " -"disattivare i comandi di controllo temperatura nell'output." - -#: src/libslic3r/PrintConfig.cpp:837 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" -"Imposta questo valore diverso da zero per impostare la larghezza di " -"estrusione manuale per il primo layer. Puoi usarlo per forzare un'estrusione " -"più grossa per avere un'adesione migliore. Se espresso in percentuale (per " -"esempio 120%) sarà calcolato sull'altezza del primo layer. Se impostato a " -"zero, sarà utilizzata la larghezza di estrusione predefinita." - -#: src/libslic3r/PrintConfig.cpp:848 -msgid "First layer height" -msgstr "Altezza del primo strato" - -#: src/libslic3r/PrintConfig.cpp:850 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"Durante la stampa di layer molto bassi, potresti comunque aver bisogno di " -"stampare layer inferiori più spessi per migliorare l'adesione e la " -"tolleranza per piani di stampa non perfetti. Questo può essere espresso come " -"un valore assoluto o come una percentuale (per esempio: 150%) sull'altezza " -"layer predefinita." - -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 -msgid "mm or %" -msgstr "mm o %" - -#: src/libslic3r/PrintConfig.cpp:860 -msgid "First layer speed" -msgstr "Velocità del primo strato" - -#: src/libslic3r/PrintConfig.cpp:861 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"Se espresso come valore assoluto in mm/s, questa velocità sarà applicata a " -"tutti i movimenti di stampa del primo layer, a prescindere dal tipo di " -"movimento. Se espresso come percentuale (per esempio: 40%) verranno scalate " -"le velocità predefinite." - -#: src/libslic3r/PrintConfig.cpp:872 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"Temperatura estrusore per il primo layer. Se vuoi controllare manualmente la " -"temperatura durante la stampa, imposta questo a zero per disattivare i " -"comandi di controllo temperatura nel file di output." - -#: src/libslic3r/PrintConfig.cpp:882 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" -"Velocità per il riempimento degli spazi stretti utilizzando brevi movimenti " -"a zig-zag. Mantieni questa velocità ragionevolmente bassa per evitare " -"problemi di oscillazione e risonanza. Imposta a zero per disabilitare il " -"riempimento degli spazi." - -#: src/libslic3r/PrintConfig.cpp:890 -msgid "Verbose G-code" -msgstr "G-code Verbose" - -#: src/libslic3r/PrintConfig.cpp:891 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Abilita per ottenere un file G-code commentato, con un testo descrittivo per " -"ciascuna linea. Se stampi da memoria SD, il peso aggiuntivo del file " -"potrebbe rallentare il tuo firmware." - -#: src/libslic3r/PrintConfig.cpp:899 -msgid "G-code flavor" -msgstr "Tipologia di G-code" - -#: src/libslic3r/PrintConfig.cpp:900 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"Alcuni comandi G/M-code, incluso il controllo temperatura ed altri, non sono " -"universali. Attiva questa impostazione sul firmware della tua stampante per " -"ottenere un output compatibile. Il tipo \"No estrusione\" impedisce che " -"Slic3r esporti qualunque valore di estrusione." - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:929 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:930 -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:939 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "" -"Questa è l'accelerazione che la stampante utilizzerà per il riempimento. " -"Imposta a zero per disattivare il controllo dell'accelerazione per il " -"riempimento." - -#: src/libslic3r/PrintConfig.cpp:948 -msgid "Combine infill every" -msgstr "Combina riempimento ogni" - -#: src/libslic3r/PrintConfig.cpp:950 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"Questa funzione permette di combinare il riempimento e velocizza il tempo di " -"stampa estrudendo layer di infill più spessi conservando tuttavia i " -"perimetri sottili, e quindi l'accuratezza." - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "Combine infill every n layers" -msgstr "Combina riempimento ogni n layer" - -#: src/libslic3r/PrintConfig.cpp:960 -msgid "Infill extruder" -msgstr "Estrusore riempimento" - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "The extruder to use when printing infill." -msgstr "L'estrusore da utilizzare per la stampa del riempimento." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Imposta questo valore diverso da zero per impostare una larghezza " -"d'estrusione manuale per il riempimento. Se lasciato a zero, verrà usata la " -"larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore " -"1.125 x il diametro dell'ugello. Dovresti usare un estrusione più grossa per " -"velocizzare la stampa del riempimento e rendere le tue parti più robuste. Se " -"espresso in percentuale (per esempio 90%) verrà calcolato sull'altezza del " -"layer." - -#: src/libslic3r/PrintConfig.cpp:981 -msgid "Infill before perimeters" -msgstr "Riempimento prima dei perimetri" - -#: src/libslic3r/PrintConfig.cpp:982 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "" -"Questa opzione sostituirà l'ordine di stampa dei perimetri e del " -"riempimento, realizzando per primo il secondo." - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "Only infill where needed" -msgstr "Riempimento solo quando necessario" - -#: src/libslic3r/PrintConfig.cpp:990 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"Questa opzione limiterà il riempimento alle aree che effettivamente hanno " -"bisogno di un supporto per i soffitti (si comporterà come un materiale di " -"supporto interno). Se attivato, rallenterà la generazione del G-code a causa " -"dei molteplici controlli necessari." - -#: src/libslic3r/PrintConfig.cpp:998 -msgid "Infill/perimeters overlap" -msgstr "Sovrapposizione riempimento/perimetri" - -#: src/libslic3r/PrintConfig.cpp:1000 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"Questa impostazione applica una sovrapposizione aggiuntiva tra perimetri e " -"riempimento per una migliore unione. Teoricamente non sarebbe necessario, ma " -"i contraccolpi possono causare spazi vuoi. Se espresso in percentuale (per " -"esempio: 15%) viene calcolato sulla larghezza d'estrusione del perimetro." - -#: src/libslic3r/PrintConfig.cpp:1012 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "" -"Velocità per la stampa del riempimento interno. Imposta a zero per auto." - -#: src/libslic3r/PrintConfig.cpp:1020 -msgid "Inherits profile" -msgstr "Eredita profilo" - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Name of the profile, from which this profile inherits." -msgstr "Nome del profilo da cui questo profilo eredita." - -#: src/libslic3r/PrintConfig.cpp:1032 -msgid "Interface shells" -msgstr "Gusci interfaccia" - -#: src/libslic3r/PrintConfig.cpp:1033 -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." -msgstr "" -"Forza la generazione di perimetri solidi tra volumi o materiali adiacenti. " -"Utile per stampe multi estrusore con materiali traslucidi o supporti " -"solubili manuali." - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"Questo codice personalizzato è inserito ad ogni cambio layer, subito dopo il " -"movimento Z e prima che l'estrusore si sposti al punto del primo layer. Si " -"fa presente che puoi usare variabili sostitutive per tutte le impostazioni " -"di Slic3r sia per [layer_num] che per [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:1054 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1055 -msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 -msgid "Max" -msgstr "Massimo" - -#: src/libslic3r/PrintConfig.cpp:1164 -msgid "This setting represents the maximum speed of your fan." -msgstr "Questa impostazione rappresenta la velocità massima della ventola." - -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" -"Questa è la massima altezza layer stampabile per questo estrusore, usata " -"come limite per l'altezza variabile dei layer e l'altezza dei layer di " -"supporto. L'altezza layer massima raccomandata è il 75% della larghezza di " -"estrusione, in modo da ottenere una buona adesione tra i layer. Se impostato " -"a 0, l'altezza layer è limitata al 75% del diametro dell'ugello." - -#: src/libslic3r/PrintConfig.cpp:1185 -msgid "Max print speed" -msgstr "Massima velocità di stampa" - -#: src/libslic3r/PrintConfig.cpp:1186 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"Quando le altre velocità sono impostate a 0, Slic3r calcolerà " -"automaticamente la velocità ottimale in modo da mantenere costante la " -"pressione dell'estrusore. Questa impostazione sperimentale è utilizzata per " -"impostare la velocità massima di stampa che vuoi permettere." - -#: src/libslic3r/PrintConfig.cpp:1197 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "" -"Questa impostazione sperimentale è utilizzata per impostare la massima " -"velocità volumetrica supportata dal tuo estrusore." - -#: src/libslic3r/PrintConfig.cpp:1206 -msgid "Max volumetric slope positive" -msgstr "Massima pendenza volumetrica positiva" - -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" -"Questa impostazione sperimentale è utilizzata per limitare la velocità del " -"cambio nel fattore di estrusione. Un valore di 1.8 mm³/s² assicura che un " -"cambio dal fattore di estrusione di 1.8 mm³/s (larghezza estrusione 0.45mm, " -"altezza estrusione di 0.2mm, avanzamento 20 mm/s) a 5.4 mm³/s (avanzamento a " -"60 mm/s) impiegherà almeno 2 secondi." - -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: src/libslic3r/PrintConfig.cpp:1218 -msgid "Max volumetric slope negative" -msgstr "Massima pendenza volumetrica negativa" - -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 -msgid "Min" -msgstr "Minimo" - -#: src/libslic3r/PrintConfig.cpp:1231 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "" -"Questa impostazione rappresenta la PWM minima (modulazione di larghezza di " -"impulso) che la ventola necessita per lavorare." - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" -"Questa è l'altezza minima stampabile per questo estrusore e limita la " -"risoluzione per l'altezza variabile di layer. Valori tipici sono compresi " -"tra 0.05 mm e 0.1 mm." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Min print speed" -msgstr "Velocità minima di stampa" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r non rallenterà la velocità al di sotto di questa." - -#: src/libslic3r/PrintConfig.cpp:1259 -msgid "Minimal filament extrusion length" -msgstr "Lunghezza di estrusione minima del filamento" - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"Genera almeno il numero di skirt necessari per consumare la quantità di " -"filamento specificata per il primo strato. Per le macchine multi estrusore, " -"questo minimo riguarda ciascun estrusore." - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Configuration notes" -msgstr "Note di configurazione" - -#: src/libslic3r/PrintConfig.cpp:1271 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"E' possibile inserire qui le note personali. Questo testo verrà aggiunto nei " -"commenti iniziali del G-code." - -#: src/libslic3r/PrintConfig.cpp:1281 -msgid "Nozzle diameter" -msgstr "Diametro ugello" - -#: src/libslic3r/PrintConfig.cpp:1282 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "" -"Questo è il diametro dell'ugello dell'estrusore (per esempio: 0.5, 0.35 ecc.)" - -#: src/libslic3r/PrintConfig.cpp:1288 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1289 -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "Hostname, IP o URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 -msgid "Only retract when crossing perimeters" -msgstr "Ritrai solo se si attraversa un perimetro" - -#: src/libslic3r/PrintConfig.cpp:1326 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "" -"Disabilita la retrazione quando la traiettoria del movimento non oltrepassa " -"i perimetri del layer superiore (pertanto qualunque scolatura sarà " -"probabilmente invisibile)." - -#: src/libslic3r/PrintConfig.cpp:1334 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" -"Questa opzione abbasserà la temperatura degli estrusori inattivi per " -"prevenire oozing. Attiverà automaticamente uno skirt alto e muoverà " -"l'estrusore al di fuori di questo skirt al cambiamento di temperature." - -#: src/libslic3r/PrintConfig.cpp:1342 -msgid "Output filename format" -msgstr "Formato del file di Output" - -#: src/libslic3r/PrintConfig.cpp:1343 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"E' possibile utilizzare tutte le opzioni di configurazione come variabili " -"all'interno di questo modello. Ad esempio: [layer_height], [fill_density] " -"ecc. Puoi anche usare [timestamp], [year], [month], [day], [hour], [minute], " -"[second], [version], [input_filename ], [nome_filename_input]." - -#: src/libslic3r/PrintConfig.cpp:1353 -msgid "Detect bridging perimeters" -msgstr "Rileva perimetri ponte" - -#: src/libslic3r/PrintConfig.cpp:1355 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"Opzione sperimentale per regolare il flusso delle sporgenze (sarà utilizzato " -"il flusso dei bridge), applicare la velocità del bridge e attivare la " -"ventola." - -#: src/libslic3r/PrintConfig.cpp:1362 -msgid "Filament parking position" -msgstr "Posizione di parking del filamento" - -#: src/libslic3r/PrintConfig.cpp:1363 -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " -msgstr "" -"Distanza della punta dell'estrusore dalla posizione dove il filamento viene " -"posto mentre viene scaricato. Dovrebbe essere uguale al valore nel firmware " -"della stampante. " - -#: src/libslic3r/PrintConfig.cpp:1372 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1373 -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 -msgid "Perimeters" -msgstr "Perimetri" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"Questa è l'accelerazione che la stampante utilizzerà per i perimetri. Un " -"valore alto come 9000 solitamente produce dei buoni risultati se l'hardware " -"è all'altezza. Imposta a zero per disattivare il controllo " -"dell'accelerazione per i perimetri." - -#: src/libslic3r/PrintConfig.cpp:1392 -msgid "Perimeter extruder" -msgstr "Estrusore perimetro" - -#: src/libslic3r/PrintConfig.cpp:1394 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "" -"L'estrusore da utilizzare per la stampa dei perimetri e del brim. Il primo " -"estrusore è 1." - -#: src/libslic3r/PrintConfig.cpp:1404 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" -"Imposta questo valore diverso da zero per impostare una larghezza " -"d'estrusione manuale per i perimetri. Dovresti scegliere un'estrusione più " -"sottile per ottenere superfici più precise. Se lasciato a zero, verrà usata " -"la larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore " -"1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio " -"200%) verrà calcolato sull'altezza del layer." - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" -"Velocità per i perimetri (contorni, conosciuti anche come gusci verticali). " -"Imposta a zero per automatizzare." - -#: src/libslic3r/PrintConfig.cpp:1427 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"Questa opzione imposta il numero di perimetri da generare per ogni layer. Da " -"notare che Slic3r aumenta questo numero automaticamente quando rileva " -"superfici inclinate che potrebbero beneficiare di un aumento del numero dei " -"perimetri se l'opzione Perimetri aggiuntivi è attiva." - -#: src/libslic3r/PrintConfig.cpp:1431 -msgid "(minimum)" -msgstr "(minimo)" - -#: src/libslic3r/PrintConfig.cpp:1439 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Se vuoi processare il G-code in uscita con script personalizzati, basta " -"elencare qui il loro percorso assoluto. Separa i diversi script con un punto " -"e virgola. Gli script passeranno il percorso assoluto nel G-code come primo " -"argomento, e potranno accedere alle impostazioni di configurazione di Slic3r " -"leggendo le variabili di ambiente." - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "Printer type" -msgstr "Tipo stampante" - -#: src/libslic3r/PrintConfig.cpp:1453 -msgid "Type of the printer." -msgstr "Tipologia stampante." - -#: src/libslic3r/PrintConfig.cpp:1457 -msgid "Printer notes" -msgstr "Note stampante" - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "You can put your notes regarding the printer here." -msgstr "E' possibile inserire qui le note riguardanti la stampante." - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "Printer vendor" -msgstr "Venditore della stampante" - -#: src/libslic3r/PrintConfig.cpp:1468 -msgid "Name of the printer vendor." -msgstr "Nome del venditore della stampante." - -#: src/libslic3r/PrintConfig.cpp:1472 -msgid "Printer variant" -msgstr "Variante della stampante" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." -msgstr "" -"Nome della variante di stampante. Per esempio le varianti di una stampante " -"potrebbero differire per diametro dell'ugello." - -#: src/libslic3r/PrintConfig.cpp:1483 -msgid "Raft layers" -msgstr "Layer raft" - -#: src/libslic3r/PrintConfig.cpp:1485 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "" -"L'oggetto verrà sollevato da questo numero di layer, e verrà generato il " -"materiale di supporto al di sotto di questo." - -#: src/libslic3r/PrintConfig.cpp:1494 -msgid "Resolution" -msgstr "Risoluzione" - -#: src/libslic3r/PrintConfig.cpp:1495 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"Risoluzione minima dettaglio, utilizzato per semplificare il file input " -"accelerando lo slicing e riducendo l'utilizzo di memoria. I file ad alta " -"risoluzione spesso hanno più dettaglio di quanto la stampante possa " -"generare. Impostate a zero per disabilitare la semplificazione e utilizzare " -"la risoluzione completa." - -#: src/libslic3r/PrintConfig.cpp:1506 -msgid "Minimum travel after retraction" -msgstr "Spostamento minimo dopo una ritrazione" - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "" -"La retrazione non è attivata quando i movimenti di spostamento sono più " -"brevi di questa lunghezza." - -#: src/libslic3r/PrintConfig.cpp:1514 -msgid "Retract amount before wipe" -msgstr "Retrai la quantità prima di pulire" - -#: src/libslic3r/PrintConfig.cpp:1515 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" -"Con estrusori bowden, potrebbe essere saggio effettuare una certa retrazione " -"veloce prima di effettuare un movimento di pulizia." - -#: src/libslic3r/PrintConfig.cpp:1523 -msgid "Retract on layer change" -msgstr "Ritrai al cambio layer" - -#: src/libslic3r/PrintConfig.cpp:1524 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "" -"Questo contrassegno forza una retrazione ogni volta che viene effettuato un " -"movimento di Z." - -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 -msgid "Length" -msgstr "Lunghezza" - -#: src/libslic3r/PrintConfig.cpp:1531 -msgid "Retraction Length" -msgstr "Lunghezza Retrazione" - -#: src/libslic3r/PrintConfig.cpp:1532 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"Quando viene attivata la retrazione, il filamento viene ritirato per la " -"quantità specificata (la lunghezza è misurata sul filamento grezzo, prima " -"che questo entri dentro l'estrusore)." - -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 -msgid "mm (zero to disable)" -msgstr "mm (imposta a zero per disabilitare)" - -#: src/libslic3r/PrintConfig.cpp:1540 -msgid "Retraction Length (Toolchange)" -msgstr "Lunghezza Retrazione (cambio tool)" - -#: src/libslic3r/PrintConfig.cpp:1541 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"Quando viene attivata la retrazione prima del cambio strumento, il filamento " -"è ritirato per la quantità specificata (la lunghezza è misurata sul " -"filamento grezzo, prima che questo entri dentro l'estrusore)." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Lift Z" -msgstr "Solleva Z" - -#: src/libslic3r/PrintConfig.cpp:1551 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"Se inserisci un valore positivo, Z verrà alzato velocemente ogni volta che " -"si innesca una retrazione. Quando si utilizzano diversi estrusori, verrà " -"considerato solamente l'impostazione del primo estrusore." - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Above Z" -msgstr "Sopra Z" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Only lift Z above" -msgstr "Eleva solo Z al di sopra" - -#: src/libslic3r/PrintConfig.cpp:1561 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"Se inserisci un valore positivo, il sollevamento Z avverrà solamente sopra " -"un certo specifico valore assoluto Z. Puoi regolare questa impostazione per " -"evitare il sollevamento nei primi layer." - -#: src/libslic3r/PrintConfig.cpp:1569 -msgid "Below Z" -msgstr "Sotto Z" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Only lift Z below" -msgstr "Eleva solo Z al di sotto" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"Se inserisci un valore positivo, il sollevamento Z avverrà solamente sotto " -"un certo specifico valore assoluto Z. Puoi regolare questa impostazione per " -"limitare il sollevamento ai primi layer." - -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 -msgid "Extra length on restart" -msgstr "Lunghezza extra in ripresa" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"Quando la retrazione è compensata dopo un movimento di spostamento, " -"l'estrusore spingerà questa quantità addizionale di filamento. Questa " -"impostazione è raramente necessaria." - -#: src/libslic3r/PrintConfig.cpp:1590 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Quando la retrazione è compensata dopo un cambio di strumento, l'estrusore " -"spingerà questa quantità addizionale di filamento." - -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 -msgid "Retraction Speed" -msgstr "Velocità di retrazione" - -#: src/libslic3r/PrintConfig.cpp:1600 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "" -"Velocità delle retrazioni (si applica solamente al motore dell'estrusore)." - -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 -msgid "Deretraction Speed" -msgstr "Velocità di deretrazione" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" -"La velocità di caricamento di un filamento nell'estrusore dopo la retrazione " -"(si applica solamente al motore dell'estrusore). Se lasciato a zero, verrà " -"utilizzata la velocità di retrazione." - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "Seam position" -msgstr "Posizione giunzione" - -#: src/libslic3r/PrintConfig.cpp:1619 -msgid "Position of perimeters starting points." -msgstr "Posizione dei punti iniziali dei perimetri." - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1627 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1628 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 -msgid "Direction" -msgstr "Direzione" - -#: src/libslic3r/PrintConfig.cpp:1638 -msgid "Preferred direction of the seam" -msgstr "Direzione preferita della giunzione" - -#: src/libslic3r/PrintConfig.cpp:1639 -msgid "Seam preferred direction" -msgstr "Direzione preferita giunzione" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "Jitter" -msgstr "Jitter" - -#: src/libslic3r/PrintConfig.cpp:1649 -msgid "Seam preferred direction jitter" -msgstr "Direzione preferita giunzione jitter" - -#: src/libslic3r/PrintConfig.cpp:1650 -msgid "Preferred direction of the seam - jitter" -msgstr "Direzione preferita della giunzione - jitter" - -#: src/libslic3r/PrintConfig.cpp:1661 -msgid "USB/serial port for printer connection." -msgstr "Porta USB/Seriale per connessione stampante." - -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Velocità porta seriale" - -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "Velocità (baud) USB/Seriale per la connessione stampante." - -#: src/libslic3r/PrintConfig.cpp:1679 -msgid "Distance from object" -msgstr "Distanza dall'oggetto" - -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "" -"La distanza tra skirt e oggetto(i). Imposta questo valore a zero per unire " -"lo skirt all'oggetto(i) e ottenere un brim per una migliore adesione." - -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "Skirt height" -msgstr "Altezza skirt" - -#: src/libslic3r/PrintConfig.cpp:1689 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "" -"Altezza dello skirt espresso in layer. Imposta un valore alto per utilizzare " -"lo skirt come scudo contro le scolature." - -#: src/libslic3r/PrintConfig.cpp:1697 -msgid "Loops (minimum)" -msgstr "Giri (minimo)" - -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "Skirt Loops" -msgstr "Giri skirt" - -#: src/libslic3r/PrintConfig.cpp:1699 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"Numero di giri per lo skirt. Se è impostata l'opzione per la lunghezza " -"minima di estrusione, il numero dei giri potrebbe essere più grande di " -"quello configurato qui. Imposta questo valore a zero per disattivare " -"completamente lo skirt." - -#: src/libslic3r/PrintConfig.cpp:1708 -msgid "Slow down if layer print time is below" -msgstr "Rallenta se il tempo di stampa del layer è inferiore" - -#: src/libslic3r/PrintConfig.cpp:1709 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"Se il tempo stimato di stampa del layer è al di sotto di questo numero di " -"secondi, la velocità dei movimenti di stampa sarà ridotta per estendere la " -"durata di questo valore." - -#: src/libslic3r/PrintConfig.cpp:1720 -msgid "Small perimeters" -msgstr "Perimetri piccoli" - -#: src/libslic3r/PrintConfig.cpp:1722 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"Questa impostazione separata influenzerà la velocità dei perimetri con " -"raggio <=6.5mm (solitamente i buchi). Se espresso come percentuale (per " -"esempio: 80%) sarà calcolato sulla velocità dei perimetri qui sopra. Imposta " -"a zero per automatico." - -#: src/libslic3r/PrintConfig.cpp:1732 -msgid "Solid infill threshold area" -msgstr "Area inizio riempimento solido" - -#: src/libslic3r/PrintConfig.cpp:1734 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "" -"Forza riempimento solido per le regioni con un'area inferiore al limite " -"specificato." - -#: src/libslic3r/PrintConfig.cpp:1735 -msgid "mm²" -msgstr "mm²" - -#: src/libslic3r/PrintConfig.cpp:1742 -msgid "Solid infill extruder" -msgstr "Estrusore riempimento solido" - -#: src/libslic3r/PrintConfig.cpp:1744 -msgid "The extruder to use when printing solid infill." -msgstr "L'estrusore da utilizzare per la stampa del riempimento solido." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "Solid infill every" -msgstr "Riempimento solido ogni" - -#: src/libslic3r/PrintConfig.cpp:1753 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"Questa funzione permette di forzare un layer solido ogni tot layer. Zero per " -"disabilitare. E' possibile impostare qualunque valore (per esempio 9999); " -"Slic3r sceglierà automaticamente il maggior numero possibile di layer da " -"combinare secondo il diametro dell'ugello e l'altezza layer." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" -"Imposta questo valore diverso da zero per impostare una larghezza " -"d'estrusione manuale per il riempimento delle superfici solide. Se lasciato " -"a zero, verrà usata la larghezza d'estrusione predefinita, altrimenti verrà " -"utilizzato il valore 1.125 x il diametro dell'ugello. Se espresso in " -"percentuale (per esempio 90%) verrà calcolato sull'altezza del layer." - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" -"La velocità per le regioni di stampa solide (superiore/inferiore/gusci " -"interni orizzontali). Questo valore può essere espresso come percentuale " -"(per esempio: 80%) sulla velocità del riempimento predefinita qui sopra. " -"Imposta a zero per automatizzare." - -#: src/libslic3r/PrintConfig.cpp:1789 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "" -"Numero di layer solidi da generare sulle superfici superiori e inferiori." - -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "Spiral vase" -msgstr "Vaso a spirale" - -#: src/libslic3r/PrintConfig.cpp:1797 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"Questa funzione solleverà Z gradualmente durante la stampa di un oggetto a " -"parete singola allo scopo di rimuovere qualunque giunzione. Questa opzione " -"richiede un singolo perimetro, nessun riempimento, nessun layer solido " -"superiore e nessun materiale di supporto. E' possibile comunque impostare " -"qualunque numero di layer solidi inferiori così come per i giri di skirt/" -"brim. Non funzionerà stampando più di un oggetto." - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "Temperature variation" -msgstr "Variazione di temperatura" - -#: src/libslic3r/PrintConfig.cpp:1807 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" -"La differenza di temperatura da applicare quando un estrusore non è attivo. " -"Abilita uno skirt \"sacrificale\" a piena altezza su cui l'ugello verrà " -"pulito periodicamente." - -#: src/libslic3r/PrintConfig.cpp:1818 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" -"La procedura iniziale è inserita all'inizio, dopo che il piano ha raggiunto " -"la temperatura impostata e l'estrusore ha appena iniziato a scaldare, e " -"prima che l'estrusore abbia completato il riscaldamento. Se Slic3r rileva " -"M104 o M190 nei tuoi codici personalizzati, questi comandi non verranno " -"inseriti automaticamente così sarà possibile personalizzare l'ordine dei " -"comandi di riscaldamento e altre azioni personalizzate. Da notare che è " -"possibile utilizzare variabili sostitutive per tutte le impostazioni di " -"Slic3r, così sarà possibile inserire un comando \"M109 " -"S[first_layer_temperature]\" ovunque si voglia." - -#: src/libslic3r/PrintConfig.cpp:1834 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"Questa procedura iniziale è inserita all'inizio, dopo qualunque gcode " -"iniziale della stampante. Questo viene usato per scavalcare le impostazioni " -"per un filamento specifico. Se Slic3r rileva M104, M109, M140 o M190 nel tuo " -"codice personalizzato, questi comandi non verranno inseriti automaticamente " -"così che sarà possibile personalizzare l'ordine dei comandi di riscaldamento " -"e altre azioni personalizzate. Da notare che è possibile utilizzare " -"variabili sostitutive per tutte le impostazioni di Slic3r, così che sia " -"possibile inserire un comando \"M109S [first_layer_temperature]\" ovunque si " -"voglia. Se si hanno estrusori multipli, il gcode è processato nell'ordine " -"degli estrusori." - -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Single Extruder Multi Material" -msgstr "Multi Material a Estrusore Singolo" - -#: src/libslic3r/PrintConfig.cpp:1851 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "La stampante processa diversi filamenti in un singolo hotend." - -#: src/libslic3r/PrintConfig.cpp:1857 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1858 -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1864 -msgid "Generate support material" -msgstr "Genera materiale di supporto" - -#: src/libslic3r/PrintConfig.cpp:1866 -msgid "Enable support material generation." -msgstr "Abilita la creazione di materiale di supporto." - -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1873 -msgid "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1880 -msgid "XY separation between an object and its support" -msgstr "Separazione XY tra un oggetto e il suo supporto" - -#: src/libslic3r/PrintConfig.cpp:1882 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" -"La separazione XY tra l'oggetto e il suo supporto. Se espresso come " -"percentuale (ad esempio 50%), verrà calcolato sulla larghezza del perimetro " -"esterno." - -#: src/libslic3r/PrintConfig.cpp:1893 -msgid "Pattern angle" -msgstr "Angolo trama" - -#: src/libslic3r/PrintConfig.cpp:1895 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "" -"Usa questa impostazione per ruotare la trama del materiale di supporto sul " -"piano orizzontale." - -#: src/libslic3r/PrintConfig.cpp:1906 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "" -"Crea supporti solo se poggiano sulla superficie di stampa. Non creare " -"supporti sulla stampa." - -#: src/libslic3r/PrintConfig.cpp:1913 -msgid "Contact Z distance" -msgstr "Distanza di contatto Z" - -#: src/libslic3r/PrintConfig.cpp:1915 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"Distanza verticale tra oggetto e interfaccia del materiale di supporto. " -"Impostando questo valore a 0 eviterà che Slic3r utilizzi il flusso e " -"velocità bridge per il primo layer dell'oggetto." - -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1929 -msgid "Enforce support for the first" -msgstr "Applica il supporto per i primi" - -#: src/libslic3r/PrintConfig.cpp:1931 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"Genera materiale di supporto per il numero di layer specificati partendo dal " -"basso, a prescindere che sia abilitato il materiale di supporto normale o " -"meno, e indipendentemente dall'angolo limite. Questo è utile per ottenere " -"più adesione negli oggetti con un appoggio sul piano molto sottile o fragile." - -#: src/libslic3r/PrintConfig.cpp:1937 -msgid "Enforce support for the first n layers" -msgstr "Applica il supporto per i primi n layer" - -#: src/libslic3r/PrintConfig.cpp:1943 -msgid "Support material/raft/skirt extruder" -msgstr "Estrusore materiale di supporto/raft/skirt" - -#: src/libslic3r/PrintConfig.cpp:1945 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" -"L'estrusore da utilizzare per la stampa del materiale di supporto, raft e " -"skirt (1+, 0 per utilizzare l'estrusore attuale per minimizzare i cambi di " -"strumento)." - -#: src/libslic3r/PrintConfig.cpp:1955 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Imposta questo valore diverso da zero per impostare una larghezza " -"d'estrusione manuale per il supporto. Se lasciato a zero, verrà usata la " -"larghezza d'estrusione predefinita., altrimenti verrà utilizzato il valore " -"del diametro dell'ugello. Se espresso in percentuale (per esempio 90%) verrà " -"calcolato sull'altezza del layer." - -#: src/libslic3r/PrintConfig.cpp:1964 -msgid "Interface loops" -msgstr "Giri interfaccia" - -#: src/libslic3r/PrintConfig.cpp:1966 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Copri lo strato di contatto superiore del supporto con anelli. Disattivato " -"per impostazione predefinita." - -#: src/libslic3r/PrintConfig.cpp:1972 -msgid "Support material/raft interface extruder" -msgstr "Estrusore materiale di supporto/intefaccia raft" - -#: src/libslic3r/PrintConfig.cpp:1974 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" -"L'estrusore da utilizzare per la stampa dell'interfaccia del materiale di " -"supporto (1+, 0 per usare l'estrusore attuale per minimizzare il cambio di " -"strumento). Questo influenza anche il raft." - -#: src/libslic3r/PrintConfig.cpp:1982 -msgid "Interface layers" -msgstr "Layer interfaccia" - -#: src/libslic3r/PrintConfig.cpp:1984 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "" -"Numero di layer interfaccia da inserire tra l'oggetto(i) e il materiale di " -"supporto." - -#: src/libslic3r/PrintConfig.cpp:1992 -msgid "Interface pattern spacing" -msgstr "Spaziatura trama interfaccia" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "" -"Spaziatura tra le linee di interfaccia. Imposta a zero per ottenere " -"un'interfaccia solida." - -#: src/libslic3r/PrintConfig.cpp:2004 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"Velocità per la stampa dei layer di interfaccia del materiale di supporto. " -"Se espresso come percentuale (per esempio 50%) sarà calcolato sulla velocità " -"del materiale di supporto." - -#: src/libslic3r/PrintConfig.cpp:2013 -msgid "Pattern" -msgstr "Trama" - -#: src/libslic3r/PrintConfig.cpp:2015 -msgid "Pattern used to generate support material." -msgstr "Trama usata per generare il materiale di supporto." - -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2028 -msgid "Pattern spacing" -msgstr "Spaziatura trama" - -#: src/libslic3r/PrintConfig.cpp:2030 -msgid "Spacing between support material lines." -msgstr "Spaziatura tra le linee del materiale di supporto." - -#: src/libslic3r/PrintConfig.cpp:2040 -msgid "Speed for printing support material." -msgstr "Velocità per la stampa del materiale di supporto." - -#: src/libslic3r/PrintConfig.cpp:2047 -msgid "Synchronize with object layers" -msgstr "Sincronizza con i layer dell'oggetto" - -#: src/libslic3r/PrintConfig.cpp:2049 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" -"Sincronizza i layer di supporto con i layer dell'oggetto stampato. E' utile " -"con le stampanti multi-material, dove il cambio estrusore è costoso." - -#: src/libslic3r/PrintConfig.cpp:2056 -msgid "Overhang threshold" -msgstr "Soglia sporgenza" - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" -"Il materiale di supporto non sarà generato per sporgenze con angolo di " -"inclinazione (90°=verticale) superiore al limite impostato. In altre parole, " -"questo valore rappresenta l'inclinazione orizzontale massima (misurata dal " -"piano orizzontale) che puoi stampare senza materiale di supporto. Imposta a " -"zero per un rilevamento automatico (raccomandato)." - -#: src/libslic3r/PrintConfig.cpp:2071 -msgid "With sheath around the support" -msgstr "Con guaina attorno al supporto" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" -"Aggiunge un contorno (una singola linea di perimetro) attorno alla base del " -"supporto. Questo rende il supporto più affidabile, ma anche più difficile da " -"rimuovere." - -#: src/libslic3r/PrintConfig.cpp:2081 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "" -"Temperatura estrusore per i layer successivi al primo. Imposta questo a zero " -"per disattivare i comandi di controllo temperatura nell'output." - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "Temperatura" - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Detect thin walls" -msgstr "Rileva perimetri sottili" - -#: src/libslic3r/PrintConfig.cpp:2092 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"Rileva pareti a spessore singolo (parti in cui non entrano due estrusioni ed " -"è necessario comprimerle in una singola traccia)." - -#: src/libslic3r/PrintConfig.cpp:2099 -msgid "Threads" -msgstr "Thread" - -#: src/libslic3r/PrintConfig.cpp:2100 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "" -"I thread sono utilizzati per parallelizzare operazioni di lunga durata. Il " -"numero di thread ottimali è leggermente superiore al numero di core / " -"processori disponibili." - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"Questo codice personalizzato è inserito ad ogni cambio estrusore, subito " -"prima del movimento Z. Si fa presente che puoi usare variabili sostitutive " -"per tutte le impostazioni di Slic3r sia per [previous_extruder] che per " -"[next_extruder]." - -#: src/libslic3r/PrintConfig.cpp:2125 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" -"Imposta questo valore diverso da zero per impostare una larghezza " -"d'estrusione manuale per il riempimento delle superfici superiori. Dovresti " -"scegliere un'estrusione più sottile per riempire gli spazi stretti ed " -"ottenere una finitura più liscia. Se lasciato a zero, verrà usata la " -"larghezza d'estrusione predefinita, altrimenti verrà utilizzato il valore " -"1.125 x il diametro dell'ugello. Se espresso in percentuale (per esempio " -"90%) verrà calcolato sull'altezza del layer." - -#: src/libslic3r/PrintConfig.cpp:2137 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" -"Velocità di stampa dei layer solidi superiori (si applica solamente al layer " -"solido esterno più in alto e non ai layer solidi interni). Rallenta questa " -"impostazione per ottenere una superficie più rifinita. Questo valore può " -"essere espresso come percentuale (per esempio: 80%) della velocità del " -"riempimento solido qui sopra. Imposta a zero per auto." - -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Superiore" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "Number of solid layers to generate on top surfaces." -msgstr "Numero di layer solidi da generare sulle superfici superiori." - -#: src/libslic3r/PrintConfig.cpp:2153 -msgid "Top solid layers" -msgstr "Layer solidi superiori" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "" -"Velocità per movimenti di spostamento (salti tra punti di estrusione " -"distanti)." - -#: src/libslic3r/PrintConfig.cpp:2168 -msgid "Use firmware retraction" -msgstr "Usa retrazione firmware" - -#: src/libslic3r/PrintConfig.cpp:2169 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Questa funziona sperimentale utilizza i comandi G10 e G11 per permettere al " -"firmware la gestione della retrazione. E' supportata solo nel Marlin recenti." - -#: src/libslic3r/PrintConfig.cpp:2176 -msgid "Use relative E distances" -msgstr "Usa distanze E relative" - -#: src/libslic3r/PrintConfig.cpp:2177 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "" -"Se il firmware richiede valori E relativi, selezionalo, altrimenti lascialo " -"non selezionato. Molti firmware utilizzano valori assoluti." - -#: src/libslic3r/PrintConfig.cpp:2184 -msgid "Use volumetric E" -msgstr "Utilizza E volumetrico" - -#: src/libslic3r/PrintConfig.cpp:2185 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"Questa impostazione sperimentale produce un valore di E in uscita in " -"millimetri cubici anziché in millimetri lienari. Se il tuo firmware non sa " -"ancora qual'è il diametro del filamento, puoi inserire un comando tipo 'M200 " -"D[filament_diameter_0] T0' nel tuo G-code iniziale in modo da attivare la " -"funzione volumetrica e usare il diametro associato al filamento selezionato " -"su Slic3r. Questa funziona è supportata solo nel Marlin più recente." - -#: src/libslic3r/PrintConfig.cpp:2196 -msgid "Enable variable layer height feature" -msgstr "Abilita la funzione Layer ad altezza variabile" - -#: src/libslic3r/PrintConfig.cpp:2197 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" -"Alcune stampanti o setup di stampanti possono riscontrare difficoltà a " -"stampare con l'altezza layer variabile. Attivato come predefinito." - -#: src/libslic3r/PrintConfig.cpp:2204 -msgid "Wipe while retracting" -msgstr "Pulisci durante la retrazione" - -#: src/libslic3r/PrintConfig.cpp:2205 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "" -"Questo contrassegno farà spostare l'ugello durante la retrazione in modo da " -"minimizzare il possibile grumo su estrusori che perdono." - -#: src/libslic3r/PrintConfig.cpp:2213 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" -"Le stampanti multi-material potrebbero necessitare di caricare o spurgare " -"l'estrusore al cambio di strumento. Estrude il materiale in eccesso in una " -"torre di spurgo." - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Purging volumes - load/unload volumes" -msgstr "Volumi di purga - volumi di carico/scarico" - -#: src/libslic3r/PrintConfig.cpp:2221 -msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " -msgstr "" -"Questo vettore salva il volume necessario per cambiare da/a ognuno strumento " -"usato per la wipe tower. Questi valori vengono usati per semplificare la " -"creazione dei volumi di purga completi. " - -#: src/libslic3r/PrintConfig.cpp:2228 -msgid "Purging volumes - matrix" -msgstr "Volumi di purga - matrice" - -#: src/libslic3r/PrintConfig.cpp:2229 -msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " -msgstr "" -"Questa matrice descrive il volume (in millimetri cubici) necessario per " -"purgare il filamento nella wipe tower per una qualunque coppia di strumenti. " - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Position X" -msgstr "Posizione X" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "Coordinata X dell'angolo frontale sinistro di una torre di spurgo" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Position Y" -msgstr "Posizione Y" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Coordinata Y dell'angolo frontale sinistro di una torre di spurgo" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Width of a wipe tower" -msgstr "Larghezza della torre di spurgo" - -#: src/libslic3r/PrintConfig.cpp:2263 -msgid "Wipe tower rotation angle" -msgstr "Angolo di rotazione della wipe tower" - -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Angolo di rotazione della wipe tower rispetto all'asse X " - -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "gradi" - -#: src/libslic3r/PrintConfig.cpp:2272 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2273 -msgid "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2281 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2289 -msgid "Maximal bridging distance" -msgstr "Distanza massima di bridging" - -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Distanza massima tra supporti in sezioni a scarso riempimento. " - -#: src/libslic3r/PrintConfig.cpp:2297 -msgid "XY Size Compensation" -msgstr "Compensazione dimensione XY" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"L'oggetto verrà allargato/ristretto sul piano XY dal valore configurato " -"(negativo = verso l'interno, positivo = verso l'esterno). Questo può essere " -"utile per regolare la grandezza dei fori." - -#: src/libslic3r/PrintConfig.cpp:2308 -msgid "Z offset" -msgstr "Offset Z" - -#: src/libslic3r/PrintConfig.cpp:2309 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"Questo valore sarà aggiunto (o sottratto) da tutte le coordinate Z nel G-" -"code di output. Viene utilizzato per compensare una posizione di finecorsa Z " -"errata: per esempio, se la posizione minima del finecorsa rimane in realtà " -"0.3mm lontano dal piano, imposta questo valore a -0.3 (o sistema il " -"finecorsa)." - -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2380 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2381 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2387 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2389 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2396 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2402 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2410 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2411 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2489 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2494 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2496 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2512 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2514 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2521 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2523 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2530 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2531 -msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2540 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2542 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2546 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2548 -msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2557 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2559 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2566 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2568 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2575 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2577 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2584 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2586 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2593 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2595 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2631 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2636 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2645 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2654 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2663 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 -msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "Mischiate" - -#: src/libslic3r/GCode/PreviewData.cpp:396 -msgid "Height (mm)" -msgstr "Altezza (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Larghezza (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:400 -msgid "Speed (mm/s)" -msgstr "Velocità (mm/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:402 -msgid "Volumetric flow rate (mm3/s)" -msgstr "Flusso volumetrico (mm3/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" diff --git a/resources/localization/ko_KR/Slic3rPE.mo b/resources/localization/ko_KR/PrusaSlicer.mo similarity index 51% rename from resources/localization/ko_KR/Slic3rPE.mo rename to resources/localization/ko_KR/PrusaSlicer.mo index 32d5c6a20..1b9246671 100644 Binary files a/resources/localization/ko_KR/Slic3rPE.mo and b/resources/localization/ko_KR/PrusaSlicer.mo differ diff --git a/resources/localization/ko_KR/Slic3rPE.po b/resources/localization/ko_KR/PrusaSlicer_kr.po similarity index 67% rename from resources/localization/ko_KR/Slic3rPE.po rename to resources/localization/ko_KR/PrusaSlicer_kr.po index 60d15b889..ba8975367 100644 --- a/resources/localization/ko_KR/Slic3rPE.po +++ b/resources/localization/ko_KR/PrusaSlicer_kr.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: slic3rkorean\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: 2019-01-21 12:02+0100\n" +"POT-Creation-Date: 2019-04-09 14:34+0200\n" +"PO-Revision-Date: 2019-04-09 16:37+0200\n" "Last-Translator: Oleksandra Iushchenko \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -16,11 +16,11 @@ msgstr "" "X-Crowdin-Language: ko\n" "X-Crowdin-File: ko_KR.po\n" -#: src/slic3r/GUI/AboutDialog.cpp:33 +#: src/slic3r/GUI/AboutDialog.cpp:35 msgid "About Slic3r" msgstr "Slic3rì— ëŒ€í•˜ì—¬" -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 +#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52 msgid "Version" msgstr "버전" @@ -28,136 +28,136 @@ msgstr "버전" msgid "Shape" msgstr "모양" -#: src/slic3r/GUI/BedShapeDialog.cpp:50 +#: src/slic3r/GUI/BedShapeDialog.cpp:51 msgid "Rectangular" msgstr "ì§ì‚¬ê°í˜•" -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 +#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136 +#: src/slic3r/GUI/Tab.cpp:2185 msgid "Size" msgstr "사ì´ì¦ˆ" -#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/BedShapeDialog.cpp:56 msgid "Size in X and Y of the rectangular plate." msgstr "사격형 플레ì´íЏ X ë° Y í¬ê¸°." -#: src/slic3r/GUI/BedShapeDialog.cpp:61 +#: src/slic3r/GUI/BedShapeDialog.cpp:62 msgid "Origin" msgstr "ì›ë³¸" -#: src/slic3r/GUI/BedShapeDialog.cpp:62 +#: src/slic3r/GUI/BedShapeDialog.cpp:63 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." msgstr "사ê°í˜•ì˜ ì „ë©´ ì™¼ìª½ëœ ëª¨ì„œë¦¬ì—서 0, 0 G-코드 좌표 거리입니다." -#: src/slic3r/GUI/BedShapeDialog.cpp:66 +#: src/slic3r/GUI/BedShapeDialog.cpp:67 msgid "Circular" msgstr "ì›í˜•" -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 +#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111 +#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 +#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:209 +#: src/libslic3r/PrintConfig.cpp:284 src/libslic3r/PrintConfig.cpp:292 +#: src/libslic3r/PrintConfig.cpp:342 src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:483 +#: src/libslic3r/PrintConfig.cpp:501 src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1244 src/libslic3r/PrintConfig.cpp:1262 +#: src/libslic3r/PrintConfig.cpp:1314 src/libslic3r/PrintConfig.cpp:1324 +#: src/libslic3r/PrintConfig.cpp:1445 src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1494 src/libslic3r/PrintConfig.cpp:1502 +#: src/libslic3r/PrintConfig.cpp:1512 src/libslic3r/PrintConfig.cpp:1520 +#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1611 +#: src/libslic3r/PrintConfig.cpp:1827 src/libslic3r/PrintConfig.cpp:1897 +#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123 +#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293 +#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377 +#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450 +#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506 +#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532 +#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555 msgid "mm" msgstr "mm" -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 +#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676 msgid "Diameter" msgstr "ë…¸ì¦ ì§ê²½" -#: src/slic3r/GUI/BedShapeDialog.cpp:71 +#: src/slic3r/GUI/BedShapeDialog.cpp:72 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "ì¸ì‡„ ì¹¨ëŒ€ì˜ ì§ê²½. ì›ì  (0,0) ì€ ì¤‘ì‹¬ì— ìžˆë‹¤ê³  가정합니다." -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 +#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239 #: src/libslic3r/GCode/PreviewData.cpp:175 msgid "Custom" msgstr "커스터" -#: src/slic3r/GUI/BedShapeDialog.cpp:79 +#: src/slic3r/GUI/BedShapeDialog.cpp:80 msgid "Load shape from STL..." msgstr "STLíŒŒì¼ ë¡œë“œ." -#: src/slic3r/GUI/BedShapeDialog.cpp:125 +#: src/slic3r/GUI/BedShapeDialog.cpp:126 msgid "Settings" msgstr "설정" -#: src/slic3r/GUI/BedShapeDialog.cpp:298 +#: src/slic3r/GUI/BedShapeDialog.cpp:299 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "침대 모양 (STL/OBJ/AMF/3MF/PRUSA) ì—서 가져오려는 파ì¼ì„ ì„ íƒ í•©ë‹ˆë‹¤:" -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 +#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252 msgid "Error! " msgstr "ì—러! " -#: src/slic3r/GUI/BedShapeDialog.cpp:324 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 msgid "The selected file contains no geometry." msgstr "ì„ íƒí•œ 파ì¼ì—는 형ìƒì´ 없는 í¬í•¨ ë˜ì–´ 있습니다." -#: src/slic3r/GUI/BedShapeDialog.cpp:328 +#: src/slic3r/GUI/BedShapeDialog.cpp:329 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" "ì„ íƒí•œ íŒŒì¼ ì—¬ëŸ¬ 분리 ëœ ì˜ì—­ì„ í¬í•¨ ë˜ì–´ 있습니다. ì´ ì§€ì› ë˜ì§€ 않습니다." -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507 msgid "Bed Shape" msgstr "배드 모양" -#: src/slic3r/GUI/BonjourDialog.cpp:54 +#: src/slic3r/GUI/BonjourDialog.cpp:55 msgid "Network lookup" msgstr "ë„¤íŠ¸ì›Œí¬ ì¡°íšŒ" -#: src/slic3r/GUI/BonjourDialog.cpp:67 +#: src/slic3r/GUI/BonjourDialog.cpp:72 msgid "Address" msgstr "주소" -#: src/slic3r/GUI/BonjourDialog.cpp:68 +#: src/slic3r/GUI/BonjourDialog.cpp:73 msgid "Hostname" msgstr "호스트ì´ë¦„" -#: src/slic3r/GUI/BonjourDialog.cpp:69 +#: src/slic3r/GUI/BonjourDialog.cpp:74 msgid "Service name" msgstr "서비스 ì´ë¦„" -#: src/slic3r/GUI/BonjourDialog.cpp:70 +#: src/slic3r/GUI/BonjourDialog.cpp:76 msgid "OctoPrint version" msgstr "옥토프린트 버전" -#: src/slic3r/GUI/BonjourDialog.cpp:188 +#: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "디바ì´ìФ 검색" -#: src/slic3r/GUI/BonjourDialog.cpp:195 +#: src/slic3r/GUI/BonjourDialog.cpp:225 msgid "Finished" msgstr "완료" @@ -176,113 +176,118 @@ msgid "" msgstr "" "ê°’ì´ ë³€ê²½ ë˜ì—ˆê³  시스템 ê°’ ë˜ëŠ” 마지막으로 저장 ëœ ì‚¬ì „ 설정과 같지 않ìŒ" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17 msgid "Upgrade" msgstr "업그레ì´ë“œ" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19 msgid "Downgrade" msgstr "다운그레ì´ë“œ" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21 msgid "Before roll back" msgstr "롤백 ì „ì—" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23 msgid "User" msgstr "사용ìž" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26 msgid "Unknown" msgstr "알 수 ì—†ìŒ" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38 msgid "Active: " msgstr "활성: " -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 msgid "slic3r version" msgstr "slic3rì— ëŒ€í•˜ì—¬" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250 msgid "print" msgstr "프린트" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 msgid "filaments" msgstr "í•„ë¼ë©˜íЏ" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254 msgid "printer" msgstr "프린터" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872 msgid "vendor" msgstr "벤ë”" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 msgid "version" msgstr "버전" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 msgid "min slic3r version" msgstr "최소 slic3r 버전" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54 msgid "max slic3r version" msgstr "최대 slic3r 버전" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "model" msgstr "모ë¸" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "variants" msgstr "변종" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 msgid "Incompatible with this Slic3r" msgstr "ì´ Slic3r와 호환 ë˜ì§€ 않ìŒ" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72 msgid "Activate" msgstr "활성화" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98 msgid "Configuration Snapshots" msgstr "구성 스냅ìˆ" -#: src/slic3r/GUI/ConfigWizard.cpp:92 +#: src/slic3r/GUI/ConfigWizard.cpp:111 msgid "nozzle" msgstr "ë…¸ì¦" -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "기본값" +#: src/slic3r/GUI/ConfigWizard.cpp:115 +msgid "Alternate nozzles:" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" +#: src/slic3r/GUI/ConfigWizard.cpp:181 +msgid "All standard" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909 +msgid "All" msgstr "ëª¨ë‘ ì„ íƒ" -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "ì„ íƒ ì—†ìŒ" +#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414 +#: src/libslic3r/GCode/PreviewData.cpp:162 +msgid "None" +msgstr "ì—†ìŒ" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:284 #, c-format msgid "Welcome to the Slic3r %s" msgstr "Slic3r %sì— ì˜¤ì‹ ê²ƒì„ í™˜ì˜ í•©ë‹ˆë‹¤" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:284 msgid "Welcome" msgstr "환ì˜í•©ë‹ˆë‹¤" -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 +#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600 #, c-format msgid "Run %s" msgstr "%s 실행" -#: src/slic3r/GUI/ConfigWizard.cpp:234 +#: src/slic3r/GUI/ConfigWizard.cpp:290 #, c-format msgid "" "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " @@ -291,33 +296,46 @@ msgstr "" "안녕하세요, Slic3r prusa ë²„ì „ì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜ í•©ë‹ˆë‹¤! ì´ %s 초기 구성;ì— ë„" "ì›€ì´ ë©ë‹ˆë‹¤. 단지 몇 가지 설정 하 ê³  ë‹¹ì‹ ì€ ì¸ì‡„ 준비가 ë  ê²ƒìž…ë‹ˆë‹¤." -#: src/slic3r/GUI/ConfigWizard.cpp:238 +#: src/slic3r/GUI/ConfigWizard.cpp:294 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" msgstr "ì‚¬ìš©ìž í”„ë¡œí•„ 제거-처ìŒë¶€í„° 설치 (스냅ìˆì€ ì‚¬ì „ì— ìˆ˜í–‰ ë©ë‹ˆë‹¤)" -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "다른 공급 ì—…ì²´" +#: src/slic3r/GUI/ConfigWizard.cpp:325 +#, c-format +msgid "%s Family" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "ì‚¬ìš©ìž ì§€ì • 설치" +#: src/slic3r/GUI/ConfigWizard.cpp:362 +msgid "Custom Printer Setup" +msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:362 +msgid "Custom Printer" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:364 +msgid "Define a custom printer profile" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:366 +msgid "Custom profile name:" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:390 msgid "Automatic updates" msgstr "ìžë™ ì—…ë°ì´íЏ" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:390 msgid "Updates" msgstr "ì—…ë°ì´íЏ" -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 +#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59 msgid "Check for application updates" msgstr "프로그램 ì—…ë°ì´íЏ 확ì¸" -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 +#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 msgid "" "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " "version becomes available a notification is displayed at the next " @@ -329,11 +347,11 @@ msgstr "" "ì—는 절대로 사용하지 마십시오). ì´ê²ƒì€ 알림 메커니즘 ì¼ë¿ ìžë™ 설치가 수행ë˜" "ì§€ 않습니다." -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 +#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67 msgid "Update built-in Presets automatically" msgstr "ê¸°ì¡´ì˜ ì„¤ì • ìžë™ ì—…ë°ì´íЏ" -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " @@ -344,7 +362,7 @@ msgstr "" "운로드합니다. ì´ëŸ¬í•œ ì—…ë°ì´íŠ¸ëŠ” 별ë„ì˜ ìž„ì‹œ ìœ„ì¹˜ì— ë‹¤ìš´ë¡œë“œë©ë‹ˆë‹¤. 새로운 사" "ì „ 설정 ë²„ì „ì„ ì‚¬ìš©í•  수있게ë˜ë©´ ì‘ìš© 프로그램 시작시 제공ë©ë‹ˆë‹¤." -#: src/slic3r/GUI/ConfigWizard.cpp:308 +#: src/slic3r/GUI/ConfigWizard.cpp:409 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." @@ -352,61 +370,61 @@ msgstr "" "ì—…ë°ì´íŠ¸ëŠ” 사용ìžì˜ ë™ì˜ì—†ì´ ì ìš©ë˜ì§€ 않으며 사용ìžì˜ ì‚¬ìš©ìž ì§€ì •ëœ ì„¤ì •ì„ ë®" "ì–´ ì“°ì§€ 않습니다." -#: src/slic3r/GUI/ConfigWizard.cpp:313 +#: src/slic3r/GUI/ConfigWizard.cpp:414 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "ë˜í•œ ì—…ë°ì´íŠ¸ê°€ ì ìš©ë˜ê¸° ì „ì— ì „ì²´ êµ¬ì„±ì˜ ë°±ì—… 스냅 ìƒ·ì´ ìƒì„±ë©ë‹ˆë‹¤." -#: src/slic3r/GUI/ConfigWizard.cpp:320 +#: src/slic3r/GUI/ConfigWizard.cpp:421 msgid "Other Vendors" msgstr "다른 공급 ì—…ì²´" -#: src/slic3r/GUI/ConfigWizard.cpp:322 +#: src/slic3r/GUI/ConfigWizard.cpp:423 msgid "Pick another vendor supported by Slic3r PE:" msgstr "Slic3r PEê°€ ì§€ì›í•˜ëŠ” 다른 공급 업체를 ì„ íƒí•˜ì‹­ì‹œì˜¤:" -#: src/slic3r/GUI/ConfigWizard.cpp:381 +#: src/slic3r/GUI/ConfigWizard.cpp:469 msgid "Firmware Type" msgstr "펌웨어 타입" -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 +#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870 msgid "Firmware" msgstr "펌웨어" -#: src/slic3r/GUI/ConfigWizard.cpp:385 +#: src/slic3r/GUI/ConfigWizard.cpp:473 msgid "Choose the type of firmware used by your printer." msgstr "í”„ë¦°í„°ì— íŒ¨ì¹˜í•  펌웨어를 ì„ íƒí•˜ì„¸ìš”." -#: src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/ConfigWizard.cpp:507 msgid "Bed Shape and Size" msgstr "배드 모양과 í¬ê¸°" -#: src/slic3r/GUI/ConfigWizard.cpp:422 +#: src/slic3r/GUI/ConfigWizard.cpp:510 msgid "Set the shape of your printer's bed." msgstr "프린터 ë°°ë“œëª¨ì–‘ì„ ì„¤ì •í•˜ì„¸ìš”." -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:524 msgid "Filament and Nozzle Diameters" msgstr "í•„ë¼ë©˜íŠ¸ì™€ ë…¸ì¦ í¬ê¸°" -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:524 msgid "Print Diameters" msgstr "ì¸ì‡„ ì§ê²½" -#: src/slic3r/GUI/ConfigWizard.cpp:452 +#: src/slic3r/GUI/ConfigWizard.cpp:540 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "í•« 엔드 ë…¸ì¦ ì§ê²½ì„ 입력하십시오." -#: src/slic3r/GUI/ConfigWizard.cpp:455 +#: src/slic3r/GUI/ConfigWizard.cpp:543 msgid "Nozzle Diameter:" msgstr "ë…¸ì¦ ì§ê²½:" -#: src/slic3r/GUI/ConfigWizard.cpp:465 +#: src/slic3r/GUI/ConfigWizard.cpp:553 msgid "Enter the diameter of your filament." msgstr "í•„ë¼ë©˜íŠ¸ì˜ ì§ê²½ì„ 입력하십시오." -#: src/slic3r/GUI/ConfigWizard.cpp:466 +#: src/slic3r/GUI/ConfigWizard.cpp:554 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." @@ -414,41 +432,41 @@ msgstr "" "ì •ë°€ë„ê°€ 필요하므로 캘리í¼ë¥¼ 사용하여 í•„ë¼ë©˜íŠ¸ë¥¼ ë”°ë¼ ì—¬ëŸ¬ 번 측정 한 ë‹¤ìŒ í‰" "ê· ì„ ê³„ì‚°í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/ConfigWizard.cpp:469 +#: src/slic3r/GUI/ConfigWizard.cpp:557 msgid "Filament Diameter:" msgstr "í•„ë¼ë©˜íЏ ì§ê²½:" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "Extruder and Bed Temperatures" msgstr "ìµìŠ¤íŠ¸ë£¨ë”와 배드 온ë„" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "Temperatures" msgstr "온ë„" -#: src/slic3r/GUI/ConfigWizard.cpp:503 +#: src/slic3r/GUI/ConfigWizard.cpp:591 msgid "Enter the temperature needed for extruding your filament." msgstr "í•„ë¼ë©˜íЏ ì••ì¶œì— í•„ìš”í•œ 온ë„를 입력하십시오." -#: src/slic3r/GUI/ConfigWizard.cpp:504 +#: src/slic3r/GUI/ConfigWizard.cpp:592 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "보통 PLAì˜ ê²½ìš° 160 ~ 230 ° C, ABSì˜ ê²½ìš° 215 ~ 250 ° C입니다." -#: src/slic3r/GUI/ConfigWizard.cpp:507 +#: src/slic3r/GUI/ConfigWizard.cpp:595 msgid "Extrusion Temperature:" msgstr "출력 ì˜¨ë„ :" -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 +#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610 msgid "°C" msgstr "°C" -#: src/slic3r/GUI/ConfigWizard.cpp:517 +#: src/slic3r/GUI/ConfigWizard.cpp:605 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "í•„ë¼ë©˜íŠ¸ê°€ í•«ë°°ë“œì— ì ‘ì°©í•˜ëŠ”ë° í•„ìš”í•œ 배드온ë„를 입력하십시오." -#: src/slic3r/GUI/ConfigWizard.cpp:518 +#: src/slic3r/GUI/ConfigWizard.cpp:606 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." @@ -456,62 +474,78 @@ msgstr "" "ë³´í†µì€ PLAì˜ ê²½ìš° 60 ° Cì´ê³  ABSì˜ ê²½ìš° 110 ° C입니다. 핫배드가 없는 경우ì—" "는 0으로 ë‘십시오." -#: src/slic3r/GUI/ConfigWizard.cpp:521 +#: src/slic3r/GUI/ConfigWizard.cpp:609 msgid "Bed Temperature:" msgstr "배드 ì˜¨ë„ :" -#: src/slic3r/GUI/ConfigWizard.cpp:833 +#: src/slic3r/GUI/ConfigWizard.cpp:1001 +msgid "Select all standard printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1004 msgid "< &Back" msgstr "< &뒤로" -#: src/slic3r/GUI/ConfigWizard.cpp:834 +#: src/slic3r/GUI/ConfigWizard.cpp:1005 msgid "&Next >" msgstr "&ë‹¤ìŒ >" -#: src/slic3r/GUI/ConfigWizard.cpp:835 +#: src/slic3r/GUI/ConfigWizard.cpp:1006 msgid "&Finish" msgstr "&완료" -#: src/slic3r/GUI/ConfigWizard.cpp:906 +#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 +#: src/slic3r/GUI/ProgressStatusBar.cpp:28 +msgid "Cancel" +msgstr "취소" + +#: src/slic3r/GUI/ConfigWizard.cpp:1021 +msgid "Prusa FFF Technology Printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1024 +msgid "Prusa MSLA Technology Printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1111 msgid "Configuration Wizard" msgstr "구성 마법사" -#: src/slic3r/GUI/ConfigWizard.cpp:907 +#: src/slic3r/GUI/ConfigWizard.cpp:1112 msgid "Configuration &Wizard" msgstr "구성 마법사" -#: src/slic3r/GUI/ConfigWizard.cpp:909 +#: src/slic3r/GUI/ConfigWizard.cpp:1114 msgid "Configuration Assistant" msgstr "구성 ë„우미" -#: src/slic3r/GUI/ConfigWizard.cpp:910 +#: src/slic3r/GUI/ConfigWizard.cpp:1115 msgid "Configuration &Assistant" msgstr "구성 ë„우미" -#: src/slic3r/GUI/Field.cpp:109 +#: src/slic3r/GUI/Field.cpp:112 msgid "default value" msgstr "" -#: src/slic3r/GUI/Field.cpp:112 +#: src/slic3r/GUI/Field.cpp:115 msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:140 +#: src/slic3r/GUI/Field.cpp:143 #, c-format msgid "%s doesn't support percentage" msgstr "%s ì´(ê°€) ë°±ë¶„ìœ¨ì„ ì§€ì›í•˜ì§€ 않ìŒ" -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" +#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180 +msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:153 +#: src/slic3r/GUI/Field.cpp:162 msgid "Input value is out of range" msgstr "Input value is out of range" -#: src/slic3r/GUI/Field.cpp:176 +#: src/slic3r/GUI/Field.cpp:188 #, c-format msgid "" "Do you mean %d%% instead of %d %s?\n" @@ -519,40 +553,35 @@ msgid "" "or NO if you are sure that %d %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:179 +#: src/slic3r/GUI/Field.cpp:191 msgid "Parameter validation" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:133 +#: src/slic3r/GUI/FirmwareDialog.cpp:141 msgid "Flash!" msgstr "완료!" -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "취소" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 +#: src/slic3r/GUI/FirmwareDialog.cpp:143 msgid "Flashing in progress. Please do not disconnect the printer!" msgstr "ì•„ì§ í”Œëž˜ì‹± 중입니다. 커넥트를 분리하지 마십시오!" -#: src/slic3r/GUI/FirmwareDialog.cpp:245 +#: src/slic3r/GUI/FirmwareDialog.cpp:187 +msgid "Flashing failed: " +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:268 msgid "Flashing succeeded!" msgstr "플래싱 성공!" -#: src/slic3r/GUI/FirmwareDialog.cpp:246 +#: src/slic3r/GUI/FirmwareDialog.cpp:269 msgid "Flashing failed. Please see the avrdude log below." msgstr "플래시 실패. ì•„ëž˜ì˜ ë¡œê·¸ë¥¼ 확ì¸í•˜ì„¸ìš”." -#: src/slic3r/GUI/FirmwareDialog.cpp:247 +#: src/slic3r/GUI/FirmwareDialog.cpp:270 msgid "Flashing cancelled." msgstr "깜빡임 취소ë¨." -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 +#: src/slic3r/GUI/FirmwareDialog.cpp:308 #, c-format msgid "" "This firmware hex file does not match the printer model.\n" @@ -563,58 +592,77 @@ msgid "" "Please only continue if you are sure this is the right thing to do." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 +#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431 +#, c-format msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." +"Multiple %s devices found. Please only connect one at a time for flashing." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" +#: src/slic3r/GUI/FirmwareDialog.cpp:412 +#, c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB " +"connector ..." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:581 +#: src/slic3r/GUI/FirmwareDialog.cpp:525 +#, c-format +msgid "The %s device could not have been found" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:603 #, c-format msgid "Error accessing port at %s: %s" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:690 +#: src/slic3r/GUI/FirmwareDialog.cpp:605 +#, c-format +msgid "Error: %s" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:735 msgid "Firmware flasher" msgstr "펌웨어 플래셔" -#: src/slic3r/GUI/FirmwareDialog.cpp:712 +#: src/slic3r/GUI/FirmwareDialog.cpp:762 msgid "Firmware image:" msgstr "펌웨어 ì´ë¯¸ì§€:" -#: src/slic3r/GUI/FirmwareDialog.cpp:716 +#: src/slic3r/GUI/FirmwareDialog.cpp:766 msgid "Serial port:" msgstr "시리얼 í¬íЏ:" -#: src/slic3r/GUI/FirmwareDialog.cpp:718 +#: src/slic3r/GUI/FirmwareDialog.cpp:768 msgid "Autodetected" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:719 +#: src/slic3r/GUI/FirmwareDialog.cpp:769 msgid "Rescan" msgstr "재검색" -#: src/slic3r/GUI/FirmwareDialog.cpp:726 +#: src/slic3r/GUI/FirmwareDialog.cpp:776 msgid "Progress:" msgstr "ì§„í–‰:" -#: src/slic3r/GUI/FirmwareDialog.cpp:729 +#: src/slic3r/GUI/FirmwareDialog.cpp:779 msgid "Status:" msgstr "지위:" -#: src/slic3r/GUI/FirmwareDialog.cpp:730 +#: src/slic3r/GUI/FirmwareDialog.cpp:780 msgid "Ready" msgstr "준비" -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "고급: avrdude 로그 출력" +#: src/slic3r/GUI/FirmwareDialog.cpp:800 +msgid "Advanced: Output log" +msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:809 +#: src/slic3r/GUI/FirmwareDialog.cpp:811 +#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +msgid "Close" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:859 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" @@ -622,159 +670,247 @@ msgstr "" "펌웨어 í”Œëž˜ì‹±ì„ ì·¨ì†Œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n" "프린터가 사용할 수 없는 ìƒíƒœê°€ ë  ìˆ˜ 있습니다!" -#: src/slic3r/GUI/FirmwareDialog.cpp:810 +#: src/slic3r/GUI/FirmwareDialog.cpp:860 msgid "Confirmation" msgstr "확ì¸" -#: src/slic3r/GUI/FirmwareDialog.cpp:813 +#: src/slic3r/GUI/FirmwareDialog.cpp:863 msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 +#: src/slic3r/GUI/GLCanvas3D.cpp:709 msgid "Detected object outside print volume" msgstr "ì¶œë ¥ë¬¼ì´ í”„ë¦°í„° 출력 사ì´ì¦ˆë¥¼ 넘었습니다" -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 +#: src/slic3r/GUI/GLCanvas3D.cpp:710 msgid "Detected toolpath outside print volume" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "회전" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" +#: src/slic3r/GUI/GLCanvas3D.cpp:711 +msgid "Some objects are not visible when editing supports" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "í¬ê¸°" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" +#: src/slic3r/GUI/GLCanvas3D.cpp:713 +msgid "" +"Detected object outside print volume\n" +"Resolve a clash to continue slicing/export process correctly" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 msgid "Rotate lower part upwards" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 msgid "Perform cut" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2276 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 msgid "Cut object:" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 +msgid "Cut [C]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006 msgid "Cut" msgstr "ìžë¥´ê¸°" -#: src/slic3r/GUI/GLGizmo.cpp:2466 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 msgid "Keep upper part" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2467 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 msgid "Keep lower part" msgstr "" -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "공지" +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 +msgid "Place on face [F]" +msgstr "" -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "참조 ë˜ì§€ ì•Šì€ ìŠ¤ì¹¼ë¼ë¥¼ 비우려고" +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 +msgid "Move [M]" +msgstr "" -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +msgid "Position (mm)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +msgid "Displacement (mm)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 +msgid "Rotate [R]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 +msgid "Rotation (deg)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 +msgid "Scale [S]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 +msgid "Scale (%)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 +msgid "Left mouse click - add point" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 +msgid "Right mouse click - remove point" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 +msgid "Shift + Left (+ drag) - select point(s)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606 +msgid "Head diameter: " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618 +msgid "Lock supports under new islands" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622 +msgid "Remove selected points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679 +msgid "Remove all points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +msgid "Apply changes" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636 +msgid "Discard changes" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644 +msgid "Minimal points distance: " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655 +msgid "Support points density: " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 +msgid "Auto-generate points [A]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 +msgid "Manual editing [M]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738 +msgid "SLA Support Points [L]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767 +msgid "Do you want to save your manually edited support points ?\n" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768 +msgid "Save changes?" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 +msgid "" +"Autogeneration will erase all manually edited points.\n" +"\n" +"Are you sure you want to do it?\n" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" msgstr "위험" -#: src/slic3r/GUI/GUI_App.cpp:377 +#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "" + +#: src/slic3r/GUI/GUI.cpp:148 +msgid "Please check and fix your object list." +msgstr "" + +#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679 +#: src/slic3r/GUI/Tab.cpp:2722 +msgid "Attention!" +msgstr "주목!" + +#: src/slic3r/GUI/GUI.cpp:282 +msgid "Notice" +msgstr "공지" + +#: src/slic3r/GUI/GUI_App.cpp:318 +msgid "Changing of an application language" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335 +msgid "Recreating" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:339 +msgid "Loading of a current presets" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:347 +msgid "Loading of a mode view" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:429 msgid "Choose one file (3MF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:389 +#: src/slic3r/GUI/GUI_App.cpp:441 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "파ì¼ì„ ì„ íƒí•˜ì„¸ìš” (STL/OBJ/AMF/3MF/PRUSA):" -#: src/slic3r/GUI/GUI_App.cpp:451 +#: src/slic3r/GUI/GUI_App.cpp:454 msgid "Array of language names and identifiers should have the same size." msgstr "언어 ì´ë¦„ê³¼ ì‹ë³„ìž ë°°ì—´ì€ ê°™ì€ í¬ê¸° 여야합니다." -#: src/slic3r/GUI/GUI_App.cpp:461 +#: src/slic3r/GUI/GUI_App.cpp:464 msgid "Select the language" msgstr "언어를 ì„ íƒ" -#: src/slic3r/GUI/GUI_App.cpp:461 +#: src/slic3r/GUI/GUI_App.cpp:464 msgid "Language" msgstr "언어" -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 +#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067 +#: src/libslic3r/PrintConfig.cpp:298 msgid "Default" msgstr "기본값" # xs/src/slic3r/GUI/GUI.cpp:349 -#: src/slic3r/GUI/GUI_App.cpp:609 +#: src/slic3r/GUI/GUI_App.cpp:603 msgid "&Configuration Snapshots" msgstr "구성 스냅ìˆ" -#: src/slic3r/GUI/GUI_App.cpp:609 +#: src/slic3r/GUI/GUI_App.cpp:603 msgid "Inspect / activate configuration snapshots" msgstr "구성 스냅 샷 검사 / 활성화" -#: src/slic3r/GUI/GUI_App.cpp:610 +#: src/slic3r/GUI/GUI_App.cpp:604 msgid "Take Configuration &Snapshot" msgstr "구성 스냅 샷 가져 오기" -#: src/slic3r/GUI/GUI_App.cpp:610 +#: src/slic3r/GUI/GUI_App.cpp:604 msgid "Capture a configuration snapshot" msgstr "구성 스냅 샷 캡처" -#: src/slic3r/GUI/GUI_App.cpp:613 +#: src/slic3r/GUI/GUI_App.cpp:607 msgid "&Preferences" msgstr "환경 설정" @@ -782,7 +918,7 @@ msgstr "환경 설정" msgid "Application preferences" msgstr "ì‘ìš© 프로그램 환경 설정" -#: src/slic3r/GUI/GUI_App.cpp:616 +#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446 msgid "Simple" msgstr "" @@ -790,12 +926,14 @@ msgstr "" msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 +#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73 +#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992 +#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093 +#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890 +#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186 +#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987 +#: src/libslic3r/PrintConfig.cpp:2173 msgid "Advanced" msgstr "고급" @@ -803,7 +941,7 @@ msgstr "고급" msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:618 +#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448 msgid "Expert" msgstr "" @@ -811,574 +949,713 @@ msgstr "" msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:620 +#: src/slic3r/GUI/GUI_App.cpp:623 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:620 +#: src/slic3r/GUI/GUI_App.cpp:623 msgid "Slic3r View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:622 +#: src/slic3r/GUI/GUI_App.cpp:625 msgid "Change Application &Language" msgstr "ì‘ìš© 프로그램 언어 번경" -#: src/slic3r/GUI/GUI_App.cpp:624 +#: src/slic3r/GUI/GUI_App.cpp:627 msgid "Flash printer &firmware" msgstr "프린터 펌웨어 플래시" -#: src/slic3r/GUI/GUI_App.cpp:624 +#: src/slic3r/GUI/GUI_App.cpp:627 msgid "Upload a firmware image into an Arduino based printer" msgstr "ì•„ë‘ì´ë…¸ ê¸°ë°˜ì˜ í”„ë¦°í„° ì´ë¯¸ì§€ 업로드" -#: src/slic3r/GUI/GUI_App.cpp:636 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "Taking configuration snapshot" msgstr "구성 스냅 샷 만들기" -#: src/slic3r/GUI/GUI_App.cpp:636 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "Snapshot name" msgstr "스냅 샷 ì´ë¦„" -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "애플리케ì´ì…˜ì´ 다시 시작ë¨" +#: src/slic3r/GUI/GUI_App.cpp:676 +msgid "Application will be restarted after language change." +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "주목!" +#: src/slic3r/GUI/GUI_App.cpp:677 +msgid "3D-Scene will be cleaned." +msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:691 +#: src/slic3r/GUI/GUI_App.cpp:678 +msgid "Please, check your changes before." +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:706 msgid "&Configuration" msgstr "&구성" -#: src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/GUI_App.cpp:726 msgid "You have unsaved changes " msgstr "저장ë˜ì§€ ì•Šì€ ë³€ê²½ ì‚¬í•­ì´ ìžˆìŠµë‹ˆë‹¤ " -#: src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/GUI_App.cpp:726 msgid ". Discard changes and continue anyway?" msgstr ". 변경 ì‚¬í•­ì„ ì·¨ì†Œí•˜ê³  ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" -#: src/slic3r/GUI/GUI_App.cpp:712 +#: src/slic3r/GUI/GUI_App.cpp:727 msgid "Unsaved Presets" msgstr "저장ë˜ì§€ ì•Šì€ ê¸°ì¡´ì„¤ì •" -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65 +#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149 +#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1304 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042 msgid "Layers and Perimeters" msgstr "ë ˆì´ì–´ ë° ê²½ê³„ì„ " -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66 +#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981 +#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742 +#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997 +#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675 msgid "Infill" msgstr "ì¸í•„(채움)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67 +#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010 +#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333 +#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779 +#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1793 +#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1815 +#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1838 +#: src/libslic3r/PrintConfig.cpp:1859 src/libslic3r/PrintConfig.cpp:1870 +#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1904 src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1929 src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1947 +#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969 +#: src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" msgstr "서í¬íЏ 재료(Support material)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "ì†ë„" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667 +#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877 +#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157 msgid "Extruders" msgstr "ìµìŠ¤íŠ¸ë£¨ë”" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 +msgid "Pad and Support" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215 +#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198 +#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870 +#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360 +#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646 +#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028 +msgid "Speed" +msgstr "ì†ë„" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829 +#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860 +#: src/libslic3r/PrintConfig.cpp:2017 msgid "Extrusion Width" msgstr "ì••ì¶œ í­" -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410 +#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310 +#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384 +#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420 +#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438 +#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476 +#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2504 msgid "Supports" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 +#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337 +#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553 +#: src/libslic3r/PrintConfig.cpp:2562 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 +#: src/slic3r/GUI/GUI_ObjectList.cpp:173 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45 msgid "Name" msgstr "ì´ë¦„" -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 +#: src/slic3r/GUI/GUI_ObjectList.cpp:201 msgid "Right button click the icon to change the object settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:209 #, c-format msgid "Auto-repaired (%d errors):\n" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:212 msgid "degenerate facets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 +#: src/slic3r/GUI/GUI_ObjectList.cpp:213 msgid "edges fixed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 +#: src/slic3r/GUI/GUI_ObjectList.cpp:214 msgid "facets removed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 +#: src/slic3r/GUI/GUI_ObjectList.cpp:215 msgid "facets added" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:216 msgid "facets reversed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:217 msgid "backwards edges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 +#: src/slic3r/GUI/GUI_ObjectList.cpp:231 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 +#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430 +#: src/libslic3r/PrintConfig.cpp:454 msgid "Extruder" msgstr "ìµìŠ¤íŠ¸ë£¨ë”(Extruder)" -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 +#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963 +#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199 +#, c-format +msgid "Quick Add Settings (%s)" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:746 msgid "Select showing settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:874 msgid "Load" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911 +#: src/slic3r/GUI/GUI_ObjectList.cpp:914 msgid "Box" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Cylinder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Sphere" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Slab" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 +#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906 msgid "Add part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 +#: src/slic3r/GUI/GUI_ObjectList.cpp:891 msgid "Add modifier" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 +#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910 msgid "Add support enforcer" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 +#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913 msgid "Add support blocker" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 +#: src/slic3r/GUI/GUI_ObjectList.cpp:934 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:942 msgid "Add settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 msgid "Change type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1016 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +msgid "Set as a Separated Object" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1024 +msgid "Rename" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1034 +msgid "Fix through the Netfabb" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861 +msgid "Export as STL" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1048 +msgid "Change extruder" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1073 +msgid "Select new extruder for the object/part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825 +#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860 +msgid "Delete" +msgstr "지우기(delete)" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +msgid "Set as a Separated Objects" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1374 +msgid "Generic" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1516 msgid "You can't delete the last solid part from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1533 msgid "You can't delete the last intance from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" "ì„ íƒí•œ 오브ì íŠ¸ëŠ” 파트가 하나만 í¬í•¨ë˜ì–´ 있기 ë•Œë¬¸ì— ë¶„í•  í•  수 없습니다." -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1676 msgid "Group manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1688 msgid "Object manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1698 msgid "Object Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1702 msgid "Part Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 msgid "Part manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1717 msgid "Instance manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +msgid "Object or Instance" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +msgid "Part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +msgid "Unsupported selection" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 +#, c-format +msgid "You started your selection with %s Item." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2244 +#, c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 +msgid "of a current Object" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2252 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117 +msgid "Info" +msgstr "ì •ë³´" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2366 msgid "You can't change a type of the last solid part of the object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2373 msgid "Select type of part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "Enter new name" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "Renaming" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2554 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191 +#: src/slic3r/GUI/Tab.cpp:3195 msgid "The supplied name is not valid;" msgstr "ì œê³µëœ ì´ë¦„ì´ ìœ íš¨í•˜ì§€ 않습니다;" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2555 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192 msgid "the following characters are not allowed:" msgstr "ë‹¤ìŒ ë¬¸ìžëŠ” 허용ë˜ì§€ 않습니다:" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2653 +msgid "Set extruder for selected items" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2654 +msgid "Select extruder number for selected objects and/or parts" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2667 +msgid "Select extruder number:" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2668 +msgid "This extruder will be set for selected items" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25 msgid "Object Manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47 msgid "Object name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160 msgid "Position" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Rotation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3070 +msgid "Scale" +msgstr "í¬ê¸°" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162 msgid "Scale factors" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220 +#: src/libslic3r/PrintConfig.cpp:3055 +msgid "Rotate" +msgstr "회전" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219 msgid "Translate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 +msgid "Additional Settings" +msgstr "" + +#: src/slic3r/GUI/GUI_Preview.cpp:209 msgid "View" msgstr "View" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525 #: src/libslic3r/GCode/PreviewData.cpp:394 msgid "Feature type" msgstr "특색 유형" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467 msgid "Height" msgstr "높ì´" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135 msgid "Width" msgstr "í­" -#: src/slic3r/GUI/GUI_Preview.cpp:242 +#: src/slic3r/GUI/GUI_Preview.cpp:216 msgid "Volumetric flow rate" msgstr "ìš©ì ì˜ 유량값" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525 +#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404 msgid "Tool" msgstr "ë„구" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523 #: src/libslic3r/GCode/PreviewData.cpp:406 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:247 +#: src/slic3r/GUI/GUI_Preview.cpp:221 msgid "Show" msgstr "보다" -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 msgid "Feature types" msgstr "특색 유형" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 msgid "Perimeter" msgstr "가장ìžë¦¬" -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 msgid "External perimeter" msgstr "외부 가장ìžë¦¬" -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 msgid "Overhang perimeter" msgstr "오버행(Overhang) 둘레" -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 msgid "Internal infill" msgstr "ë‚´ë¶€ 채움" -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" msgstr "솔리드 ì¸í•„" -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" msgstr "가장 윗부분 채움" -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 msgid "Bridge infill" msgstr "프릿지 채움" -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" msgstr "공백 채움" -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001 #: src/libslic3r/GCode/PreviewData.cpp:171 msgid "Skirt" msgstr "스커트" -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" msgstr "서í¬íЏ 재료 ì¸í„°íŽ˜ì´ìФ" -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081 #: src/libslic3r/GCode/PreviewData.cpp:174 msgid "Wipe tower" msgstr "와ì´í”„ 타워(Wipe tower)" -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049 msgid "Travel" msgstr "ì´ì†¡" -#: src/slic3r/GUI/GUI_Preview.cpp:270 +#: src/slic3r/GUI/GUI_Preview.cpp:244 msgid "Retractions" msgstr "리트랙션" -#: src/slic3r/GUI/GUI_Preview.cpp:271 +#: src/slic3r/GUI/GUI_Preview.cpp:245 msgid "Unretractions" msgstr "리트랙션 취소" -#: src/slic3r/GUI/GUI_Preview.cpp:272 +#: src/slic3r/GUI/GUI_Preview.cpp:246 msgid "Shells" msgstr "쉘" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 msgid "Slic3r Prusa Edition - Keyboard Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:100 msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 msgid "Import STL/OBJ/AMF/3MF without config, keep bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 msgid "Load Config from .ini/amf/3mf/gcode" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725 +#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957 msgid "Export G-code" msgstr "G-코드 내보내기" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 msgid "Save project (3MF)" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "Load Config from .ini/amf/3mf/gcode and merge" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "(Re)slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Quick slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat last quick slice" msgstr "마지막으로 빠른 슬ë¼ì´ìФ 반복" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "Select Plater Tab" msgstr "ì„ íƒ ë° í”Œëž˜ì´íЏ 탭" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 msgid "Quick slice and Save as" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Select Print Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Select Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Select Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 msgid "Switch to 3D" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 msgid "Switch to Preview" msgstr "" # xs/src/slic3r/GUI/Preferences.cpp:9 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10 msgid "Preferences" msgstr "환경 설정" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +#: src/slic3r/GUI/PrintHostDialogs.cpp:134 msgid "Print host upload queue" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 msgid "Camera view " msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Add Instance to selected object " msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 msgid "Remove Instance from selected object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Show keyboard shortcuts list" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Select multiple object/Move multiple object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +msgid "Main Shortcuts" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 msgid "Arrange" msgstr "ì •ë ¬" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 msgid "Select All objects" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Delete selected" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Delete All" msgstr "ì „ë¶€ 지움" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Gizmo move" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Gizmo scale" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Gizmo rotate" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Gizmo cut" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 msgid "Gizmo Place face on bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 msgid "Gizmo SLA support points" msgstr "" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#, no-c-format +msgid "" +"Press to snap by 5% in Gizmo scale\n" +"or by 1mm in Gizmo move" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "" +"Press to scale or rotate selected objects\n" +"around their own center" +msgstr "" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:142 msgid "Zoom to Bed" msgstr "" @@ -1407,644 +1684,695 @@ msgstr "" msgid "Plater Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Arrow Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Upper Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "Arrow Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Lower Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Preview Shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:53 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +msgid "Move current slider thump Up" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Move current slider thump Down" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Arrow Left" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Set upper thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Arrow Right" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Set lower thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Add color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Delete color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Layers Slider Shortcuts" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:54 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" " -http://github.com/prusa3d/slic3r/releasesì—서 ì—…ë°ì´íŠ¸ë¥¼ 확ì¸í•˜ëŠ” ê²ƒì„ ìžŠ" "ì§€ 마십시오" -#: src/slic3r/GUI/MainFrame.cpp:130 +#: src/slic3r/GUI/MainFrame.cpp:160 msgid "Plater" msgstr "플레ì´íЏ" -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "오픈" +#: src/slic3r/GUI/MainFrame.cpp:273 +msgid "&Open Project" +msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:236 +#: src/slic3r/GUI/MainFrame.cpp:273 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" +#: src/slic3r/GUI/MainFrame.cpp:275 +msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:238 +#: src/slic3r/GUI/MainFrame.cpp:275 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" +#: src/slic3r/GUI/MainFrame.cpp:277 +msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:240 +#: src/slic3r/GUI/MainFrame.cpp:277 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:283 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:283 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:286 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:286 msgid "Load exported configuration file" msgstr "ë‚´ 보낸 구성 파ì¼ë¡œë“œ" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:288 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:288 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:291 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:291 msgid "Load presets from a bundle" msgstr "번들ì—서 미리 설정로드" -#: src/slic3r/GUI/MainFrame.cpp:256 +#: src/slic3r/GUI/MainFrame.cpp:293 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export &G-code" msgstr "G-코드 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export current plate as G-code" msgstr "현재 플레ì´íŠ¸ë¥¼ G 코드로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export plate as &STL" msgstr "STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export current plate as STL" msgstr "현재 플레ì´íŠ¸ë¥¼ STL로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export plate as &AMF" msgstr "AMF로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export current plate as AMF" msgstr "현재 플레ì´íŠ¸ë¥¼AMF로 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export current configuration to file" msgstr "현재 êµ¬ì„±ì„ íŒŒì¼ë¡œ 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export all presets to file" msgstr "모든 ì´ì „ ì„¤ì •ì„ íŒŒì¼ë¡œ 내보내기" -#: src/slic3r/GUI/MainFrame.cpp:271 +#: src/slic3r/GUI/MainFrame.cpp:308 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:314 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:314 msgid "Slice a file into a G-code" msgstr "파ì¼ì„ G 코드로 ë¶„í• " -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:320 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:320 msgid "Slice a file into a G-code, save as" msgstr "파ì¼ì„ G 코드로 분할하고 다ìŒìœ¼ë¡œ 저장" -#: src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:334 msgid "(Re)Slice &Now" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:334 msgid "Start new slicing process" msgstr "새로운 슬ë¼ì´ì‹± 작업 시작" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:337 msgid "&Repair STL file" msgstr "STL íŒŒì¼ ë³µêµ¬" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:337 msgid "Automatically repair an STL file" msgstr "STL 파ì¼ì„ ìžë™ìœ¼ë¡œ 복구합니다" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:340 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:340 msgid "Quit Slic3r" msgstr "Slic3r 종료" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:374 msgid "&Select all" -msgstr "" +msgstr "ëª¨ë‘ ì„ íƒ" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:374 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:379 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:379 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:392 msgid "&Plater Tab" msgstr "ì„ íƒ ë° í”Œëž˜ì´íЏ 탭" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:392 msgid "Show the plater" msgstr "플레ì´íŠ¸ë¥¼ 보기" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:399 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:399 msgid "Show the print settings" msgstr "ì¸ì‡„ 설정 표시" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "Show the filament settings" msgstr "í•„ë¼ë©˜íЏ 설정보기" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Show the printer settings" msgstr "간단한 설정보기" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:407 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:407 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:430 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:430 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" +#: src/slic3r/GUI/MainFrame.cpp:439 +msgid "Iso" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:388 +#: src/slic3r/GUI/MainFrame.cpp:439 msgid "Iso View" msgstr "Iso 보기" # lib/Slic3r/GUI/MainFrame.pm:327 -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" +#: src/slic3r/GUI/MainFrame.cpp:441 +msgid "Top" msgstr "윗부분" -#: src/slic3r/GUI/MainFrame.cpp:390 +#: src/libslic3r/PrintConfig.cpp:2041 +msgctxt "Layers" +msgid "Top" +msgstr "윗부분" + +#: src/slic3r/GUI/MainFrame.cpp:441 msgid "Top View" msgstr "위ì—서 보기" # lib/Slic3r/GUI/MainFrame.pm:328 -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" +#: src/slic3r/GUI/MainFrame.cpp:442 +msgid "Bottom" msgstr "바닥(Bottom)" -#: src/slic3r/GUI/MainFrame.cpp:391 +#: src/libslic3r/PrintConfig.cpp:148 +msgctxt "Layers" +msgid "Bottom" +msgstr "바닥(Bottom)" + +#: src/slic3r/GUI/MainFrame.cpp:442 msgid "Bottom View" msgstr "바닥 보기" -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" +#: src/slic3r/GUI/MainFrame.cpp:443 +msgid "Front" msgstr "앞" -#: src/slic3r/GUI/MainFrame.cpp:392 +#: src/slic3r/GUI/MainFrame.cpp:443 msgid "Front View" msgstr "앞면 보기" -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" +#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561 +msgid "Rear" msgstr "ë’·ë©´" -#: src/slic3r/GUI/MainFrame.cpp:393 +#: src/slic3r/GUI/MainFrame.cpp:444 msgid "Rear View" msgstr "ë’·ë©´ 보기" -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" +#: src/slic3r/GUI/MainFrame.cpp:445 +msgid "Left" msgstr "왼쪽" -#: src/slic3r/GUI/MainFrame.cpp:394 +#: src/slic3r/GUI/MainFrame.cpp:445 msgid "Left View" msgstr "왼쪽 보기" -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" +#: src/slic3r/GUI/MainFrame.cpp:446 +msgid "Right" msgstr "오른쪽" -#: src/slic3r/GUI/MainFrame.cpp:395 +#: src/slic3r/GUI/MainFrame.cpp:446 msgid "Right View" msgstr "오른쪽 보기" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:460 msgid "Prusa 3D &Drivers" msgstr "푸르사 3D 드ë¼ì´ë²„" -#: src/slic3r/GUI/MainFrame.cpp:409 +#: src/slic3r/GUI/MainFrame.cpp:460 msgid "Open the Prusa3D drivers download page in your browser" msgstr "브ë¼ìš°ì €ì—서 Prusa3D 드ë¼ì´ë²„ 다운로드 페ì´ì§€ë¥¼ 엽니다" -#: src/slic3r/GUI/MainFrame.cpp:411 +#: src/slic3r/GUI/MainFrame.cpp:462 msgid "Prusa Edition &Releases" msgstr "Prusa ì—디션 릴리스" -#: src/slic3r/GUI/MainFrame.cpp:411 +#: src/slic3r/GUI/MainFrame.cpp:462 msgid "Open the Prusa Edition releases page in your browser" msgstr "브ë¼ìš°ì €ì—서 Prusa Edition 릴리즈 페ì´ì§€ë¥¼ 엽니 다" -#: src/slic3r/GUI/MainFrame.cpp:417 +#: src/slic3r/GUI/MainFrame.cpp:468 msgid "Slic3r &Website" msgstr "Slic3r ë° ì›¹ 사ì´íЏ" -#: src/slic3r/GUI/MainFrame.cpp:417 +#: src/slic3r/GUI/MainFrame.cpp:468 msgid "Open the Slic3r website in your browser" msgstr "브ë¼ìš°ì €ì—서 Slic3r 웹 사ì´íЏ 열기" -#: src/slic3r/GUI/MainFrame.cpp:419 +#: src/slic3r/GUI/MainFrame.cpp:470 msgid "Slic3r &Manual" msgstr "Slic3r &메뉴얼" -#: src/slic3r/GUI/MainFrame.cpp:419 +#: src/slic3r/GUI/MainFrame.cpp:470 msgid "Open the Slic3r manual in your browser" msgstr "브ë¼ìš°ì €ì—서 Slic3r 설명서를 엽니다" -#: src/slic3r/GUI/MainFrame.cpp:422 +#: src/slic3r/GUI/MainFrame.cpp:473 msgid "System &Info" msgstr "시스템 ì •ë³´" -#: src/slic3r/GUI/MainFrame.cpp:422 +#: src/slic3r/GUI/MainFrame.cpp:473 msgid "Show system information" msgstr "시스템 ì •ë³´ 표시" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:475 msgid "Show &Configuration Folder" msgstr "í´ë” 표시 ë° êµ¬ì„±" -#: src/slic3r/GUI/MainFrame.cpp:424 +#: src/slic3r/GUI/MainFrame.cpp:475 msgid "Show user configuration folder (datadir)" msgstr "ì‚¬ìš©ìž êµ¬ì„± í´ë” 표시 (datadir)" -#: src/slic3r/GUI/MainFrame.cpp:426 +#: src/slic3r/GUI/MainFrame.cpp:477 msgid "Report an I&ssue" msgstr "문제보고" -#: src/slic3r/GUI/MainFrame.cpp:426 +#: src/slic3r/GUI/MainFrame.cpp:477 msgid "Report an issue on the Slic3r Prusa Edition" msgstr "Slic3r Prusa Editionì— ê´€í•œ ë¬¸ì œì  ë³´ê³ " -#: src/slic3r/GUI/MainFrame.cpp:428 +#: src/slic3r/GUI/MainFrame.cpp:479 msgid "&About Slic3r" msgstr "&Slic3rì— ëŒ€í•˜ì—¬" -#: src/slic3r/GUI/MainFrame.cpp:428 +#: src/slic3r/GUI/MainFrame.cpp:479 msgid "Show about dialog" msgstr "대화ìƒìž 표시" -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" +#: src/slic3r/GUI/MainFrame.cpp:482 +msgid "Keyboard Shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:431 +#: src/slic3r/GUI/MainFrame.cpp:482 msgid "Show the list of the keyboard shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:439 +#: src/slic3r/GUI/MainFrame.cpp:490 msgid "&File" msgstr "&파ì¼" -#: src/slic3r/GUI/MainFrame.cpp:440 +#: src/slic3r/GUI/MainFrame.cpp:491 msgid "&Edit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:441 +#: src/slic3r/GUI/MainFrame.cpp:492 msgid "&Window" msgstr "&윈ë„ìš°" -#: src/slic3r/GUI/MainFrame.cpp:442 +#: src/slic3r/GUI/MainFrame.cpp:493 msgid "&View" msgstr "&보다" -#: src/slic3r/GUI/MainFrame.cpp:445 +#: src/slic3r/GUI/MainFrame.cpp:496 msgid "&Help" msgstr "&ë„움ë§" -#: src/slic3r/GUI/MainFrame.cpp:472 +#: src/slic3r/GUI/MainFrame.cpp:524 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" msgstr "슬ë¼ì´ìФ í•  파ì¼ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤ (STL / OBJ / AMF / 3MF / PRUSA):" -#: src/slic3r/GUI/MainFrame.cpp:486 +#: src/slic3r/GUI/MainFrame.cpp:538 msgid "No previously sliced file." msgstr "ì´ì „ì— ë¶„ë¦¬ ëœ íŒŒì¼ì´ 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 +#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219 msgid "Error" msgstr "ì—러" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:544 msgid "Previously sliced file (" msgstr "ì´ì „ì— ë¶„ë¦¬ ëœ íŒŒì¼ (" -#: src/slic3r/GUI/MainFrame.cpp:492 +#: src/slic3r/GUI/MainFrame.cpp:544 msgid ") not found." msgstr ")ì„ ì°¾ì„ ìˆ˜ 없습니다." -#: src/slic3r/GUI/MainFrame.cpp:493 +#: src/slic3r/GUI/MainFrame.cpp:545 msgid "File Not Found" msgstr "파ì¼ì„ ì°¾ì„수 없다" -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 +#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152 msgid "Save " msgstr "저장 " -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid " file as:" msgstr " ë‹¤ìŒ íŒŒì¼ :" -#: src/slic3r/GUI/MainFrame.cpp:548 +#: src/slic3r/GUI/MainFrame.cpp:595 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:3348 msgid "Slicing" msgstr "슬ë¼ì´ì‹±" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:607 msgid "Processing " msgstr "프로세싱 " -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:630 msgid " was successfully sliced." msgstr " 성공ì ìœ¼ë¡œ 슬ë¼ì´ìФ." -#: src/slic3r/GUI/MainFrame.cpp:585 +#: src/slic3r/GUI/MainFrame.cpp:632 msgid "Slicing Done!" msgstr "슬ë¼ì´ìФ 완료!" -#: src/slic3r/GUI/MainFrame.cpp:600 +#: src/slic3r/GUI/MainFrame.cpp:647 msgid "Select the STL file to repair:" msgstr "복구 í•  STL 파ì¼ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤:" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:661 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "OBJ 파ì¼ì„ 저장하십시오 (STL보다 오류를 ëœ ì¡°ì •í•  ê°€ëŠ¥ì„±ì´ ì ìŒ):" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:676 msgid "Your file was repaired." msgstr "파ì¼ì´ 복구ë˜ì—ˆìŠµë‹ˆë‹¤." -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051 msgid "Repair" msgstr "수정" -#: src/slic3r/GUI/MainFrame.cpp:643 +#: src/slic3r/GUI/MainFrame.cpp:690 msgid "Save configuration as:" msgstr "êµ¬ì„±ì„ ì €ìž¥ :" -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774 msgid "Select configuration to load:" msgstr "로드 í•  구성 ì„ íƒ :" -#: src/slic3r/GUI/MainFrame.cpp:700 +#: src/slic3r/GUI/MainFrame.cpp:747 msgid "Save presets bundle as:" msgstr "ì´ì „ 설정 ë²ˆë“¤ì„ ë‹¤ìŒê³¼ ê°™ì´ ì €ìž¥ :" -#: src/slic3r/GUI/MainFrame.cpp:751 +#: src/slic3r/GUI/MainFrame.cpp:798 #, c-format msgid "%d presets successfully imported." msgstr "% d 사전 ì„¤ì •ì„ ê°€ì ¸ 왔습니다." -#: src/slic3r/GUI/MsgDialog.cpp:66 +#: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r error" msgstr "Slic3r 오류" -#: src/slic3r/GUI/MsgDialog.cpp:66 +#: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r has encountered an error" msgstr "Slic3rì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤" -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "ì •ë³´" - -#: src/slic3r/GUI/Plater.cpp:126 +#: src/slic3r/GUI/Plater.cpp:137 msgid "Volume" msgstr "í¬ê¸°" -#: src/slic3r/GUI/Plater.cpp:127 +#: src/slic3r/GUI/Plater.cpp:138 msgid "Facets" msgstr "측면" -#: src/slic3r/GUI/Plater.cpp:128 +#: src/slic3r/GUI/Plater.cpp:139 msgid "Materials" msgstr "재료" -#: src/slic3r/GUI/Plater.cpp:131 +#: src/slic3r/GUI/Plater.cpp:142 msgid "Manifold" msgstr "ë§Žì€" -#: src/slic3r/GUI/Plater.cpp:174 +#: src/slic3r/GUI/Plater.cpp:188 msgid "Sliced Info" msgstr "슬ë¼ì´ìŠ¤ëœ ì •ë³´" -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 +#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998 msgid "Used Filament (m)" msgstr "ì‚¬ìš©ìž í•„ë¼ë©˜íЏ (m)" -#: src/slic3r/GUI/Plater.cpp:194 +#: src/slic3r/GUI/Plater.cpp:208 msgid "Used Filament (mm³)" msgstr "ì‚¬ìš©ìž í•„ë¼ë©˜íЏ (mm³)" -#: src/slic3r/GUI/Plater.cpp:195 +#: src/slic3r/GUI/Plater.cpp:209 msgid "Used Filament (g)" msgstr "ì‚¬ìš©ìž í•„ë¼ë©˜íЏ (g)" -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 +#: src/slic3r/GUI/Plater.cpp:210 +msgid "Used Material (unit)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013 +#: src/libslic3r/PrintConfig.cpp:716 msgid "Cost" msgstr "비용" -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985 +#: src/slic3r/GUI/Plater.cpp:1027 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/Plater.cpp:198 +#: src/slic3r/GUI/Plater.cpp:213 msgid "Number of tool changes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "서í¬íЏ(지지대)" +#: src/slic3r/GUI/Plater.cpp:290 +msgid "Click to edit preset" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:364 +#: src/slic3r/GUI/Plater.cpp:413 msgid "Select what kind of support do you need" msgstr "서í¬íŠ¸ì˜ ì¢…ë¥˜ë¥¼ ì„ íƒí•˜ì„¸ìš”" -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "ì—†ìŒ" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 +#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:2419 msgid "Support on build plate only" msgstr "출력물만 서í¬íŠ¸ë¥¼ 지지" -#: src/slic3r/GUI/Plater.cpp:367 +#: src/slic3r/GUI/Plater.cpp:416 msgid "Everywhere" msgstr "모든곳" -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 +#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007 msgid "Brim" msgstr "브림" -#: src/slic3r/GUI/Plater.cpp:381 +#: src/slic3r/GUI/Plater.cpp:440 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." msgstr "" "ì´ í”Œëž˜ê·¸ëŠ” 첫 번째 ë ˆì´ì–´ì˜ ê° ê°œì²´ ì£¼ìœ„ì— ì¸ì‡„ ë  ë¸Œë¦¼ì„ í™œì„±í™”í•©ë‹ˆë‹¤." -#: src/slic3r/GUI/Plater.cpp:390 +#: src/slic3r/GUI/Plater.cpp:448 msgid "Purging volumes" msgstr "볼륨 ì‚­ì œ" -#: src/slic3r/GUI/Plater.cpp:556 +#: src/slic3r/GUI/Plater.cpp:673 msgid "Print settings" msgstr "프린트 설정" -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 +#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421 +#: src/slic3r/GUI/Tab.cpp:1422 msgid "Filament" msgstr "í•„ë¼ë©˜íЏ" -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 +#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252 msgid "SLA print" msgstr "" -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 +#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253 msgid "SLA material" msgstr "" -#: src/slic3r/GUI/Plater.cpp:560 +#: src/slic3r/GUI/Plater.cpp:677 msgid "Printer" msgstr "프린터" -#: src/slic3r/GUI/Plater.cpp:588 +#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674 msgid "Send to printer" msgstr "프린터로 보내기" -#: src/slic3r/GUI/Plater.cpp:607 +#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:3470 msgid "Slice now" msgstr "지금 ìžë¥´ê¸°" -#: src/slic3r/GUI/Plater.cpp:787 +#: src/slic3r/GUI/Plater.cpp:860 +msgid "Hold Shift to Slice & Export G-code" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:931 #, c-format msgid "%d (%d shells)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:792 +#: src/slic3r/GUI/Plater.cpp:936 #, c-format msgid "Auto-repaired (%d errors)" msgstr "오류ìžë™ìˆ˜ì • (%d errors)" -#: src/slic3r/GUI/Plater.cpp:795 +#: src/slic3r/GUI/Plater.cpp:939 #, c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " @@ -2053,36 +2381,48 @@ msgstr "" "%d ë©´ ê³ ì •, %d 모서리 ê³ ì •, %d ë©´ 제거, %d ë©´ 추가, %d ë©´ 반전, %d 후방 모서" "리" -#: src/slic3r/GUI/Plater.cpp:805 +#: src/slic3r/GUI/Plater.cpp:949 msgid "Yes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:972 +msgid "Used Material (ml)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:975 +msgid "object(s)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:975 +msgid "supports and pad" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "wipe tower" msgstr "" -#: src/slic3r/GUI/Plater.cpp:855 +#: src/slic3r/GUI/Plater.cpp:1030 msgid "normal mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:859 +#: src/slic3r/GUI/Plater.cpp:1034 msgid "silent mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1304 +#: src/slic3r/GUI/Plater.cpp:1544 msgid "Loading" msgstr "로딩" -#: src/slic3r/GUI/Plater.cpp:1314 +#: src/slic3r/GUI/Plater.cpp:1554 #, c-format msgid "Processing input file %s\n" msgstr "ìž…ë ¥ íŒŒì¼ ì²˜ë¦¬ %s\n" -#: src/slic3r/GUI/Plater.cpp:1366 +#: src/slic3r/GUI/Plater.cpp:1612 msgid "" "This file contains several objects positioned at multiple heights. Instead " "of considering them as multiple objects, should I consider\n" @@ -2092,18 +2432,28 @@ msgstr "" "는 대신,\n" "ì´ íŒŒì¼ì€ 여러 ë¶€ë¶„ì„ ê°–ëŠ” ë‹¨ì¼ ê°ì²´ë¡œ 보입니까?\n" -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 +#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707 msgid "Multi-part object detected" msgstr "다중 부품 ê°ì²´ê°€ ê°ì§€" -#: src/slic3r/GUI/Plater.cpp:1388 +#: src/slic3r/GUI/Plater.cpp:1650 +msgid "" +"This file cannot be loaded in simple mode. Do you want to switch to expert " +"mode?\n" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1651 +msgid "Detected advanced data" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1684 #, c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1408 +#: src/slic3r/GUI/Plater.cpp:1704 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" @@ -2113,57 +2463,61 @@ msgstr "" "여러 ê°ì²´ë¡œ 간주하는 대신,\n" "ì´ íŒŒì¼ë“¤ì€ 여러 ë¶€ë¶„ì„ ê°–ëŠ” ë‹¨ì¼ ê°ì²´ë¥¼ 나타낼 수 있습니까?\n" -#: src/slic3r/GUI/Plater.cpp:1424 +#: src/slic3r/GUI/Plater.cpp:1720 msgid "Loaded" msgstr "로드(loaded)" -#: src/slic3r/GUI/Plater.cpp:1492 +#: src/slic3r/GUI/Plater.cpp:1812 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "개체가 너무 커서 ì¸ì‡„ë¬¼ì— ë§žê²Œ ìžë™ìœ¼ë¡œ 축소ë˜ì—ˆìŠµë‹ˆë‹¤." -#: src/slic3r/GUI/Plater.cpp:1493 +#: src/slic3r/GUI/Plater.cpp:1813 msgid "Object too large?" msgstr "개체가 너무 í½ë‹ˆê¹Œ?" -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "ì¸ì‡„ 설정 내보내기" +#: src/slic3r/GUI/Plater.cpp:1863 +msgid "Export STL file:" +msgstr "" -#: src/slic3r/GUI/Plater.cpp:1538 +#: src/slic3r/GUI/Plater.cpp:1870 +msgid "Export AMF file:" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1876 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1702 +#: src/slic3r/GUI/Plater.cpp:2042 msgid "Arranging canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1705 +#: src/slic3r/GUI/Plater.cpp:2045 msgid "Arranging" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1736 +#: src/slic3r/GUI/Plater.cpp:2079 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1740 +#: src/slic3r/GUI/Plater.cpp:2083 msgid "Arranging done." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1782 +#: src/slic3r/GUI/Plater.cpp:2124 msgid "Orientation search canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1787 +#: src/slic3r/GUI/Plater.cpp:2129 msgid "Searching for optimal orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1797 +#: src/slic3r/GUI/Plater.cpp:2190 msgid "Orientation found." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1818 +#: src/slic3r/GUI/Plater.cpp:2211 msgid "" "The selected object can't be split because it contains more than one volume/" "material." @@ -2171,170 +2525,179 @@ msgstr "" "ì„ íƒí•œ ê°ì²´ëŠ” 둘 ì´ìƒì˜ 볼륨 / 재료가 í¬í•¨ë˜ì–´ 있기 ë•Œë¬¸ì— ë¶„í•  í•  수 없습니" "다." -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 +#: src/slic3r/GUI/Plater.cpp:2337 +msgid "Invalid data" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2346 +msgid "Ready to slice" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220 msgid "Cancelling" msgstr "취소 중" -#: src/slic3r/GUI/Plater.cpp:1962 +#: src/slic3r/GUI/Plater.cpp:2396 msgid "Another export job is currently running." msgstr "다른 내보내기 ìž‘ì—…ì´ í˜„ìž¬ 실행 중입니다." -#: src/slic3r/GUI/Plater.cpp:2215 +#: src/slic3r/GUI/Plater.cpp:2656 msgid "Export failed" msgstr "내보내기 실패" -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 +#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221 msgid "Cancelled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "지우기(delete)" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "ì„ íƒí•œ ê°ì²´ 제거" - -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759 +#: src/slic3r/GUI/Plater.cpp:2831 msgid "Increase copies" msgstr "복사본 늘리기" -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843 +msgid "Remove the selected object" +msgstr "ì„ íƒí•œ ê°ì²´ 제거" + +#: src/slic3r/GUI/Plater.cpp:2831 msgid "Place one more copy of the selected object" msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ 하나 ë” ë³µì‚¬í•©ë‹ˆë‹¤" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2833 msgid "Decrease copies" msgstr "복사본 ê°ì†Œ" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2833 msgid "Remove one copy of the selected object" msgstr "ì„ íƒí•œ ê°ì²´ 복사본 하나 ì‚­ì œ" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2835 msgid "Set number of copies" msgstr "ë³µì‚¬ë  ìˆ˜ëŸ‰ 설정" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2835 msgid "Change the number of copies of the selected object" msgstr "ì„ íƒí•œ ê°œì²´ì˜ ë³µì‚¬ë³¸ 수 변경" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2858 msgid "Reload from Disk" msgstr "디스í¬ì—서 다시 불러오기" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2858 msgid "Reload the selected file from Disk" msgstr "디스í¬ì—서 다시 불러오기" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" +#: src/slic3r/GUI/Plater.cpp:2861 +msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "ì´ ê°ì²´ë¥¼ STL 파ì¼ë¡œ ë‚´ 보냅니다" - -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2873 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2873 msgid "Mirror the selected object along the X axis" msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ X ì¶•ì„ ë”°ë¼ ë°˜ì „í•©ë‹ˆë‹¤" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2875 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2875 msgid "Mirror the selected object along the Y axis" msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ Y ì¶•ì„ ë”°ë¼ ë°˜ì „í•©ë‹ˆë‹¤" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2877 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2877 msgid "Mirror the selected object along the Z axis" msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ Z ì¶•ì„ ë”°ë¼ ë°˜ì „í•©ë‹ˆë‹¤" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Mirror" msgstr "반전(Mirror)" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Mirror the selected object" msgstr "반전할 ê°ì œë¥¼ ì„ íƒ" -#: src/slic3r/GUI/Plater.cpp:2400 +#: src/slic3r/GUI/Plater.cpp:2898 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 +#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 +#: src/slic3r/GUI/Plater.cpp:2900 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920 +#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075 msgid "Split" msgstr "쪼개기" -#: src/slic3r/GUI/Plater.cpp:2405 +#: src/slic3r/GUI/Plater.cpp:2903 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:2926 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:2926 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2795 +#: src/slic3r/GUI/Plater.cpp:3342 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" +#: src/slic3r/GUI/Plater.cpp:3342 +msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2845 +#: src/slic3r/GUI/Plater.cpp:3397 #, c-format msgid "STL file exported to %s" msgstr "내보낸 STL íŒŒì¼ %s" -#: src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/Plater.cpp:3413 #, c-format msgid "AMF file exported to %s" msgstr "내보낸 AMF íŒŒì¼ %s" -#: src/slic3r/GUI/Plater.cpp:2864 +#: src/slic3r/GUI/Plater.cpp:3416 #, c-format msgid "Error exporting AMF file %s" msgstr "AMF íŒŒì¼ ë‚´ë³´ë‚´ê¸° 오류 %s" -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Plater.cpp:3442 #, c-format msgid "3MF file exported to %s" msgstr "3MF 파ì¼ì„ 내보냈습니다 %s" -#: src/slic3r/GUI/Plater.cpp:2894 +#: src/slic3r/GUI/Plater.cpp:3445 #, c-format msgid "Error exporting 3MF file %s" msgstr "3MF íŒŒì¼ ë‚´ë³´ë‚´ê¸° 오류 %s" -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 +#: src/slic3r/GUI/Plater.cpp:3673 +msgid "Export" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3674 +msgid "Send G-code" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762 +#: src/slic3r/GUI/Tab.cpp:1963 msgid "General" msgstr "ì¼ë°˜" @@ -2396,11 +2759,11 @@ msgstr "" "ì´ ì˜µì…˜ì„ ì„ íƒí•˜ë©´ 활성 프린터와 호환ë˜ì§€ 않는 것으로 í‘œì‹œëœ ê²½ìš°ì—ë„ ì¸ì‡„ " "ë° í•„ë¼ë©˜íЏ 사전 ì„¤ì •ì´ ì‚¬ì „ 설정 íŽ¸ì§‘ê¸°ì— í‘œì‹œë©ë‹ˆë‹¤" -#: src/slic3r/GUI/Preferences.cpp:90 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "Use legacy OpenGL 1.1 rendering" msgstr "레거시 OpenGL 1.1 ë Œë”ë§ ì‚¬ìš©" -#: src/slic3r/GUI/Preferences.cpp:92 +#: src/slic3r/GUI/Preferences.cpp:93 msgid "" "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " "try to check this checkbox. This will disable the layer height editing and " @@ -2410,26 +2773,40 @@ msgstr "" "해보십시오. ì´ë ‡ê²Œí•˜ë©´ ë ˆì´ì–´ ë†’ì´ íŽ¸ì§‘ ë° ì•¤í‹° ì•¨ë¦¬ì–´ì‹±ì´ ë¹„í™œì„±í™”ë˜ë¯€ë¡œ ê·¸" "래픽 드ë¼ì´ë²„를 업그레ì´ë“œí•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤." -#: src/slic3r/GUI/Preferences.cpp:115 +#: src/slic3r/GUI/Preferences.cpp:101 +msgid "Use Retina resolution for the 3D scene" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "" +"If enabled, the 3D scene will be rendered in Retina resolution. If you are " +"experiencing 3D performance problems, disabling this option may help." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:126 msgid "You need to restart Slic3r to make the changes effective." msgstr "변경 ì‚¬í•­ì„ ì ìš©í•˜ë ¤ë©´ Slic3rì„ ë‹¤ì‹œ 시작해야합니다." -#: src/slic3r/GUI/Preset.cpp:170 +#: src/slic3r/GUI/Preset.cpp:207 msgid "modified" msgstr "수정ëœê³³" -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 +#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958 +#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043 +#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537 msgid "System presets" msgstr "시스템 기본설정" -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 +#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047 +#: src/slic3r/GUI/PresetBundle.cpp:1542 msgid "User presets" msgstr "ì‚¬ìš©ìž ì‚¬ì „ì„¤ì •" -#: src/slic3r/GUI/Preset.cpp:1157 +#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247 +msgid "Add a new printer" +msgstr "" + +#: src/slic3r/GUI/Preset.cpp:1251 msgid "filament" msgstr "" @@ -2568,48 +2945,44 @@ msgstr "개체 ë ˆì´ì–´ ë†’ì´ %.2f ì— ëŒ€ 한 ì–‡ì€ ë²½ ë‘께 권장 하 msgid "%d lines: %.2lf mm" msgstr "%d ë¼ì¸(lines): %.2lf mm" -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 +#: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Send G-Code to printer host" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 +#: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Upload to Printer Host with the following filename:" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 +#: src/slic3r/GUI/PrintHostDialogs.cpp:34 msgid "Start printing after upload" msgstr "업로드 후 ì¸ì‡„ 시작" -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +#: src/slic3r/GUI/PrintHostDialogs.cpp:41 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "필요한 경우 디렉토리 분리 기호로 슬래시 (/)를 사용하십시오." -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Cancel selected" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Show error message" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 +#: src/slic3r/GUI/PrintHostDialogs.cpp:198 +#: src/slic3r/GUI/PrintHostDialogs.cpp:217 msgid "Enqueued" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 +#: src/slic3r/GUI/PrintHostDialogs.cpp:218 msgid "Uploading" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 +#: src/slic3r/GUI/PrintHostDialogs.cpp:222 msgid "Completed" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 +#: src/slic3r/GUI/PrintHostDialogs.cpp:260 msgid "Error uploading to print host:" msgstr "" @@ -2622,10 +2995,10 @@ msgid "Time" msgstr "시간" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670 +#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250 +#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315 msgid "s" msgstr "s" @@ -2633,35 +3006,35 @@ msgstr "s" msgid "Volumetric speed" msgstr "ìš©ì (Volumetric) 스피트" -#: src/slic3r/GUI/SysInfoDialog.cpp:40 +#: src/slic3r/GUI/SysInfoDialog.cpp:44 msgid "Slic3r Prusa Edition - System Information" msgstr "" -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228 msgid "Compatible printers" msgstr "호환 가능한 프린터들" -#: src/slic3r/GUI/Tab.cpp:50 +#: src/slic3r/GUI/Tab.cpp:51 msgid "Select the printers this profile is compatible with." msgstr "ì´ í”„ë¡œíŒŒì¼ê³¼ 호환 가능한 프린터를 ì„ íƒí•˜ì„¸ìš”." -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243 msgid "Compatible print profiles" msgstr "" -#: src/slic3r/GUI/Tab.cpp:56 +#: src/slic3r/GUI/Tab.cpp:57 msgid "Select the print profiles this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:118 +#: src/slic3r/GUI/Tab.cpp:132 msgid "Save current " msgstr "지금 저장 " -#: src/slic3r/GUI/Tab.cpp:119 +#: src/slic3r/GUI/Tab.cpp:133 msgid "Delete this preset" msgstr "ì´ì „ 설정 ì‚­ì œ" -#: src/slic3r/GUI/Tab.cpp:131 +#: src/slic3r/GUI/Tab.cpp:145 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." @@ -2669,180 +3042,180 @@ msgstr "" "버튼 위로 커서를 가져 가서 ìžì„¸í•œ 정보를 찾습니다.\n" "ë˜ëŠ”ì´ ë²„íŠ¼ì„ í´ë¦­í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/Tab.cpp:824 +#: src/slic3r/GUI/Tab.cpp:858 msgid "It's a default preset." msgstr "기본 설정입니다." -#: src/slic3r/GUI/Tab.cpp:825 +#: src/slic3r/GUI/Tab.cpp:859 msgid "It's a system preset." msgstr "시스템 설정입니다." -#: src/slic3r/GUI/Tab.cpp:826 +#: src/slic3r/GUI/Tab.cpp:860 msgid "Current preset is inherited from " msgstr "ì „ì˜ ì„¤ì •ì—서 가져 옵니다 " -#: src/slic3r/GUI/Tab.cpp:831 +#: src/slic3r/GUI/Tab.cpp:865 msgid "It can't be deleted or modified. " msgstr "삭제하거나 수정할 수 없습니다. " -#: src/slic3r/GUI/Tab.cpp:832 +#: src/slic3r/GUI/Tab.cpp:866 msgid "" "Any modifications should be saved as a new preset inherited from this one. " msgstr "모든 수정 ì‚¬í•­ì€ ì´ í•­ëª©ì—서 ë°›ì€ ê¸°ë³¸ 설정으로 저장해야합니다. " -#: src/slic3r/GUI/Tab.cpp:833 +#: src/slic3r/GUI/Tab.cpp:867 msgid "To do that please specify a new name for the preset." msgstr "그렇게하려면 기본 ì„¤ì •ì˜ ìƒˆ ì´ë¦„ì„ ì§€ì •í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/Tab.cpp:837 +#: src/slic3r/GUI/Tab.cpp:871 msgid "Additional information:" msgstr "추가 ì •ë³´:" -#: src/slic3r/GUI/Tab.cpp:843 +#: src/slic3r/GUI/Tab.cpp:877 msgid "printer model" msgstr "프린터 모ë¸" -#: src/slic3r/GUI/Tab.cpp:851 +#: src/slic3r/GUI/Tab.cpp:885 msgid "default print profile" msgstr "기본 ì¸ì‡„ 프로파ì¼" -#: src/slic3r/GUI/Tab.cpp:854 +#: src/slic3r/GUI/Tab.cpp:888 msgid "default filament profile" msgstr "기본 í•„ë¼ë©˜íЏ 프로파ì¼" -#: src/slic3r/GUI/Tab.cpp:868 +#: src/slic3r/GUI/Tab.cpp:902 msgid "default SLA material profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:872 +#: src/slic3r/GUI/Tab.cpp:906 msgid "default SLA print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303 msgid "Layers and perimeters" msgstr "ë ˆì´ì–´ ë° ê²½ê³„ì„ " -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 +#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55 msgid "Layer height" msgstr "ë ˆì´ì–´ 높ì´" -#: src/slic3r/GUI/Tab.cpp:924 +#: src/slic3r/GUI/Tab.cpp:953 msgid "Vertical shells" msgstr "쉘 높ì´" -#: src/slic3r/GUI/Tab.cpp:935 +#: src/slic3r/GUI/Tab.cpp:964 msgid "Horizontal shells" msgstr "쉘 너비" -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709 msgid "Solid layers" msgstr "솔리드 ë ˆì´ì–´" -#: src/slic3r/GUI/Tab.cpp:941 +#: src/slic3r/GUI/Tab.cpp:970 msgid "Quality (slower slicing)" msgstr "품질(슬ë¼ì´ì‹±ì´ ëŠë ¤ì§)" -#: src/slic3r/GUI/Tab.cpp:958 +#: src/slic3r/GUI/Tab.cpp:988 msgid "Reducing printing time" msgstr "출력 시간 단축" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1000 msgid "Skirt and brim" msgstr "스커트와 브림" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1017 msgid "Raft" msgstr "ë¼í”„트" -#: src/slic3r/GUI/Tab.cpp:991 +#: src/slic3r/GUI/Tab.cpp:1021 msgid "Options for support material and raft" msgstr "서í¬íŠ¸ì™€ ë¼í”„트 재료를 ì„ íƒ" -#: src/slic3r/GUI/Tab.cpp:1006 +#: src/slic3r/GUI/Tab.cpp:1036 msgid "Speed for print moves" msgstr "출력중 ì´ë™ ì†ë„" -#: src/slic3r/GUI/Tab.cpp:1018 +#: src/slic3r/GUI/Tab.cpp:1048 msgid "Speed for non-print moves" msgstr "미출력시 ì´ë™ì†ë„" -#: src/slic3r/GUI/Tab.cpp:1021 +#: src/slic3r/GUI/Tab.cpp:1051 msgid "Modifiers" msgstr "수정" -#: src/slic3r/GUI/Tab.cpp:1024 +#: src/slic3r/GUI/Tab.cpp:1054 msgid "Acceleration control (advanced)" msgstr "ê°€ì† ì œì–´(고급)" -#: src/slic3r/GUI/Tab.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1061 msgid "Autospeed (advanced)" msgstr "오토스피트(고급)" -#: src/slic3r/GUI/Tab.cpp:1037 +#: src/slic3r/GUI/Tab.cpp:1069 msgid "Multiple Extruders" msgstr "다중 ìµìŠ¤íŠ¸ë£¨ë”" -#: src/slic3r/GUI/Tab.cpp:1045 +#: src/slic3r/GUI/Tab.cpp:1077 msgid "Ooze prevention" msgstr "오즈 ë°©ì§€(Ooze prevention)" -#: src/slic3r/GUI/Tab.cpp:1062 +#: src/slic3r/GUI/Tab.cpp:1094 msgid "Extrusion width" msgstr "ì•…ì¶œ í­(Extrusion width)" -#: src/slic3r/GUI/Tab.cpp:1072 +#: src/slic3r/GUI/Tab.cpp:1104 msgid "Overlap" msgstr "겹침(Overlap)" -#: src/slic3r/GUI/Tab.cpp:1075 +#: src/slic3r/GUI/Tab.cpp:1107 msgid "Flow" msgstr "유량(Flow)" -#: src/slic3r/GUI/Tab.cpp:1078 +#: src/slic3r/GUI/Tab.cpp:1116 msgid "Other" msgstr "ê·¸ 외" -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 +#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351 msgid "Output options" msgstr "출력 옵션" -#: src/slic3r/GUI/Tab.cpp:1086 +#: src/slic3r/GUI/Tab.cpp:1120 msgid "Sequential printing" msgstr "ì—°ì† ì¸ì‡„" -#: src/slic3r/GUI/Tab.cpp:1088 +#: src/slic3r/GUI/Tab.cpp:1122 msgid "Extruder clearance (mm)" msgstr "ìµìŠ¤íŠ¸ë£¨ë” ê°„ê²©(mm)" -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 +#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352 msgid "Output file" msgstr "출력 파ì¼" -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382 msgid "Post-processing scripts" msgstr "í¬ìŠ¤íŠ¸ 프로세싱 스í¬ë¦½íЏ" -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 +#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145 +#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528 +#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936 +#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241 msgid "Notes" msgstr "메모" -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 +#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535 +#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034 +#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357 msgid "Dependencies" msgstr "ì†í•œ 그룹" -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 +#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536 +#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035 +#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358 msgid "Profile dependencies" msgstr "í”„ë¡œíŒŒì¼ ì¢…ì„성" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1198 #, no-c-format msgid "" "The Spiral Vase mode requires:\n" @@ -2863,11 +3236,11 @@ msgstr "" "\n" "스파ì´ëŸ´ ë°”ì´ìŠ¤ë¥¼ 사용하려면 ì´ëŸ¬í•œ ì„¤ì •ì„ ì¡°ì •í•´ì•¼í•©ë‹ˆê¹Œ?" -#: src/slic3r/GUI/Tab.cpp:1168 +#: src/slic3r/GUI/Tab.cpp:1205 msgid "Spiral Vase" msgstr "스파ì´ëŸ´ ë°”ì´ìФ" -#: src/slic3r/GUI/Tab.cpp:1191 +#: src/slic3r/GUI/Tab.cpp:1228 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -2884,11 +3257,11 @@ msgstr "" "\n" "와ì´í¼ 타워를 사용하려면 ì´ëŸ¬í•œ ì„¤ì •ì„ ì¡°ì •í•´ì•¼í•©ë‹ˆê¹Œ?" -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 +#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249 msgid "Wipe Tower" msgstr "와ì´í”„ 타워(Wipe Tower)" -#: src/slic3r/GUI/Tab.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers.\n" @@ -2900,7 +3273,7 @@ msgstr "" "\n" "와ì´í¼ 타워를 사용하려면 서í¬íЏ ë ˆì´ì–´ë¥¼ ë™ê¸°í™”해야합니까?" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1264 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters\n" @@ -2912,15 +3285,15 @@ msgstr "" "\n" "서í¬íŠ¸ì— ëŒ€í•œ ì„¤ì •ì„ ì¡°ì •í•´ì•¼í•©ë‹ˆê¹Œ?" -#: src/slic3r/GUI/Tab.cpp:1230 +#: src/slic3r/GUI/Tab.cpp:1267 msgid "Support Generator" msgstr "서í¬íЏ ìƒì„±" -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1309 msgid "The " msgstr "The " -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1309 #, no-c-format msgid "" " infill pattern is not supposed to work at 100% density.\n" @@ -2931,82 +3304,82 @@ msgstr "" "\n" "ì§ì„  채우기 패턴으로 전환해야합니까?" -#: src/slic3r/GUI/Tab.cpp:1388 +#: src/slic3r/GUI/Tab.cpp:1429 msgid "Temperature " msgstr "ì˜¨ë„ " -#: src/slic3r/GUI/Tab.cpp:1394 +#: src/slic3r/GUI/Tab.cpp:1435 msgid "Bed" msgstr "배드(Bed)" -#: src/slic3r/GUI/Tab.cpp:1399 +#: src/slic3r/GUI/Tab.cpp:1440 msgid "Cooling" msgstr "냉ê°(Cooling)" -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 +#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285 +#: src/libslic3r/PrintConfig.cpp:2097 msgid "Enable" msgstr "사용" -#: src/slic3r/GUI/Tab.cpp:1411 +#: src/slic3r/GUI/Tab.cpp:1452 msgid "Fan settings" msgstr "팬 설정" -#: src/slic3r/GUI/Tab.cpp:1412 +#: src/slic3r/GUI/Tab.cpp:1453 msgid "Fan speed" msgstr "팬 ì†ë„" -#: src/slic3r/GUI/Tab.cpp:1420 +#: src/slic3r/GUI/Tab.cpp:1461 msgid "Cooling thresholds" msgstr "ëƒ‰ê° ìž„ê³„ ê°’" -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Tab.cpp:1467 msgid "Filament properties" msgstr "í•„ë¼ë©˜íЏ 특성" -#: src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1471 msgid "Print speed override" msgstr "ì¸ì‡„ ì†ë„ 중단" -#: src/slic3r/GUI/Tab.cpp:1440 +#: src/slic3r/GUI/Tab.cpp:1481 msgid "Toolchange parameters with single extruder MM printers" msgstr "싱글 ìµìŠ¤íŠ¸ë£¨ë” MM 프린터를 사용한 공구 êµí™˜ 매개 변수" -#: src/slic3r/GUI/Tab.cpp:1455 +#: src/slic3r/GUI/Tab.cpp:1496 msgid "Ramming settings" msgstr "ëž˜ë° ì„¤ì •" -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898 msgid "Custom G-code" msgstr "ìˆ˜ë™ G코드" -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 +#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899 +#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750 msgid "Start G-code" msgstr "스타트 G코드" -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 +#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368 msgid "End G-code" msgstr "엔드 G코드" -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 +#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689 msgid " Browse " msgstr " 검색 " -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838 msgid "Test" msgstr "시험(test)" -#: src/slic3r/GUI/Tab.cpp:1615 +#: src/slic3r/GUI/Tab.cpp:1662 msgid "Could not get a valid Printer Host reference" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851 msgid "Success!" msgstr "성공!" -#: src/slic3r/GUI/Tab.cpp:1636 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." @@ -3014,15 +3387,15 @@ msgstr "" "HTTPS CA 파ì¼ì€ ì„ íƒ ì‚¬í•­ìž…ë‹ˆë‹¤. ìžì²´ 서명 ëœ ì¸ì¦ì„œë¡œ HTTPS를 사용하는 경우" "ì—ë§Œ 필요합니다." -#: src/slic3r/GUI/Tab.cpp:1648 +#: src/slic3r/GUI/Tab.cpp:1696 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "ì¸ì¦ì„œ íŒŒì¼ (* .crt, * .pem) | * .crt; * .pem | 모든 íŒŒì¼ | *. *" -#: src/slic3r/GUI/Tab.cpp:1649 +#: src/slic3r/GUI/Tab.cpp:1697 msgid "Open CA certificate file" msgstr "Open CA certificate file" -#: src/slic3r/GUI/Tab.cpp:1676 +#: src/slic3r/GUI/Tab.cpp:1725 msgid "" "HTTPS CA File:\n" "\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " @@ -3031,151 +3404,159 @@ msgid "" "Store / Keychain." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964 msgid "Size and coordinates" msgstr "í¬ê¸°ì™€ 좌표" -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 +#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968 +#: src/slic3r/GUI/Tab.cpp:2911 msgid " Set " msgstr " 세트 " -#: src/slic3r/GUI/Tab.cpp:1740 +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Capabilities" msgstr "기능" -#: src/slic3r/GUI/Tab.cpp:1745 +#: src/slic3r/GUI/Tab.cpp:1795 msgid "Number of extruders of the printer." msgstr "프린터 ìµìŠ¤íŠ¸ë£¨ë” ìˆ«ìž." -#: src/slic3r/GUI/Tab.cpp:1773 +#: src/slic3r/GUI/Tab.cpp:1823 msgid "USB/Serial connection" msgstr "USB/시리얼 ì—°ê²°" -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 +#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590 msgid "Serial port" msgstr "시리얼 í¬íЏ" -#: src/slic3r/GUI/Tab.cpp:1779 +#: src/slic3r/GUI/Tab.cpp:1829 msgid "Rescan serial ports" msgstr "시리얼í¬íЏ 재검색" -#: src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1851 msgid "Connection to printer works correctly." msgstr "프린터 ì—°ê²°ì´ ì˜¬ë°”ë¥´ê²Œ ìž‘ë™í•©ë‹ˆë‹¤." -#: src/slic3r/GUI/Tab.cpp:1804 +#: src/slic3r/GUI/Tab.cpp:1854 msgid "Connection failed." msgstr "ì—°ê²° 실패." -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 +#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022 msgid "Print Host upload" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 +#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128 msgid "Before layer change G-code" msgstr "ë ˆì´ì–´ 변경 ì „ G 코드" -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 +#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030 msgid "After layer change G-code" msgstr "ë ˆì´ì–´ 변경 후 G 코드" -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 +#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005 msgid "Tool change G-code" msgstr "툴 채ì¸ì§€ G 코드" -#: src/slic3r/GUI/Tab.cpp:1877 +#: src/slic3r/GUI/Tab.cpp:1929 msgid "Between objects G-code (for sequential printing)" msgstr "ê°ì²´ ê°„ G 코드 (순차 ì¸ì‡„ìš©)" -#: src/slic3r/GUI/Tab.cpp:1938 +#: src/slic3r/GUI/Tab.cpp:1990 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 +#: src/slic3r/GUI/Tab.cpp:2001 +msgid "Tilt" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2002 +msgid "Tilt time" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 +#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136 +#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 +#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1142 msgid "Machine limits" msgstr "머신 한계설정" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2088 msgid "Values in this column are for Full Power mode" msgstr "ì´ ì—´ì˜ ê°’ì€ ìµœëŒ€ ì „ë ¥ 모드입니다" -#: src/slic3r/GUI/Tab.cpp:2026 +#: src/slic3r/GUI/Tab.cpp:2089 msgid "Full Power" msgstr "최대 파워" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2094 msgid "Values in this column are for Silent mode" msgstr "ì´ ì—´ì˜ ê°’ì€ ë¬´ìŒ ëª¨ë“œ 용입니다" -#: src/slic3r/GUI/Tab.cpp:2032 +#: src/slic3r/GUI/Tab.cpp:2095 msgid "Silent" msgstr "무ìŒ" -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Tab.cpp:2103 msgid "Maximum feedrates" msgstr "최대 ì´ì†¡ì†ë„" -#: src/slic3r/GUI/Tab.cpp:2045 +#: src/slic3r/GUI/Tab.cpp:2108 msgid "Maximum accelerations" msgstr "최고 ê°€ì†ë„" -#: src/slic3r/GUI/Tab.cpp:2052 +#: src/slic3r/GUI/Tab.cpp:2115 msgid "Jerk limits" msgstr "ì €í¬(Jerk)ê°’ 한계" -#: src/slic3r/GUI/Tab.cpp:2057 +#: src/slic3r/GUI/Tab.cpp:2120 msgid "Minimum feedrates" msgstr "최대 ì´ì†¡ì†ë„" -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 +#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166 msgid "Single extruder MM setup" msgstr "싱글 ìµìŠ¤íŠ¸ë£¨ë” MM 설정" -#: src/slic3r/GUI/Tab.cpp:2104 +#: src/slic3r/GUI/Tab.cpp:2167 msgid "Single extruder multimaterial parameters" msgstr "싱글 ìµìŠ¤íŠ¸ë£¨ë” ë©€í‹°ë©”í„°ë¦¬ì•Œ 파ë¼ë¯¸í„°" -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 +#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475 #, c-format msgid "Extruder %d" msgstr "ìµìŠ¤íŠ¸ë£¨ë” %d" -#: src/slic3r/GUI/Tab.cpp:2125 +#: src/slic3r/GUI/Tab.cpp:2188 msgid "Layer height limits" msgstr "ë ˆì´ì–´ ë†’ì´ í•œê³„ì¹˜" -#: src/slic3r/GUI/Tab.cpp:2130 +#: src/slic3r/GUI/Tab.cpp:2193 msgid "Position (for multi-extruder printers)" msgstr "위치 (멀티 ìµìŠ¤íŠ¸ë£¨ë” í”„ë¦°í„° í¬í•¨)" -#: src/slic3r/GUI/Tab.cpp:2133 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Retraction" msgstr "리트렉션" -#: src/slic3r/GUI/Tab.cpp:2136 +#: src/slic3r/GUI/Tab.cpp:2199 msgid "Only lift Z" msgstr "Zì¶•ë§Œ 올림" -#: src/slic3r/GUI/Tab.cpp:2149 +#: src/slic3r/GUI/Tab.cpp:2212 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "ë„구 비활성화시 리트렉션 (멀티 ìµìŠ¤íŠ¸ë£¨ë” ê³ ê¸‰ 설정)" -#: src/slic3r/GUI/Tab.cpp:2153 +#: src/slic3r/GUI/Tab.cpp:2216 msgid "Preview" msgstr "프리뷰" -#: src/slic3r/GUI/Tab.cpp:2284 +#: src/slic3r/GUI/Tab.cpp:2352 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" @@ -3185,99 +3566,95 @@ msgstr "" "\n" "펌웨어 리트렉션 하려면 비활성화해야합니까?" -#: src/slic3r/GUI/Tab.cpp:2286 +#: src/slic3r/GUI/Tab.cpp:2354 msgid "Firmware Retraction" msgstr "펌웨어 레트렉션" -#: src/slic3r/GUI/Tab.cpp:2565 +#: src/slic3r/GUI/Tab.cpp:2681 #, c-format msgid "Default preset (%s)" msgstr "시스템 기본값 (%s)" -#: src/slic3r/GUI/Tab.cpp:2566 +#: src/slic3r/GUI/Tab.cpp:2682 #, c-format msgid "Preset (%s)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2583 +#: src/slic3r/GUI/Tab.cpp:2699 msgid "has the following unsaved changes:" msgstr "저장ë˜ì§€ ì•Šì€ ìˆ˜ì •ì‚¬í•­:" -#: src/slic3r/GUI/Tab.cpp:2586 +#: src/slic3r/GUI/Tab.cpp:2702 msgid "is not compatible with printer" msgstr "프린터와 호완 ë˜ì§€ 않습니다" -#: src/slic3r/GUI/Tab.cpp:2587 +#: src/slic3r/GUI/Tab.cpp:2703 msgid "is not compatible with print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2589 +#: src/slic3r/GUI/Tab.cpp:2705 msgid "and it has the following unsaved changes:" msgstr "저장ë˜ì§€ ì•Šì€ ë³€ê²½ì ì€ 다ìŒê³¼ 같습니다:" -#: src/slic3r/GUI/Tab.cpp:2592 +#: src/slic3r/GUI/Tab.cpp:2708 msgid "Discard changes and continue anyway?" msgstr "ìˆ˜ì •ëœ ì‚¬í•­ì„ ì·¨ì†Œí•˜ê³  계ì†í•˜ê² ìŠµë‹ˆê¹Œ?" -#: src/slic3r/GUI/Tab.cpp:2593 +#: src/slic3r/GUI/Tab.cpp:2709 msgid "Unsaved Changes" msgstr "미 ì €ìž¥ëœ ë³€ê²½ì " -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 +#: src/slic3r/GUI/Tab.cpp:2721 msgid "Please check your object list before preset changing." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2699 +#: src/slic3r/GUI/Tab.cpp:2801 +msgid "Copy" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2823 msgid "The supplied name is empty. It can't be saved." msgstr "íŒŒì¼ ì´ë¦„ì´ ë¹„ì–´ 있습니다. 저장할 수 없습니다." -#: src/slic3r/GUI/Tab.cpp:2704 +#: src/slic3r/GUI/Tab.cpp:2828 msgid "Cannot overwrite a system profile." msgstr "시스템 프로파ì¼ì„ ê²¹ì³ ì“¸ 수 없습니다." -#: src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Cannot overwrite an external profile." msgstr "외부 í”„ë¡œí•„ì„ ë®ì–´ 쓸 수 없습니다." -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2858 msgid "remove" msgstr "제거(remove)" -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2858 msgid "delete" msgstr "지우기(delete)" -#: src/slic3r/GUI/Tab.cpp:2735 +#: src/slic3r/GUI/Tab.cpp:2859 msgid "Are you sure you want to " msgstr "ì •ë§ë¡œ 다ìŒê³¼ ê°™ì´ í•˜ê² ìŠµë‹ˆê¹Œ? " -#: src/slic3r/GUI/Tab.cpp:2735 +#: src/slic3r/GUI/Tab.cpp:2859 msgid " the selected preset?" msgstr " 를(ê°€) ì„ íƒëœ ì„¤ì •ì„ ì‹¤í–‰ 할까요?" -#: src/slic3r/GUI/Tab.cpp:2736 +#: src/slic3r/GUI/Tab.cpp:2860 msgid "Remove" msgstr "제거(remove)" -#: src/slic3r/GUI/Tab.cpp:2737 +#: src/slic3r/GUI/Tab.cpp:2861 msgid " Preset" msgstr " 기본 설정" -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "ëª¨ë‘ ì„ íƒ" - -#: src/slic3r/GUI/Tab.cpp:2869 +#: src/slic3r/GUI/Tab.cpp:2989 msgid "" "LOCKED LOCK;indicates that the settings are the same as the system values " "for the current option group" msgstr "ìžë¬¼ì‡  잠금 : ì„¤ì •ì´ í˜„ìž¬ 옵션 ê·¸ë£¹ì˜ ì‹œìŠ¤í…œ ê°’ê³¼ ë™ì¼ í•¨ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤" -#: src/slic3r/GUI/Tab.cpp:2872 +#: src/slic3r/GUI/Tab.cpp:2992 msgid "" "UNLOCKED LOCK;indicates that some settings were changed and are not equal to " "the system values for the current option group.\n" @@ -3289,7 +3666,7 @@ msgstr "" "현재 옵션 ê·¸ë£¹ì˜ ëª¨ë“  ì„¤ì •ì„ ì‹œìŠ¤í…œ 값으로 재설정하려면 ìžë¬¼ì‡  잠금 ì•„ì´ì½˜ì„ " "í´ë¦­í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/Tab.cpp:2878 +#: src/slic3r/GUI/Tab.cpp:2998 msgid "" "WHITE BULLET;for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." @@ -3297,7 +3674,7 @@ msgstr "" "í°ìƒ‰ ì´ì•Œ; 왼쪽 버튼 : ì‹œìŠ¤í…œì´ ì•„ë‹Œ 사전 ì„¤ì •ì„ ë‚˜íƒ€ë‚´ë©°,\n" "오른쪽 ë²„íŠ¼ì˜ ê²½ìš° : ì„¤ì •ì´ ìˆ˜ì •ë˜ì§€ 않았 ìŒì„ 나타냅니다." -#: src/slic3r/GUI/Tab.cpp:2882 +#: src/slic3r/GUI/Tab.cpp:3002 msgid "" "BACK ARROW;indicates that the settings were changed and are not equal to the " "last saved preset for the current option group.\n" @@ -3309,14 +3686,14 @@ msgstr "" "현재 옵션 ê·¸ë£¹ì˜ ëª¨ë“  ì„¤ì •ì„ ì‹œìŠ¤í…œ 값으로 재설정하려면 ìžë¬¼ì‡  잠금 ì•„ì´ì½˜ì„ " "í´ë¦­í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/Tab.cpp:2908 +#: src/slic3r/GUI/Tab.cpp:3028 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" msgstr "" "ìžë¬¼ì‡  잠금 ì•„ì´ì½” ì„¤ì •ì´ í˜„ìž¬ 옵션 ê·¸ë£¹ì˜ ì‹œìŠ¤í…œ ê°’ê³¼ ë™ì¼ í•¨ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤" -#: src/slic3r/GUI/Tab.cpp:2910 +#: src/slic3r/GUI/Tab.cpp:3030 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system values for the current option group.\n" @@ -3327,11 +3704,11 @@ msgstr "" "현재 옵션 ê·¸ë£¹ì˜ ëª¨ë“  ì„¤ì •ì„ ì‹œìŠ¤í…œ 값으로 재설정하려면 ìžë¬¼ì‡  잠금 ì•„ì´ì½˜ì„ " "í´ë¦­í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/Tab.cpp:2913 +#: src/slic3r/GUI/Tab.cpp:3033 msgid "WHITE BULLET icon indicates a non system preset." msgstr "í°ìƒ‰ 글머리 ì•„ì´ì½˜ì€ 시스템 사전 ì„¤ì •ì´ ì•„ë‹Œ ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤." -#: src/slic3r/GUI/Tab.cpp:2916 +#: src/slic3r/GUI/Tab.cpp:3036 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." @@ -3339,7 +3716,7 @@ msgstr "" "í°ìƒ‰ 글머리 기호 ì•„ì´ì½˜ì€ ì„¤ì •ì´ í˜„ìž¬ 옵션 ê·¸ë£¹ì— ëŒ€í•´ 마지막으로 저장 ëœ ì‚¬" "ì „ 설정과 ë™ì¼ 하다는 ê²ƒì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤." -#: src/slic3r/GUI/Tab.cpp:2918 +#: src/slic3r/GUI/Tab.cpp:3038 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -3351,12 +3728,12 @@ msgstr "" "마지막 현재 옵션 ê·¸ë£¹ì— ëŒ€ 한 모든 설정 다시 ì„¤ì •ì„ í´ë¦­ 하 ì—¬ 사전 ì„¤ì •ì„ ì €" "장." -#: src/slic3r/GUI/Tab.cpp:2924 +#: src/slic3r/GUI/Tab.cpp:3044 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system value." msgstr "잠긴 ìžë¬¼ì‡  ì•„ì´ì½˜ ê°’ ê°™ì€ ì‹œìŠ¤í…œ ê°’ ìž„ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤." -#: src/slic3r/GUI/Tab.cpp:2925 +#: src/slic3r/GUI/Tab.cpp:3045 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system value.\n" @@ -3365,7 +3742,7 @@ msgstr "" "잠금 í•´ì œ ìžë¬¼ì‡  ì•„ì´ì½˜ ê°’ 변경 ëœ ì‹œìŠ¤í…œ ê°’ì€ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.\n" "시스템 ê°’ì„ í˜„ìž¬ 값으로 설정 하려면 í´ë¦­ 합니다." -#: src/slic3r/GUI/Tab.cpp:2931 +#: src/slic3r/GUI/Tab.cpp:3051 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." @@ -3373,7 +3750,7 @@ msgstr "" "í°ìƒ‰ 글머리 기호 ì•„ì´ì½˜ì€ 마지막으로 저장 한 사전 설정과 ë™ì¼í•œ ê°’ì„ ë‚˜íƒ€ëƒ…ë‹ˆ" "다." -#: src/slic3r/GUI/Tab.cpp:2932 +#: src/slic3r/GUI/Tab.cpp:3052 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" @@ -3382,99 +3759,115 @@ msgstr "" "잠금 í•´ì œ ìžë¬¼ì‡  ì•„ì´ì½˜ ê°’ 변경 ëœ ì‹œìŠ¤í…œ ê°’ì€ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.\n" "시스템 ê°’ì„ í˜„ìž¬ 값으로 설정 하려면 í´ë¦­ 합니다." -#: src/slic3r/GUI/Tab.cpp:3031 +#: src/slic3r/GUI/Tab.cpp:3152 msgid " as:" msgstr " as:" -#: src/slic3r/GUI/Tab.cpp:3075 +#: src/slic3r/GUI/Tab.cpp:3196 msgid "the following postfix are not allowed:" msgstr "ë‹¤ìŒ ì ‘ë¯¸ì‚¬ëŠ” 허용ë˜ì§€ 않습니다:" -#: src/slic3r/GUI/Tab.cpp:3079 +#: src/slic3r/GUI/Tab.cpp:3200 msgid "The supplied name is not available." msgstr "The supplied name is not available." -#: src/slic3r/GUI/Tab.cpp:3092 +#: src/slic3r/GUI/Tab.cpp:3213 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305 msgid "Layers" msgstr "ë ˆì´ì–´" -#: src/slic3r/GUI/Tab.cpp:3098 +#: src/slic3r/GUI/Tab.cpp:3219 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3183 +#: src/slic3r/GUI/Tab.cpp:3313 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3188 +#: src/slic3r/GUI/Tab.cpp:3318 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3196 +#: src/slic3r/GUI/Tab.cpp:3328 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3200 +#: src/slic3r/GUI/Tab.cpp:3333 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 +#: src/slic3r/GUI/Tab.cpp:3395 +msgid "Head penetration should not be greater than the head width." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3396 +msgid "Invalid Head penetration" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3409 +msgid "Invalid pinhead diameter" +msgstr "" + +#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395 msgid "Print Settings" msgstr "출력 설정" -#: src/slic3r/GUI/Tab.hpp:311 +#: src/slic3r/GUI/Tab.hpp:325 msgid "Filament Settings" msgstr "í•„ë¼ë©˜íЏ 설정" -#: src/slic3r/GUI/Tab.hpp:344 +#: src/slic3r/GUI/Tab.hpp:358 msgid "Printer Settings" msgstr "프린터 설정" -#: src/slic3r/GUI/Tab.hpp:367 +#: src/slic3r/GUI/Tab.hpp:381 msgid "Material Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:393 +#: src/slic3r/GUI/Tab.hpp:407 msgid "Save preset" msgstr "사전 설정 저장" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:29 msgid "Update available" msgstr "사용가능한 ì—…ë°ì´íЏ" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:29 msgid "New version of Slic3r PE is available" msgstr "새로운 ë²„ì „ì˜ Slic3r PE 사용 가능" -#: src/slic3r/GUI/UpdateDialogs.cpp:35 +#: src/slic3r/GUI/UpdateDialogs.cpp:36 msgid "To download, follow the link below." msgstr "다운로드하려면 아래 ë§í¬ë¥¼ í´ë¦­í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/UpdateDialogs.cpp:42 +#: src/slic3r/GUI/UpdateDialogs.cpp:44 msgid "Current version:" msgstr "현재 버전:" -#: src/slic3r/GUI/UpdateDialogs.cpp:44 +#: src/slic3r/GUI/UpdateDialogs.cpp:46 msgid "New version:" msgstr "새로운 버전:" -#: src/slic3r/GUI/UpdateDialogs.cpp:52 +#: src/slic3r/GUI/UpdateDialogs.cpp:54 msgid "Don't notify about new releases any more" msgstr "새로운 ìˆ˜ì •ì‚¬í•­ì— ëŒ€í•´ ë” ì´ìƒ 알림 안 함" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 +#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164 msgid "Configuration update" msgstr "구성 ì—…ë°ì´íЏ" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 +#: src/slic3r/GUI/UpdateDialogs.cpp:72 msgid "Configuration update is available" msgstr "구성 ì—…ë°ì´íŠ¸ë¥¼ 사용할 수 있ìŒ" -#: src/slic3r/GUI/UpdateDialogs.cpp:73 +#: src/slic3r/GUI/UpdateDialogs.cpp:75 msgid "" "Would you like to install it?\n" "\n" @@ -3490,15 +3883,15 @@ msgstr "" "\n" "ì—…ë°ì´íЏ ëœ êµ¬ì„± 번들 :" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 +#: src/slic3r/GUI/UpdateDialogs.cpp:111 msgid "Slic3r incompatibility" msgstr "Slic3r와 호환 ë˜ì§€ 않ìŒ" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 +#: src/slic3r/GUI/UpdateDialogs.cpp:111 msgid "Slic3r configuration is incompatible" msgstr "Slic3r êµ¬ì„±ì´ í˜¸í™˜ë˜ì§€ 않습니다" -#: src/slic3r/GUI/UpdateDialogs.cpp:112 +#: src/slic3r/GUI/UpdateDialogs.cpp:114 msgid "" "This version of Slic3r PE is not compatible with currently installed " "configuration bundles.\n" @@ -3516,24 +3909,24 @@ msgstr "" "니다. ì´ë ‡ê²Œí•˜ë©´ì´ Slic3rê³¼ 호환ë˜ëŠ” 파ì¼ì„ 설치하기 ì „ì— ê¸°ì¡´ êµ¬ì„±ì˜ ë°±ì—… 스" "냅 ìƒ·ì„ ìƒì„± í•  수 있습니다.\n" -#: src/slic3r/GUI/UpdateDialogs.cpp:121 +#: src/slic3r/GUI/UpdateDialogs.cpp:123 #, c-format msgid "This Slic3r PE version: %s" msgstr "ì´ Slic3r PE 버전 : % s" -#: src/slic3r/GUI/UpdateDialogs.cpp:126 +#: src/slic3r/GUI/UpdateDialogs.cpp:128 msgid "Incompatible bundles:" msgstr "호환ë˜ì§€ 않는 번들 :" -#: src/slic3r/GUI/UpdateDialogs.cpp:142 +#: src/slic3r/GUI/UpdateDialogs.cpp:144 msgid "Exit Slic3r" msgstr "Exit Slic3r" -#: src/slic3r/GUI/UpdateDialogs.cpp:145 +#: src/slic3r/GUI/UpdateDialogs.cpp:147 msgid "Re-configure" msgstr "재구성" -#: src/slic3r/GUI/UpdateDialogs.cpp:166 +#: src/slic3r/GUI/UpdateDialogs.cpp:168 #, c-format msgid "" "Slic3r PE now uses an updated configuration structure.\n" @@ -3559,15 +3952,15 @@ msgstr "" "새 사전 ì„¤ì •ì„ ì„¤ì •í•˜ê³  ìžë™ 사전 설정 ì—…ë°ì´íŠ¸ë¥¼ 사용할지 여부를 ì„ íƒí•˜ë ¤ë©´ " "다ìŒì˜ % sì„ ê³„ì† ì§„í–‰í•˜ì‹­ì‹œì˜¤." -#: src/slic3r/GUI/UpdateDialogs.cpp:182 +#: src/slic3r/GUI/UpdateDialogs.cpp:184 msgid "For more information please visit our wiki page:" msgstr "ìžì„¸í•œ 정보는 위키 페ì´ì§€ë¥¼ 참조하십시오 :" -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 msgid "Ramming customization" msgstr "ì‚¬ìš©ìž ì •ì˜ ë‹¤ì§€ê¸°(Ramming)" -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" "extruder MM printer. Its purpose is to properly shape the end of the " @@ -3588,49 +3981,49 @@ msgstr "" "전문가 ìˆ˜ì¤€ì˜ ì„¤ì •ì´ë¯€ë¡œ ìž˜ëª»ëœ ì¡°ì •ìœ¼ë¡œ ì¸í•´ 용지 걸림, 압출기 íœ ì´ í•„ë¼ë©˜" "트 ë“±ì— ì—°ì‚­ ë  ìˆ˜ 있습니다." -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 msgid "Total ramming time" msgstr "ì´ ëž˜ë° ì‹œê°„" -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 msgid "Total rammed volume" msgstr "ì´ ë ˆë¯¸ë“œ ì–‘" -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 msgid "Ramming line width" msgstr "ëž˜ë° ì„  너비" -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 msgid "Ramming line spacing" msgstr "ëž˜ë° ì„  간격" -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 msgid "Wipe tower - Purging volume adjustment" msgstr "와ì´í”„ 타워 - 버려진 í•„ë¼ë©˜íЏ ì¡°ì ˆ" -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 msgid "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." msgstr "여기서 주어진 ë„구 ìŒì— 필요한 ì •í™” 용량 (mm³)ì„ ì¡°ì •í•  수 있습니다." -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 msgid "Extruder changed to" msgstr "ìµìŠ¤íŠ¸ë£¨ë” ë²ˆê²½" -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 msgid "unloaded" msgstr "언로드(unloaded)" -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 msgid "loaded" msgstr "로드(loaded)" -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 msgid "Tool #" msgstr "툴(Tool) #" -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." @@ -3638,15 +4031,15 @@ msgstr "" "ì´ ì •í™” ëŸ‰ì€ ì–´ëŠ ê³µêµ¬ê°€ë¡œë“œ / 언로드ë˜ëŠ”ì§€ì— ë”°ë¼ ì•„ëž˜ì˜ ë‘ ê°’ì„ í•©ì‚°í•˜ì—¬ 계" "ì‚°ë©ë‹ˆë‹¤." -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 msgid "Volume to purge (mm³) when the filament is being" msgstr "제거할 í•„ë¼ë©˜íЏ ì–‘ (mm³)" -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 msgid "From" msgstr "From" -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 msgid "" "Switching to simple settings will discard changes done in the advanced " "mode!\n" @@ -3657,57 +4050,87 @@ msgstr "" "\n" "계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show simplified settings" msgstr "간단한 설정보기" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show advanced settings" msgstr "고급 설정보기" -#: src/slic3r/Utils/OctoPrint.cpp:65 +#: src/slic3r/GUI/wxExtensions.cpp:2398 +#, c-format +msgid "Switch to the %s mode" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:2399 +#, c-format +msgid "Current mode is %s" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "" + +#: src/slic3r/Utils/OctoPrint.cpp:69 #, c-format msgid "Mismatched type of print host: %s" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:80 +#: src/slic3r/Utils/OctoPrint.cpp:84 msgid "Connection to OctoPrint works correctly." msgstr "OctoPrintì— ì—°ê²°í•˜ë©´ 올바르게 ìž‘ë™í•©ë‹ˆë‹¤." -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Could not connect to OctoPrint" msgstr "OctoPrintì— ì—°ê²°í•  수 없습니다" -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "참고 : OctoPrint 버전 1.1.0 ì´ìƒì´ 필요합니다." -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:195 msgid "Connection to Prusa SLA works correctly." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:186 +#: src/slic3r/Utils/OctoPrint.cpp:200 msgid "Could not connect to Prusa SLA" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:571 +#: src/slic3r/Utils/PresetUpdater.cpp:583 #, c-format msgid "requires min. %s and max. %s" msgstr "최소. %s 와 최대. %s" -#: src/slic3r/Utils/PresetUpdater.cpp:576 +#: src/slic3r/Utils/PresetUpdater.cpp:588 #, c-format msgid "requires min. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:578 +#: src/slic3r/Utils/PresetUpdater.cpp:590 #, c-format msgid "requires max. %s" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:235 @@ -3715,7 +4138,7 @@ msgid "Failed loading the input model." msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" +msgid "Repairing model by the Netfabb service" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:248 @@ -3723,8 +4146,8 @@ msgid "Mesh repair failed." msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:263 @@ -3733,62 +4156,246 @@ msgstr "" msgid "Saving mesh into the 3MF container failed." msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:334 +#: src/slic3r/Utils/FixModelByWin10.cpp:340 msgid "Model fixing" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:335 +#: src/slic3r/Utils/FixModelByWin10.cpp:341 msgid "Exporting model..." msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:357 +#: src/slic3r/Utils/FixModelByWin10.cpp:368 msgid "Export of a temporary 3mf file failed" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:372 +#: src/slic3r/Utils/FixModelByWin10.cpp:383 msgid "Import of the repaired 3mf file failed" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:375 +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 msgid "Model repair finished" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:379 +#: src/slic3r/Utils/FixModelByWin10.cpp:406 msgid "Model repair canceled" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 msgid "Model repaired successfully" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model Repair by the Netfabb service" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model repair failed: \n" msgstr "" -#: src/libslic3r/Print.cpp:1175 +#: src/libslic3r/Zipper.cpp:35 +msgid "undefined error" +msgstr "" + +#: src/libslic3r/Zipper.cpp:37 +msgid "too many files" +msgstr "" + +#: src/libslic3r/Zipper.cpp:39 +msgid "file too large" +msgstr "" + +#: src/libslic3r/Zipper.cpp:41 +msgid "unsupported method" +msgstr "" + +#: src/libslic3r/Zipper.cpp:43 +msgid "unsupported encryption" +msgstr "" + +#: src/libslic3r/Zipper.cpp:45 +msgid "unsupported feature" +msgstr "" + +#: src/libslic3r/Zipper.cpp:47 +msgid "failed finding central directory" +msgstr "" + +#: src/libslic3r/Zipper.cpp:49 +msgid "not a ZIP archive" +msgstr "" + +#: src/libslic3r/Zipper.cpp:51 +msgid "invalid header or archive is corrupted" +msgstr "" + +#: src/libslic3r/Zipper.cpp:53 +msgid "unsupported multidisk archive" +msgstr "" + +#: src/libslic3r/Zipper.cpp:55 +msgid "decompression failed or archive is corrupted" +msgstr "" + +#: src/libslic3r/Zipper.cpp:57 +msgid "compression failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:59 +msgid "unexpected decompressed size" +msgstr "" + +#: src/libslic3r/Zipper.cpp:61 +msgid "CRC-32 check failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:63 +msgid "unsupported central directory size" +msgstr "" + +#: src/libslic3r/Zipper.cpp:65 +msgid "allocation failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:67 +msgid "file open failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:69 +msgid "file create failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:71 +msgid "file write failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:73 +msgid "file read failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:75 +msgid "file close failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:77 +msgid "file seek failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:79 +msgid "file stat failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:81 +msgid "invalid parameter" +msgstr "" + +#: src/libslic3r/Zipper.cpp:83 +msgid "invalid filename" +msgstr "" + +#: src/libslic3r/Zipper.cpp:85 +msgid "buffer too small" +msgstr "" + +#: src/libslic3r/Zipper.cpp:87 +msgid "internal error" +msgstr "" + +#: src/libslic3r/Zipper.cpp:89 +msgid "file not found" +msgstr "" + +#: src/libslic3r/Zipper.cpp:91 +msgid "archive is too large" +msgstr "" + +#: src/libslic3r/Zipper.cpp:93 +msgid "validation failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:95 +msgid "write calledback failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:105 +msgid "Error with zip archive" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2153 +msgid "Starting" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2154 +msgid "Filtering" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2155 +msgid "Generate pinheads" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2156 +msgid "Classification" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2157 +msgid "Routing to ground" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2158 +msgid "Routing supports to model surface" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2159 +msgid "Cascading pillars" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2160 +msgid "Processing small holes" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2161 +msgid "Done" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2162 +msgid "Abort" +msgstr "" + +#: src/libslic3r/Print.cpp:1136 msgid "All objects are outside of the print volume." msgstr "모든 개체가 ì¸ì‡„ 볼륨 ì™¸ë¶€ì— ìžˆìŠµë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1201 +#: src/libslic3r/Print.cpp:1165 msgid "Some objects are too close; your extruder will collide with them." msgstr "ì¼ë¶€ 개체가 너무 ê°€ê¹ìŠµë‹ˆë‹¤. ê·€í•˜ì˜ ì••ì¶œê¸°ê°€ 그들과 ì¶©ëŒí•©ë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1216 +#: src/libslic3r/Print.cpp:1180 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "ì¼ë¶€ 개체는 너무 í¬ê³  ìµìŠ¤íŠ¸ë£¨ë” ì¶©ëŒì—†ì´ ì¸ì‡„ í•  수 없습니다." -#: src/libslic3r/Print.cpp:1226 +#: src/libslic3r/Print.cpp:1190 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "" "나선형 꽃병(Spiral Vase) ì˜µì…˜ì€ ë‹¨ì¼ ê°œì²´ë¥¼ ì¸ì‡„ í•  때만 사용할 수 있습니다." -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1192 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." @@ -3796,7 +4403,7 @@ msgstr "" "나선형 꽃병 옵션(Spiral Vase)ì€ ë‹¨ì¼ ìž¬ë£Œ ê°ì²´ë¥¼ ì¸ì‡„ í•  때만 사용할 수 있습" "니다." -#: src/libslic3r/Print.cpp:1234 +#: src/libslic3r/Print.cpp:1198 msgid "" "All extruders must have the same diameter for single extruder multimaterial " "printer." @@ -3804,13 +4411,13 @@ msgstr "" "모든 ìµìŠ¤íŠ¸ë£¨ë”는 멀티메터리얼 í”„ë¦°í„°ì˜ ì‹±ê¸€ ìµìŠ¤íŠ¸ë£¨ë”ì— ëŒ€í•´ ë™ì¼í•œ ì§ê²½ì„ " "가져야합니다." -#: src/libslic3r/Print.cpp:1239 +#: src/libslic3r/Print.cpp:1203 msgid "" "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " "and Repetier G-code flavors." msgstr "" -#: src/libslic3r/Print.cpp:1241 +#: src/libslic3r/Print.cpp:1205 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." @@ -3818,7 +4425,7 @@ msgstr "" "와ì´í”„ 타워는 현재 ìƒëŒ€ì  압출기 어드레싱 (use_relative_e_distances = 1)ì—서" "ë§Œ ì§€ì›ë©ë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1253 +#: src/libslic3r/Print.cpp:1226 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " "layer heigths" @@ -3826,7 +4433,7 @@ msgstr "" "와ì´í”„ 타워 (Wipe Tower)는 ê°™ì€ ë ˆì´ì–´ 높ì´ì— 경우 여러 ê°ì²´ì— 대해서만 ì§€ì›" "ë©ë‹ˆë‹¤" -#: src/libslic3r/Print.cpp:1255 +#: src/libslic3r/Print.cpp:1228 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" @@ -3834,7 +4441,7 @@ msgstr "" "와ì´í”„ 타워는 ê°™ì€ ìˆ˜ì˜ ë¼í”„트 ë ˆì´ì–´ ìœ„ì— ì¸ì‡„ ëœ ê²½ìš° 여러 ê°ì²´ì— 대해서만 " "ì§€ì›ë©ë‹ˆë‹¤" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1230 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" @@ -3842,30 +4449,30 @@ msgstr "" "와ì´í”„ 타워는 ë™ì¼í•œ support_material_contact_distance로 ì¸ì‡„ ëœ ê²½ìš° 여러 ê°" "ì²´ì— ëŒ€í•´ì„œë§Œ ì§€ì›ë©ë‹ˆë‹¤" -#: src/libslic3r/Print.cpp:1259 +#: src/libslic3r/Print.cpp:1232 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." msgstr "" "와ì´í”„ 타워는 ë˜‘ê°™ì´ ìŠ¬ë¼ì´ìФ ëœ ê²½ìš° 여러 오브ì íŠ¸ì— ëŒ€í•´ì„œë§Œ ì§€ì›ë©ë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1281 +#: src/libslic3r/Print.cpp:1261 msgid "" "The Wipe tower is only supported if all objects have the same layer height " "profile" msgstr "" "모든 오브ì íŠ¸ì˜ ë ˆì´ì–´ ë†’ì´ í”„ë¡œí•„ì´ ë™ì¼í•œ 경우ì—ë§Œ 와ì´í”„ 타워가 ì§€ì›ë©ë‹ˆë‹¤" -#: src/libslic3r/Print.cpp:1290 +#: src/libslic3r/Print.cpp:1271 msgid "The supplied settings will cause an empty print." msgstr "ì œê³µëœ ì„¤ì •ìœ¼ë¡œ ì¸í•´ 빈 ì¸ì‡„ê°€ ë°œìƒí•©ë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1307 +#: src/libslic3r/Print.cpp:1288 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "하나 ì´ìƒì˜ ê°œì²´ì— í”„ë¦°í„°ì—없는 압출기가 지정ë˜ì—ˆìŠµë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1316 +#: src/libslic3r/Print.cpp:1297 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " @@ -3876,13 +4483,13 @@ msgstr "" "(support_material_extruder == 0 ë˜ëŠ” support_material_interface_extruder == " "0)로 ì¸ì‡„ë˜ëŠ” 경우 모든 ë…¸ì¦ì€ ë™ì¼í•œ 지름ì´ì–´ì•¼í•©ë‹ˆë‹¤." -#: src/libslic3r/Print.cpp:1324 +#: src/libslic3r/Print.cpp:1305 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers " "need to be synchronized with the object layers." msgstr "" -#: src/libslic3r/Print.cpp:1328 +#: src/libslic3r/Print.cpp:1309 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " @@ -3890,27 +4497,82 @@ msgid "" "set to 0)." msgstr "" -#: src/libslic3r/Print.cpp:1335 +#: src/libslic3r/Print.cpp:1316 msgid "first_layer_height" msgstr "first_layer_height" -#: src/libslic3r/Print.cpp:1350 +#: src/libslic3r/Print.cpp:1331 msgid "First layer height can't be greater than nozzle diameter" msgstr "첫번째 ë ˆì´ì–´ 높ì´ëŠ” ë…¸ì¦ ì§ê²½ë³´ë‹¤ í´ ìˆ˜ 없습니다" -#: src/libslic3r/Print.cpp:1354 +#: src/libslic3r/Print.cpp:1335 msgid "Layer height can't be greater than nozzle diameter" msgstr "ë ˆì´ì–´ 높ì´ëŠ” ë…¸ì¦ ì§ê²½ë³´ë‹¤ í´ ìˆ˜ 없습니다" -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 +#: src/libslic3r/SLAPrint.cpp:55 +msgid "Slicing model" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801 +msgid "Generating support points" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:57 +msgid "Generating support tree" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:58 +msgid "Generating pad" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:59 +msgid "Slicing supports" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:71 +msgid "Merging slices and calculating statistics" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:72 +msgid "Rasterizing layers" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:605 +msgid "" +"Cannot proceed without support points! Add support points or disable support " +"generation." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:617 +msgid "Elevation is too low for object." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:699 +msgid "Slicing had to be stopped due to an internal error." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859 +#: src/libslic3r/SLAPrint.cpp:907 +msgid "Visualizing supports" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:1449 +msgid "Slicing done" +msgstr "" + +#: src/libslic3r/PrintBase.cpp:65 +msgid "Failed processing of the output_filename_format template." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 msgid "Printer technology" msgstr "" -#: src/libslic3r/PrintConfig.cpp:41 +#: src/libslic3r/PrintConfig.cpp:50 msgid "Bed shape" msgstr "배드 모양" -#: src/libslic3r/PrintConfig.cpp:48 +#: src/libslic3r/PrintConfig.cpp:57 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." @@ -3918,21 +4580,52 @@ msgstr "" "ì´ ì„¤ì •ì€ ìŠ¬ë¼ì´ìФ/ë ˆì´ì–´ì˜ 높ì´(ë”°ë¼ì„œ ì´ ìˆ˜)를 제어한다. ì–‡ì€ ì¸µì€ ë” ë‚˜ì€ " "ì •í™•ì„±ì„ ì œê³µí•˜ì§€ë§Œ ì¸ì‡„하는 ë°ëŠ” ë” ë§Žì€ ì‹œê°„ì´ ê±¸ë¦°ë‹¤." -#: src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:64 msgid "Max print height" msgstr "최대 프린트 높ì´" -#: src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:65 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." msgstr "ì¸ì‡„ ì¤‘ì— ìµìŠ¤íŠ¸ë£¨ë”ê°€ ë„달 í•  수있는 최대 높ì´ë¡œ 설정하십시오." +#: src/libslic3r/PrintConfig.cpp:71 +msgid "Slice gap closing radius" +msgstr "" + #: src/libslic3r/PrintConfig.cpp:73 +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:81 +msgid "Hostname, IP or URL" +msgstr "호스트 ì´ë¦„(Hostname), IP or URL" + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:88 +msgid "API Key / Password" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:89 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:111 msgid "Avoid crossing perimeters" msgstr "ì¶œë ¥ëœ ì™¸ì¸¡ì„ í”¼í•˜ì„¸ìš”" -#: src/libslic3r/PrintConfig.cpp:74 +#: src/libslic3r/PrintConfig.cpp:112 msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " @@ -3942,11 +4635,11 @@ msgstr "" "(Bowling) 압출기가 í˜ëŸ¬ 나오기 쉬운 ê²½ìš°ì— ì£¼ë¡œ 유용합니다. ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜" "ë©´ ì¸ì‡„ ë° G 코드 ìƒì„± ì†ë„ê°€ ëŠë ¤ì§‘니다." -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976 msgid "Other layers" msgstr "다른 ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:83 +#: src/libslic3r/PrintConfig.cpp:120 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." @@ -3954,11 +4647,11 @@ msgstr "" "첫 번째 ë ˆì´ì–´ ì´í›„ì˜ ë ˆì´ì–´ 온ë„. ì´ ê°’ì„ 0으로 설정하면 출력ì—서 ​​베드 ì˜¨ë„ " "제어 ëª…ë ¹ì„ ë¹„í™œì„±í™”í•©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:86 +#: src/libslic3r/PrintConfig.cpp:122 msgid "Bed temperature" msgstr "배드 온ë„" -#: src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:129 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " @@ -3968,11 +4661,11 @@ msgstr "" "설정과 [layer_num] ë° [layer_z]ì— ëŒ€í•œ ìžë¦¬ 표시 ìž ë³€ìˆ˜ë¥¼ 사용할 수 있습니" "다." -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:139 msgid "Between objects G-code" msgstr "ê°ì²´ ê°„ G 코드" -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:140 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -3987,24 +4680,19 @@ msgstr "" "ì§€ 않습니다. 모든 Slic3r ì„¤ì •ì— ìžë¦¬ 표시 변수를 사용할 수 있으므로 ì›í•˜ëŠ” 위" "ì¹˜ì— \"M109 S [first_layer_temperature]\"ëª…ë ¹ì„ ë„£ì„ ìˆ˜ 있습니다." -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "바닥(Bottom)" - -#: src/libslic3r/PrintConfig.cpp:116 +#: src/libslic3r/PrintConfig.cpp:150 msgid "Number of solid layers to generate on bottom surfaces." msgstr "ë°”ë‹¥ë©´ì— ìƒì„± í•  솔리드 ë ˆì´ì–´ì˜ 수." -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:151 msgid "Bottom solid layers" msgstr "바닥 ë‹¨ì¼ ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:123 +#: src/libslic3r/PrintConfig.cpp:156 msgid "Bridge" msgstr "브리지" -#: src/libslic3r/PrintConfig.cpp:124 +#: src/libslic3r/PrintConfig.cpp:157 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." @@ -4012,18 +4700,18 @@ msgstr "" "ì´ê²ƒì€ 프린터가 ë¸Œë¦¿ì§€ì— ì‚¬ìš©í•  ê°€ì†ë„입니다. ë¸Œë¦¬ì§€ì˜ ê°€ì† ì œì–´ë¥¼ 사용하지 " "않으려면 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 +#: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302 +#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1144 src/libslic3r/PrintConfig.cpp:1333 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:133 +#: src/libslic3r/PrintConfig.cpp:165 msgid "Bridging angle" msgstr "브릿지 ê°ë„" -#: src/libslic3r/PrintConfig.cpp:135 +#: src/libslic3r/PrintConfig.cpp:167 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " @@ -4033,32 +4721,33 @@ msgstr "" "로 계산ë©ë‹ˆë‹¤. 그렇지 않으면 ì œê³µëœ ê°ë„ê°€ 모든 ë¸Œë¦¬ì§€ì— ì‚¬ìš©ë©ë‹ˆë‹¤. ê°ë„ ì œ" "로는 180 °를 사용하십시오." -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732 +#: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961 +#: src/libslic3r/PrintConfig.cpp:2459 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:176 msgid "Bridges fan speed" msgstr "브릿지 팬 ì†ë„" -#: src/libslic3r/PrintConfig.cpp:146 +#: src/libslic3r/PrintConfig.cpp:177 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "ì´ íŒ¬ ì†ë„는 모든 브릿지 ë° ì˜¤ë²„í–‰ ì¤‘ì— ì ìš©ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 +#: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216 +#: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258 +#: src/libslic3r/PrintConfig.cpp:2498 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:155 +#: src/libslic3r/PrintConfig.cpp:185 msgid "Bridge flow ratio" msgstr "브릿지 유량(flow)ê°’" -#: src/libslic3r/PrintConfig.cpp:157 +#: src/libslic3r/PrintConfig.cpp:187 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -4069,42 +4758,42 @@ msgstr "" "겨 처ì§ì„ 방지하기 위해 약간 ì¤„ì¼ ìˆ˜ 있지만 기본 ì„¤ì •ì€ ì¼ë°˜ì ìœ¼ë¡œ ì¢‹ì§€ë§Œì´ " "문제를 해결하기 ì „ì— ëƒ‰ê° (팬 사용)ì„ ì‹œë„해야합니다." -#: src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:197 msgid "Bridges" msgstr "브릿지(Bridges)" -#: src/libslic3r/PrintConfig.cpp:170 +#: src/libslic3r/PrintConfig.cpp:199 msgid "Speed for printing bridges." msgstr "브릿지 ì¸ì‡„ ì†ë„." -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593 +#: src/libslic3r/PrintConfig.cpp:601 src/libslic3r/PrintConfig.cpp:628 +#: src/libslic3r/PrintConfig.cpp:647 src/libslic3r/PrintConfig.cpp:873 +#: src/libslic3r/PrintConfig.cpp:1000 src/libslic3r/PrintConfig.cpp:1078 +#: src/libslic3r/PrintConfig.cpp:1098 src/libslic3r/PrintConfig.cpp:1111 +#: src/libslic3r/PrintConfig.cpp:1122 src/libslic3r/PrintConfig.cpp:1175 +#: src/libslic3r/PrintConfig.cpp:1234 src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1536 src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1940 src/libslic3r/PrintConfig.cpp:2051 msgid "mm/s" msgstr "mm/s" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:207 msgid "Brim width" msgstr "브림 í­" -#: src/libslic3r/PrintConfig.cpp:179 +#: src/libslic3r/PrintConfig.cpp:208 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "첫 번째 ë ˆì´ì–´ì˜ ê° ê°ì²´ ì£¼ìœ„ì— ì¸ì‡„ ë  ê°€ìž¥ìžë¦¬ì˜ 가로 í­ìž…니다." -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:215 msgid "Clip multi-part objects" msgstr "여러 파트 오브ì íЏ í´ë¦½" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:216 msgid "" "When printing multi-material objects, this settings will make slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " @@ -4114,19 +4803,19 @@ msgstr "" "ì²´ 파트를 서로 ê²¹ì³ì„œ 잘ë¼ë‚¼ 수 있습니다 (ë‘ ë²ˆì§¸ ë¶€ë¶„ì€ ì²« 번째 부분ì—서 í´" "리핑ë˜ë©° 세 번째 ë¶€ë¶„ì€ ì²« 번째 ë° ë‘ ë²ˆì§¸ 부분ì—서 잘립니다)." -#: src/libslic3r/PrintConfig.cpp:196 +#: src/libslic3r/PrintConfig.cpp:223 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:197 +#: src/libslic3r/PrintConfig.cpp:224 msgid "Heights at which a filament change is to occur. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:207 +#: src/libslic3r/PrintConfig.cpp:234 msgid "Compatible printers condition" msgstr "호환 가능한 프린터 ì¡°ê±´" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:235 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " @@ -4135,22 +4824,22 @@ msgstr "" "활성 프린터 프로파ì¼ì˜ 구성 ê°’ì„ ì‚¬ìš©í•˜ëŠ” 부울 표현ì‹. ì´ í‘œí˜„ì‹ì´ true로 í‰" "ê°€ë˜ë©´ì´ í”„ë¡œí•„ì€ í™œì„± 프린터 프로필과 호환ë˜ëŠ” 것으로 간주ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:220 +#: src/libslic3r/PrintConfig.cpp:249 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:221 +#: src/libslic3r/PrintConfig.cpp:250 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:267 msgid "Complete individual objects" msgstr "개별 개체 완성" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:268 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -4162,11 +4851,11 @@ msgstr "" "피할 때 유용합니다. Slic3rì€ ì••ì¶œê¸° ì¶©ëŒì„ 경고하고 예방해야하지만 조심하십시" "오." -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:276 msgid "Enable auto cooling" msgstr "ìžë™ ëƒ‰ê° ì‚¬ìš©" -#: src/libslic3r/PrintConfig.cpp:246 +#: src/libslic3r/PrintConfig.cpp:277 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." @@ -4174,23 +4863,23 @@ msgstr "" "ì´ í”Œëž˜ê·¸ëŠ” ë ˆì´ì–´ ì¸ì‡„ ì‹œê°„ì— ë”°ë¼ ì¸ì‡„ ì†ë„와 팬 ì†ë„를 조정하는 ìžë™ ëƒ‰ê° " "논리를 활성화합니다." -#: src/libslic3r/PrintConfig.cpp:252 +#: src/libslic3r/PrintConfig.cpp:282 msgid "Cooling tube position" msgstr "ëƒ‰ê° íŠœë¸Œ 위치" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:283 msgid "Distance of the center-point of the cooling tube from the extruder tip " msgstr "압출기 íŒì—서 ëƒ‰ê° íŠœë¸Œì˜ ì¤‘ì‹¬ì ê¹Œì§€ì˜ 거리 " -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:290 msgid "Cooling tube length" msgstr "ëƒ‰ê° íŠœë¸Œ 길ì´" -#: src/libslic3r/PrintConfig.cpp:262 +#: src/libslic3r/PrintConfig.cpp:291 msgid "Length of the cooling tube to limit space for cooling moves inside it " msgstr "ë‚´ë¶€ì˜ ëƒ‰ê° ì´ë™ì„ 위해 ê³µê°„ì„ ì œí•œí•˜ëŠ” ëƒ‰ê° íŠœë¸Œì˜ ê¸¸ì´ " -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:299 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " @@ -4199,11 +4888,11 @@ msgstr "" "ì—­í•  별 ê°€ì†ë„ ê°’ì´ ì‚¬ìš© ëœ í›„ì— í”„ë¦°í„°ê°€ 재설정ë˜ëŠ” ì†ë„입니다 (둘레 / ì¶©" "ì „). ê°€ì†ì„ 전혀 재설정하지 않으려면 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:281 +#: src/libslic3r/PrintConfig.cpp:308 msgid "Default filament profile" msgstr "기본 í•„ë¼ë©˜íЏ 프로파ì¼" -#: src/libslic3r/PrintConfig.cpp:282 +#: src/libslic3r/PrintConfig.cpp:309 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " @@ -4212,12 +4901,12 @@ msgstr "" "현재 프린터 프로파ì¼ê³¼ ì—°ê´€ëœ ê¸°ë³¸ í•„ë¼ë©˜íЏ 프로파ì¼. 현재 프린터 프로파ì¼ì„ " "ì„ íƒí•˜ë©´ ì´ í•„ë¼ë©˜íЏ 프로파ì¼ì´ 활성화ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:315 msgid "Default print profile" msgstr "기본 ì¸ì‡„ 프로파ì¼" -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337 +#: src/libslic3r/PrintConfig.cpp:2348 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " @@ -4226,11 +4915,11 @@ msgstr "" "현재 프린터 프로파ì¼ê³¼ ì—°ê´€ëœ ê¸°ë³¸ ì¸ì‡„ 프로파ì¼. 현재 프린터 프로파ì¼ì„ ì„ íƒ" "í•˜ë©´ì´ ì¸ì‡„ 프로파ì¼ì´ 활성화ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:322 msgid "Disable fan for the first" msgstr "첫 번째 팬 사용 중지" -#: src/libslic3r/PrintConfig.cpp:294 +#: src/libslic3r/PrintConfig.cpp:323 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." @@ -4238,37 +4927,37 @@ msgstr "" "ì´ ê°’ì„ ì–‘ìˆ˜ 값으로 설정하면 첫 번째 ë ˆì´ì–´ì—서 íŒ¬ì„ ì‚¬ìš©í•˜ì§€ 않ë„ë¡ ì„¤ì •í•˜" "ì—¬ ì ‘ì°©ë ¥ì„ ì•…í™”ì‹œí‚¤ì§€ 않습니다." -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 +#: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945 +#: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1888 msgid "layers" msgstr "ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:332 msgid "Don't support bridges" msgstr "서í¬íŠ¸ì™€ 브릿지를 사용하지 마세요" -#: src/libslic3r/PrintConfig.cpp:306 +#: src/libslic3r/PrintConfig.cpp:334 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "" "브릿지 ì˜ì—­ ì•„ëž˜ì— ì„œí¬íŒ… 재료가 ìƒì„±ë˜ëŠ” ê²ƒì„ ë°©ì§€í•˜ê¸°ìœ„í•œ ì‹¤í—˜ì  ì˜µì…˜." -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:340 msgid "Distance between copies" msgstr "복사본 ê°„ 거리" -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:341 msgid "Distance used for the auto-arrange feature of the plater." msgstr "플래터(plater)ì˜ ìžë™ ì •ë ¬ ê¸°ëŠ¥ì— ì‚¬ìš©ë˜ëŠ” 거리입니다." -#: src/libslic3r/PrintConfig.cpp:322 +#: src/libslic3r/PrintConfig.cpp:348 msgid "Elephant foot compensation" msgstr "ì½”ë¼ë¦¬ ë°œ(Elephant foot) ë³´ìƒê°’" -#: src/libslic3r/PrintConfig.cpp:324 +#: src/libslic3r/PrintConfig.cpp:350 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." @@ -4276,7 +4965,7 @@ msgstr "" "첫 번째 ë ˆì´ì–´ëŠ” 구성 요소 ê°’ì— ë”°ë¼ XY í‰ë©´ì—서 수축ë˜ì–´ ì¼ì¸µ 스 퀴시 ì½”ë¼ë¦¬" "ë°œ(Elephant Foot) 효과를 보완합니다." -#: src/libslic3r/PrintConfig.cpp:334 +#: src/libslic3r/PrintConfig.cpp:359 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." @@ -4284,7 +4973,7 @@ msgstr "" "ì´ ì¢…ë£Œ 절차는 출력 파ì¼ì˜ ëì— ì‚½ìž…ëœë‹¤. 모든 Slic3r ì„¤ì •ì— ìžë¦¬ í‘œì‹œìž ë³€ìˆ˜" "를 사용할 수 있다는 ì ì— 유ì˜í•˜ì‹­ì‹œì˜¤." -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:369 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode. Note that you can use placeholder variables for all " @@ -4295,11 +4984,11 @@ msgstr "" "ì •ì— ìžë¦¬ í‘œì‹œìž ë³€ìˆ˜ë¥¼ 사용할 수 있다는 ì ì— 유ì˜í•˜ì‹­ì‹œì˜¤. 여러 ê°œì˜ ì••ì¶œë¶€" "ê°€ 있는 경우, ê·¸ 코드는 ì••ì¶œ 순서대로 처리ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:356 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Ensure vertical shell thickness" msgstr "ìˆ˜ì§ ì‰˜(shell) ë‘께 확ì¸" -#: src/libslic3r/PrintConfig.cpp:358 +#: src/libslic3r/PrintConfig.cpp:381 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." @@ -4307,44 +4996,52 @@ msgstr "" "경사 표면 ê·¼ì²˜ì— ì†”ë¦¬ë“œ ì¸í•„ì„ ì¶”ê°€í•˜ì—¬ ìˆ˜ì§ ì…¸ ë‘께(ìƒë‹¨+하단 솔리드 ë ˆì´ì–´)" "를 보장하십시오." -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "ìƒë‹¨/하단 채우기(fill) 패턴" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." +#: src/libslic3r/PrintConfig.cpp:387 +msgid "Top fill pattern" msgstr "" -"ìƒë‹¨/하단 ì£¼ìž…ì˜ ì±„ìš°ê¸° íŒ¨í„´ì€ ì¸ì ‘한 ì™¸ë¶€ë©´ì´ ì•„ë‹Œ 외부 솔리드 층ì—ë§Œ ì˜í–¥" -"ì„ ë¯¸ì¹œë‹¤." -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 +#: src/libslic3r/PrintConfig.cpp:389 +msgid "" +"Fill pattern for top infill. This only affects the top visible layer, and " +"not its adjacent solid shells." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795 +#: src/libslic3r/PrintConfig.cpp:1921 msgid "Rectilinear" msgstr "ì§ì„ ë©´(Rectilinear)" -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801 msgid "Concentric" msgstr "ë™ì‹¬ì›(Concentric)" -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805 msgid "Hilbert Curve" msgstr "ížë²„트 곡선(Hilbert Curve)" -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 msgid "Archimedean Chords" msgstr "아르키메ë°ìš°ìФ(Archimedean Chords)" -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Octagram Spiral" msgstr "옥타그램 나선(Octagram Spiral)" -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 +#: src/libslic3r/PrintConfig.cpp:408 +msgid "Bottom fill pattern" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:409 +msgid "" +"Fill pattern for bottom infill. This only affects the bottom external " +"visible layer, and not its adjacent solid shells." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424 msgid "External perimeters" msgstr "외측 둘레" -#: src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:416 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -4355,14 +5052,14 @@ msgstr "" "오. 0ì¸ ê²½ìš° 기본 ì••ì¶œ 너비가 사용ë˜ë©°, 그렇지 않으면 1.125 x ë…¸ì¦ ì§ê²½ì´ 사" "ìš©ëœë‹¤. 백분율(예: 200%)로 표현ë˜ëŠ” 경우, ë ˆì´ì–´ 높ì´ì— ê±¸ì³ ê³„ì‚°ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834 +#: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:2022 msgid "mm or % (leave 0 for default)" msgstr "mm ë˜ëŠ” %(ê¸°ë³¸ê°’ì˜ ê²½ìš° 0으로 유지)" -#: src/libslic3r/PrintConfig.cpp:399 +#: src/libslic3r/PrintConfig.cpp:426 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " @@ -4372,17 +5069,17 @@ msgstr "" "(예: 80%)로 표현ë˜ëŠ” 경우 ìœ„ì˜ Perimeter ì†ë„ ì„¤ì •ì— ë”°ë¼ ê³„ì‚°ëœë‹¤. ìžë™ì„ 위" "í•´ 0으로 설정한다." -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 +#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701 +#: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034 msgid "mm/s or %" msgstr "mm/s ë˜ëŠ” %" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:436 msgid "External perimeters first" msgstr "외부 경계선 먼저" -#: src/libslic3r/PrintConfig.cpp:411 +#: src/libslic3r/PrintConfig.cpp:438 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." @@ -4390,11 +5087,11 @@ msgstr "" "기본 역순 대신 가장 바깥쪽부터 가장 안쪽까지 ìœ¤ê³½ì„ ì„ ì¸ì‡„하십시오. 타겟 TTS" "복사하기번역 저장번역 저장번역 수정." -#: src/libslic3r/PrintConfig.cpp:418 +#: src/libslic3r/PrintConfig.cpp:444 msgid "Extra perimeters if needed" msgstr "필요한 경우 추가 둘레" -#: src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:446 #, no-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " @@ -4404,7 +5101,7 @@ msgstr "" "경사 ë²½ì˜ í‹ˆì„ í”¼í•˜ê¸° 위해 필요한 경우 ë” ë§Žì€ perimeter를 추가하십시오. 위" "ì˜ ë£¨í”„ì˜ 70% ì´ìƒì´ ì§€ì§€ë  ë•Œê¹Œì§€ Slic3r는 계ì†í•´ì„œ perimeter를 추가한다." -#: src/libslic3r/PrintConfig.cpp:431 +#: src/libslic3r/PrintConfig.cpp:456 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " @@ -4413,7 +5110,7 @@ msgstr "" "사용할 압출부(ë” êµ¬ì²´ì ì¸ 압출부 ì„¤ì •ì´ ì§€ì •ë˜ì§€ ì•Šì€ ê²½ìš°) ì´ ê°’ì€ ê²½ê³„ ë° " "압출부를 초과하지만 ì§€ì› ì••ì¶œìžë¥¼ 주입하지는 않는다." -#: src/libslic3r/PrintConfig.cpp:444 +#: src/libslic3r/PrintConfig.cpp:468 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -4424,11 +5121,11 @@ msgstr "" "다시 ë§í•˜ë©´, ì´ê²ƒì€ ë‹¹ì‹ ì˜ ì••ì¶œê¸° ì£¼ìœ„ì˜ í‹ˆìƒˆ 실린ë”ì˜ ë†’ì´ì´ë©°, ê·¸ê²ƒì€ ë‹¤ë¥¸ " "ì¸ì‡„ëœ ë¬¼ì²´ì™€ ì¶©ëŒí•˜ê¸° ì „ì— ì••ì¶œê¸°ê°€ ì—¿ë³¼ 수 있는 최대 깊ì´ë¥¼ 나타낸다." -#: src/libslic3r/PrintConfig.cpp:455 +#: src/libslic3r/PrintConfig.cpp:478 msgid "Radius" msgstr "반지름" -#: src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:479 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " @@ -4438,19 +5135,19 @@ msgstr "" "으면 ì•ˆì „ì„ ìœ„í•´ 가장 í° ê°’ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤. ì´ ì„¤ì •ì€ ì¶©ëŒ ì—¬ë¶€ë¥¼ 확ì¸í•˜ê³  플" "ëž˜í„°ì— ê·¸ëž˜í”½ 미리 보기를 표시하기 위해 사용ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:467 +#: src/libslic3r/PrintConfig.cpp:489 msgid "Extruder Color" msgstr "ìµìŠ¤íŠ¸ë£¨ë” ì»¬ëŸ¬" -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 +#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550 msgid "This is only used in the Slic3r interface as a visual help." msgstr "ì´ê²ƒì€ 시ê°ì  ë„움ë§ë¡œ Slic3r ì¸í„°íŽ˜ì´ìФì—서만 사용ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:475 +#: src/libslic3r/PrintConfig.cpp:496 msgid "Extruder offset" msgstr "ìµìŠ¤íŠ¸ë£¨ë” ì˜¤í”„ì…‹" -#: src/libslic3r/PrintConfig.cpp:476 +#: src/libslic3r/PrintConfig.cpp:497 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -4461,11 +5158,11 @@ msgstr "" "ì„ ì‚¬ìš©í•˜ë©´ 첫 번째 ê²ƒì— ëŒ€í•œ ê° ì••ì¶œê¸°ì˜ ë³€ìœ„ë¥¼ 지정할 수 있습니다. ì–‘ì˜ ì¢Œ" "표가 필요합니다 (XY 좌표ì—서 ëºë‹ˆë‹¤)." -#: src/libslic3r/PrintConfig.cpp:486 +#: src/libslic3r/PrintConfig.cpp:506 msgid "Extrusion axis" msgstr "ì••ì¶œ ì¶•" -#: src/libslic3r/PrintConfig.cpp:487 +#: src/libslic3r/PrintConfig.cpp:507 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." @@ -4473,11 +5170,11 @@ msgstr "" "ì´ ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ í”„ë¦°í„°ì˜ ì••ì¶œê¸°ì— ì—°ê²°ëœ ì¶• 문ìžë¥¼ 설정합니다 (보통 Eì´ì§€" "ë§Œ ì¼ë¶€ 프린터는 A를 사용합니다)." -#: src/libslic3r/PrintConfig.cpp:493 +#: src/libslic3r/PrintConfig.cpp:512 msgid "Extrusion multiplier" msgstr "ì••ì¶œ 승수" -#: src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:513 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -4489,11 +5186,11 @@ msgstr "" "ì´ìž…니다. ì´ ê°’ì„ ë” ë³€ê²½í•´ì•¼í•œë‹¤ê³  íŒë‹¨ë˜ë©´ í•„ë¼ë©˜íЏ ì§ê²½ê³¼ 펌웨어 E 단계를 " "확ì¸í•˜ì‹­ì‹œì˜¤." -#: src/libslic3r/PrintConfig.cpp:503 +#: src/libslic3r/PrintConfig.cpp:521 msgid "Default extrusion width" msgstr "기본 ì••ì¶œ í­" -#: src/libslic3r/PrintConfig.cpp:505 +#: src/libslic3r/PrintConfig.cpp:523 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -4506,15 +5203,15 @@ msgstr "" "ì˜ íˆ´íŒ ì°¸ì¡°). 백분율로 표시ë˜ëŠ” 경우 (예 : 230 %) ë ˆì´ì–´ 높ì´ë¥¼ 기준으로 계" "ì‚°ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:509 +#: src/libslic3r/PrintConfig.cpp:527 msgid "mm or % (leave 0 for auto)" msgstr "mm ë˜ëŠ” % (ìžë™ìœ¼ë¡œ 0ì„ ìœ ì§€)" -#: src/libslic3r/PrintConfig.cpp:515 +#: src/libslic3r/PrintConfig.cpp:532 msgid "Keep fan always on" msgstr "í•­ìƒ íŒ¬ 켜기" -#: src/libslic3r/PrintConfig.cpp:516 +#: src/libslic3r/PrintConfig.cpp:533 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." @@ -4522,11 +5219,11 @@ msgstr "" "ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë©´ íŒ¬ì´ ë¹„í™œì„±í™”ë˜ì§€ 않으며 최소한 최소 ì†ë„로 ê³„ì† íšŒì „í•©ë‹ˆ" "다. PLAì— ìœ ìš©í•˜ë©° ABSì— í•´ë¡­ë‹¤." -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:538 msgid "Enable fan if layer print time is below" msgstr "ë ˆì´ì–´ ì¸ì‡„ ì‹œê°„ì´ ë¯¸ë§Œì¸ ê²½ìš° 팬 활성화" -#: src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:539 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " @@ -4535,27 +5232,27 @@ msgstr "" "ë ˆì´ì–´ ì¸ì‡„ 시간ì´ì´ ì´ˆ 미만으로 예ìƒë˜ëŠ” 경우 íŒ¬ì´ í™œì„±í™”ë˜ê³  ì†ë„는 최소 " "ë° ìµœëŒ€ ì†ë„를 보간하여 계산ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637 msgid "approximate seconds" msgstr "근사치 ì´ˆ" -#: src/libslic3r/PrintConfig.cpp:534 +#: src/libslic3r/PrintConfig.cpp:549 msgid "Color" msgstr "색ìƒ" -#: src/libslic3r/PrintConfig.cpp:541 +#: src/libslic3r/PrintConfig.cpp:555 msgid "Filament notes" msgstr "í•„ë¼ë©˜íЏ 메모" -#: src/libslic3r/PrintConfig.cpp:542 +#: src/libslic3r/PrintConfig.cpp:556 msgid "You can put your notes regarding the filament here." msgstr "ì—¬ê¸°ì— í•„ë¼ë©˜íŠ¸ì— ê´€í•œ 메모를 ë„£ì„ ìˆ˜ 있다." -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 +#: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181 msgid "Max volumetric speed" msgstr "최대 ì²´ì  ì†ë„" -#: src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:565 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " @@ -4564,31 +5261,31 @@ msgstr "" "ì´ í•„ë¼ë©˜íŠ¸ì— í—ˆìš©ë˜ëŠ” 최대 ì²´ì  ì†ë„. ì¸ì‡„ë¬¼ì˜ ìµœëŒ€ ì²´ì  ì†ë„를 ì¸ì‡„ ë° í•„ë¼" "멘트 ì²´ì  ì†ë„ 최소로 제한한다. 제한 ì—†ìŒì— 대해 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 +#: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184 msgid "mm³/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:562 +#: src/libslic3r/PrintConfig.cpp:574 msgid "Loading speed" msgstr "로딩 ì†ë„" -#: src/libslic3r/PrintConfig.cpp:563 +#: src/libslic3r/PrintConfig.cpp:575 msgid "Speed used for loading the filament on the wipe tower. " msgstr "와ì´í¼ 탑(wipe)ì— í•„ë¼ë©˜íŠ¸ë¥¼ 장착하는 ë° ì‚¬ìš©ë˜ëŠ” ì†ë„. " -#: src/libslic3r/PrintConfig.cpp:571 +#: src/libslic3r/PrintConfig.cpp:582 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:583 msgid "Speed used at the very beginning of loading phase. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:580 +#: src/libslic3r/PrintConfig.cpp:590 msgid "Unloading speed" msgstr "언로딩 스피드" -#: src/libslic3r/PrintConfig.cpp:581 +#: src/libslic3r/PrintConfig.cpp:591 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " @@ -4596,20 +5293,20 @@ msgstr "" "와ì´í¼ 타워ì—서 í•„ë¼ë©˜íŠ¸ë¥¼ 언로드하는 ë° ì‚¬ìš©ë˜ëŠ” ì†ë„(램핑 후 바로 ì–¸ë¡œë”©ì˜ " "초기 부분ì—는 ì˜í–¥ì„ 주지 않ìŒ). " -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:599 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:600 msgid "" "Speed used for unloading the tip of the filament immediately after ramming. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:599 +#: src/libslic3r/PrintConfig.cpp:607 msgid "Delay after unloading" msgstr "언로드 후 딜레ì´" -#: src/libslic3r/PrintConfig.cpp:600 +#: src/libslic3r/PrintConfig.cpp:608 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " @@ -4618,30 +5315,30 @@ msgstr "" "í•„ë¼ë©˜íŠ¸ë¥¼ 내린 후 기다리는 시간. ì›ëž˜ 치수로 축소하는 ë° ë” ë§Žì€ ì‹œê°„ì´ í•„ìš”" "í•  수있는 유연한 재료로 신뢰할 수있는 공구 êµí™˜ì„ ì–»ì„ ìˆ˜ 있습니다. " -#: src/libslic3r/PrintConfig.cpp:610 +#: src/libslic3r/PrintConfig.cpp:617 msgid "Number of cooling moves" msgstr "ì¿¨ë§ ì´ë™ 숫ìž" -#: src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:618 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " msgstr "" "í•„ë¼ë©˜íŠ¸ëŠ” ëƒ‰ê° íŠœë¸Œì—서 앞뒤로 움ì§ì—¬ 냉ê°ë©ë‹ˆë‹¤. ì›í•˜ëŠ” ì´ë™ ìˆ«ìž ì§€ì • " -#: src/libslic3r/PrintConfig.cpp:620 +#: src/libslic3r/PrintConfig.cpp:626 msgid "Speed of the first cooling move" msgstr "첫 번째 ëƒ‰ê° ì´ë™ ì†ë„" -#: src/libslic3r/PrintConfig.cpp:621 +#: src/libslic3r/PrintConfig.cpp:627 msgid "Cooling moves are gradually accelerating beginning at this speed. " msgstr "ëƒ‰ê° ì†ë„ê°€ 서서히 빨ë¼ì§€ê³  있습니다. " -#: src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:635 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " @@ -4650,45 +5347,45 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:639 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:645 msgid "Speed of the last cooling move" msgstr "마지막 ëƒ‰ê° ì´ë™ ì†ë„" -#: src/libslic3r/PrintConfig.cpp:642 +#: src/libslic3r/PrintConfig.cpp:646 msgid "Cooling moves are gradually accelerating towards this speed. " msgstr "냉ê°ì€ ì´ ì†ë„쪽으로 ì ì°¨ ê°€ì†í™”ë˜ê³  있습니다. " -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:653 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:654 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:661 msgid "Ramming parameters" msgstr "ëž˜ë° íŒŒë¼ë¯¸í„°" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:662 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters " msgstr "" "ì´ ë¬¸ìžì—´ì€ RammingDialogì— ì˜í•´ 편집ë˜ê³  ëž¨ë° íŠ¹ì • 매개 변수를 í¬í•¨í•©ë‹ˆë‹¤ " -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:669 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " "filament during a tool change (when executing the T code). This time is " @@ -4704,11 +5401,11 @@ msgstr "" "ì—¬ê¸°ì— í•„ë¼ë©˜íЏ ì§ê²½ì„ 입력하십시오. ì •ë°€ë„ê°€ 필요하므로 캘리í¼ë¥¼ 사용하여 í•„" "ë¼ë©˜íŠ¸ë¥¼ ë”°ë¼ ì—¬ëŸ¬ 번 측정 한 ë‹¤ìŒ í‰ê· ì„ 계산하십시오." -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:684 msgid "Density" msgstr "ë°€ë„" -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:685 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -4719,41 +5416,41 @@ msgstr "" "ì€ ì•Œë ¤ì§„ 길ì´ì˜ í•„ë¼ë©˜íŠ¸ì˜ ë¬´ê²Œë¥¼ 측정하고 길ì´ì™€ ë³¼ë¥¨ì˜ ë¹„ìœ¨ì„ ê³„ì‚°í•˜ëŠ” 것" "입니다. 변위를 통해 ì§ì ‘ì ìœ¼ë¡œ 부피를 계산하는 ê²ƒì´ ë” ì¢‹ìŠµë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:689 +#: src/libslic3r/PrintConfig.cpp:688 msgid "g/cm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:693 msgid "Filament type" msgstr "í•„ë¼ë©˜íЏ 타입" -#: src/libslic3r/PrintConfig.cpp:696 +#: src/libslic3r/PrintConfig.cpp:694 msgid "The filament material type for use in custom G-codes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:712 +#: src/libslic3r/PrintConfig.cpp:710 msgid "Soluble material" msgstr "수용성 재료" -#: src/libslic3r/PrintConfig.cpp:713 +#: src/libslic3r/PrintConfig.cpp:711 msgid "Soluble material is most likely used for a soluble support." msgstr "수용성 재료눈 ë¬¼ì— ë…¹ëŠ” 서í¬íŠ¸ì— ê°€ìž¥ ë§Žì´ ì‚¬ìš©ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:719 +#: src/libslic3r/PrintConfig.cpp:717 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "kg 당 í•„ë¼ë©˜íЏ ë¹„ìš©ì„ ì—¬ê¸°ì— ìž…ë ¥í•˜ì‹­ì‹œì˜¤. 통계를 내기 위해서 입니다." -#: src/libslic3r/PrintConfig.cpp:720 +#: src/libslic3r/PrintConfig.cpp:718 msgid "money/kg" msgstr "ì›(\\)/kg" -#: src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:727 msgid "Fill angle" msgstr "채움 ê°ë„" -#: src/libslic3r/PrintConfig.cpp:731 +#: src/libslic3r/PrintConfig.cpp:729 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " @@ -4763,60 +5460,60 @@ msgstr "" "ì§€ í•  수있는 최ìƒì˜ ë°©í–¥ì„ ì‚¬ìš©í•˜ì—¬ ë¸Œë¦¿ì§•ì´ ì±„ì›Œì§€ë¯€ë¡œì´ ì„¤ì •ì€ ì˜í–¥ì„ 미치" "ì§€ 않습니다." -#: src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:741 msgid "Fill density" msgstr "채우기(fill) ë°€ë„" -#: src/libslic3r/PrintConfig.cpp:746 +#: src/libslic3r/PrintConfig.cpp:743 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "0 % - 100 % 범위로 표현 ëœ ë‚´ë¶€ 채움(infill)ì˜ ë°€ë„." -#: src/libslic3r/PrintConfig.cpp:782 +#: src/libslic3r/PrintConfig.cpp:778 msgid "Fill pattern" msgstr "채우기(fill) 패턴" -#: src/libslic3r/PrintConfig.cpp:784 +#: src/libslic3r/PrintConfig.cpp:780 msgid "Fill pattern for general low-density infill." msgstr "ì¼ë°˜ ë‚®ì€ ë°€ë„ ì±„ì›€ì˜ íŒ¨í„´." -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:796 msgid "Grid" msgstr "그리드(Grid)" -#: src/libslic3r/PrintConfig.cpp:802 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Triangles" msgstr "삼ê°í˜•(Triangles)" -#: src/libslic3r/PrintConfig.cpp:803 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Stars" msgstr "별(Stars)" -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:799 msgid "Cubic" msgstr "íë¹…" -#: src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:800 msgid "Line" msgstr "ì„ (Line)" -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 +#: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923 msgid "Honeycomb" msgstr "벌집" -#: src/libslic3r/PrintConfig.cpp:808 +#: src/libslic3r/PrintConfig.cpp:803 msgid "3D Honeycomb" msgstr "3D 벌집" -#: src/libslic3r/PrintConfig.cpp:809 +#: src/libslic3r/PrintConfig.cpp:804 msgid "Gyroid" msgstr "ìžì´ë¡œì´ë“œ(Gyroid)" -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 +#: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820 +#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861 msgid "First layer" msgstr "첫 ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:817 +#: src/libslic3r/PrintConfig.cpp:812 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." @@ -4824,7 +5521,7 @@ msgstr "" "ì´ê²ƒì€ 프린터가 첫 번째 ë ˆì´ì–´ì— 사용할 ê°€ì†ë„입니다. 0ì„ ì„¤ì •í•˜ë©´ 첫 번째 ë ˆ" "ì´ì–´ì— 대한 ê°€ì† ì œì–´ê°€ 사용ë˜ì§€ 않습니다." -#: src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:821 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." @@ -4832,7 +5529,7 @@ msgstr "" "첫 번째 ë ˆì´ì–´ì— 대한 빌드 플레ì´íЏ 온ë„를 가열. ì´ ê°’ì„ 0으로 설정하면 출력" "ì—서 ​​베드 ì˜¨ë„ ì œì–´ ëª…ë ¹ì„ ë¹„í™œì„±í™”í•©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:837 +#: src/libslic3r/PrintConfig.cpp:830 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -4844,11 +5541,11 @@ msgstr "" "수 있습니다. 백분율 (예 : 120 %)로 표현하면 첫 번째 ë ˆì´ì–´ 높ì´ë¥¼ 기준으로 계" "ì‚°ë©ë‹ˆë‹¤. 0으로 설정하면 기본 ì••ì¶œ í­ì´ 사용ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:840 msgid "First layer height" msgstr "첫 ë ˆì´ì–´ 높ì´" -#: src/libslic3r/PrintConfig.cpp:850 +#: src/libslic3r/PrintConfig.cpp:842 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -4860,16 +5557,16 @@ msgstr "" "다. ì´ê²ƒì€ 절대값 ë˜ëŠ” 기본 계층 높ì´ì— 대한 백분율(예: 150%)로 표시할 수 있" "다." -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 +#: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "mm or %" msgstr "mm/s ë˜ëŠ” %" -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:851 msgid "First layer speed" msgstr "첫 ë ˆì´ì–´ ì†ë„" -#: src/libslic3r/PrintConfig.cpp:861 +#: src/libslic3r/PrintConfig.cpp:852 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " @@ -4879,7 +5576,7 @@ msgstr "" "ì¸ì‡„ ì´ë™ì— ì ìš©ëœë‹¤. 백분율(예: 40%)로 표현ë˜ëŠ” 경우 기본 ì†ë„를 스케ì¼ë§í•œ" "다." -#: src/libslic3r/PrintConfig.cpp:872 +#: src/libslic3r/PrintConfig.cpp:862 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " @@ -4888,7 +5585,7 @@ msgstr "" "첫 번째 ì¸µì˜ ì™¸ë¶€ 온ë„. ì¸ì‡„ ì¤‘ì— ì˜¨ë„를 수ë™ìœ¼ë¡œ 제어하려면 출력 파ì¼ì—서 온" "ë„ ì œì–´ ëª…ë ¹ì„ ì‚¬ìš©í•˜ì§€ 않으려면 ì´ ê°’ì„ 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:882 +#: src/libslic3r/PrintConfig.cpp:871 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " @@ -4898,11 +5595,11 @@ msgstr "" "기 위해 ì´ê²ƒì„ 합리ì ìœ¼ë¡œ 낮게 유지한다. 간격 채우기를 사용하지 않으려면 0ì„ " "설정하십시오." -#: src/libslic3r/PrintConfig.cpp:890 +#: src/libslic3r/PrintConfig.cpp:879 msgid "Verbose G-code" msgstr "세부 G-코드" -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:880 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " @@ -4912,11 +5609,11 @@ msgstr "" "ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤. ë§Œì¼ ë‹¹ì‹ ì´ SD카드로 ì¸ì‡„한다면, 파ì¼ì˜ 추가 무게로 ì¸í•´ 펌" "ì›¨ì–´ì˜ ì†ë„ê°€ ëŠë ¤ì§ˆ 수 있다." -#: src/libslic3r/PrintConfig.cpp:899 +#: src/libslic3r/PrintConfig.cpp:887 msgid "G-code flavor" msgstr "G-code 형ì‹" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:888 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -4927,22 +5624,22 @@ msgstr "" "얻으려면 ì´ ì˜µì…˜ì„ í”„ë¦°í„°ì˜ íŽŒì›¨ì–´ë¡œ 설정하십시오. \"ì••ì¶œ ì—†ìŒ\" 형ì‹ì€ " "Slic3rê°€ 어떠한 ì••ì¶œ ê°’ë„ ì¶œë ¥í•˜ì§€ 못하게 한다." -#: src/libslic3r/PrintConfig.cpp:924 +#: src/libslic3r/PrintConfig.cpp:911 msgid "No extrusion" msgstr "ì••ì¶œ ì—†ìŒ" -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:924 msgid "High extruder current on filament swap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:930 +#: src/libslic3r/PrintConfig.cpp:925 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:939 +#: src/libslic3r/PrintConfig.cpp:933 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." @@ -4950,11 +5647,11 @@ msgstr "" "ì´ê²ƒì€ 당신 í”„ë¦°í„°ì˜ ì±„ì›€ ê°€ì†ë ¥ì´ë‹¤. ì£¼ìž…ì— ëŒ€í•œ ê°€ì† ì œì–´ë¥¼ 비활성화하려면 " "0ì„ ì„¤ì •í•˜ì‹­ì‹œì˜¤." -#: src/libslic3r/PrintConfig.cpp:948 +#: src/libslic3r/PrintConfig.cpp:941 msgid "Combine infill every" msgstr "ë‹¤ìŒ ì‹œê°„ë§ˆë‹¤ ê²°í•©" -#: src/libslic3r/PrintConfig.cpp:950 +#: src/libslic3r/PrintConfig.cpp:943 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." @@ -4962,19 +5659,19 @@ msgstr "" "ì´ ê¸°ëŠ¥ì€ ì¸í•„ì„ ê²°í•©í•˜ê³  ì–‡ì€ ì£¼ë³€ê¸°ê¸°ë¥¼ 보존하면서 ë‘꺼운 ì¸í•„ ì¸µì„ ì••ì¶œí•˜" "ì—¬ ì¸ì‡„ ì†ë„를 ë†’ì¼ ìˆ˜ 있ë„ë¡ í•˜ì—¬ 정확ë„를 높ì¸ë‹¤." -#: src/libslic3r/PrintConfig.cpp:954 +#: src/libslic3r/PrintConfig.cpp:946 msgid "Combine infill every n layers" msgstr "모든 nê°œ ì¸µì„ ì±„ìš°ê¸° 위해 ê²°í•©" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:952 msgid "Infill extruder" msgstr "채움(Infill) ìµìŠ¤íŠ¸ë£¨ë”" -#: src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:954 msgid "The extruder to use when printing infill." msgstr "채움으로 사용할 ìµìŠ¤íŠ¸ë£¨ë”." -#: src/libslic3r/PrintConfig.cpp:971 +#: src/libslic3r/PrintConfig.cpp:962 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -4988,21 +5685,21 @@ msgstr "" "ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 백분율 (예 : 90 %)로 표현하면 ë ˆì´ì–´ 높ì´ë¥¼ 기준으" "로 계산ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:981 +#: src/libslic3r/PrintConfig.cpp:971 msgid "Infill before perimeters" msgstr "둘레보다 ì•žìª½ì— ì±„ì›€" -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:972 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "ì´ ì˜µì…˜ì€ ì™¸ë¶€ì¶œë ¥ê³¼ 채움 ì¸ì‡„ 순서를 바꾸어, 후ìžë¥¼ 먼저 만든다." -#: src/libslic3r/PrintConfig.cpp:988 +#: src/libslic3r/PrintConfig.cpp:977 msgid "Only infill where needed" msgstr "필요한 경우 채ìŒ" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:979 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " @@ -5012,11 +5709,11 @@ msgstr "" "ì„ í•  것ì´ë‹¤). í™œì„±í™”ëœ ê²½ìš° ê´€ë ¨ëœ ì—¬ëŸ¬ ë²ˆì˜ ì ê²€ìœ¼ë¡œ ì¸í•´ G-code ìƒì„± ì†ë„" "를 늦춰ë¼." -#: src/libslic3r/PrintConfig.cpp:998 +#: src/libslic3r/PrintConfig.cpp:986 msgid "Infill/perimeters overlap" msgstr "채움/둘레 겹침(perimeters overlap)" -#: src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:988 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -5027,23 +5724,23 @@ msgstr "" "ë¡ ì ìœ¼ë¡œ ì´ê²ƒì€ 필요하지 않아야하지만 백래시가 ê°­ì„ ìœ ë°œí•  수 있습니다. 백분" "율 (예 : 15 %)로 표시ë˜ëŠ” 경우 경계 ì••ì¶œ í­ì„ 기준으로 계산ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1012 +#: src/libslic3r/PrintConfig.cpp:999 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "ë‚´ë¶€ 채우기 ì¸ì‡„ ì†ë„. ìžë™ìœ¼ë¡œ 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:1020 +#: src/libslic3r/PrintConfig.cpp:1007 msgid "Inherits profile" msgstr "프로필 ìƒì†" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1008 msgid "Name of the profile, from which this profile inherits." msgstr "ì´ í”„ë¡œíŒŒì¼ì´ ìƒì†ë˜ëŠ” 프로파ì¼ì˜ ì´ë¦„." -#: src/libslic3r/PrintConfig.cpp:1032 +#: src/libslic3r/PrintConfig.cpp:1021 msgid "Interface shells" msgstr "ì¸í„°íŽ˜ì´ìФ ì…¸(shells)" -#: src/libslic3r/PrintConfig.cpp:1033 +#: src/libslic3r/PrintConfig.cpp:1022 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual " @@ -5052,7 +5749,7 @@ msgstr "" "ì¸ì ‘ 재료/볼륨 사ì´ì— ê³ ì²´ 쉘 ìƒì„±ì„ 강제하십시오. 반투명 재료 ë˜ëŠ” ìˆ˜ë™ ìˆ˜ìš©" "성 서í¬íЏ 재료를 사용한 다중 압ㅊ기 ì¸ì‡„ì— ìœ ìš©í•¨." -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1031 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -5064,11 +5761,11 @@ msgstr "" "[layer_num] ë° [layer_z]ì— ìžë¦¬ í‘œì‹œìž ë³€ìˆ˜ë¥¼ 사용할 수 있다는 ì ì— 유ì˜í•˜ì‹­" "시오." -#: src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1042 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1055 +#: src/libslic3r/PrintConfig.cpp:1043 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -5076,63 +5773,63 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1063 +#: src/libslic3r/PrintConfig.cpp:1051 msgid "Supports silent mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1064 +#: src/libslic3r/PrintConfig.cpp:1052 msgid "Set silent mode for the G-code flavor" msgstr "G-코드 íŠ¹ì§•ì— ëŒ€í•œ ë¬´ìŒ ëª¨ë“œ 설정" -#: src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1075 msgid "Maximum feedrate %1%" msgstr "최 대 ê³µ 급 ì† ë„ %1%" -#: src/libslic3r/PrintConfig.cpp:1089 +#: src/libslic3r/PrintConfig.cpp:1077 msgid "Maximum feedrate of the %1% axis" msgstr "최대 공급 ì†ë„ of the %1% axis" -#: src/libslic3r/PrintConfig.cpp:1097 +#: src/libslic3r/PrintConfig.cpp:1085 msgid "Maximum acceleration %1%" msgstr "ìµœëŒ€ê°€ì† %1%" -#: src/libslic3r/PrintConfig.cpp:1099 +#: src/libslic3r/PrintConfig.cpp:1087 msgid "Maximum acceleration of the %1% axis" msgstr "최대 ê°€ì†ë„는 %1% ì¶•" -#: src/libslic3r/PrintConfig.cpp:1107 +#: src/libslic3r/PrintConfig.cpp:1095 msgid "Maximum jerk %1%" msgstr "최대 ì €í¬(jerk) %1%" -#: src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1097 msgid "Maximum jerk of the %1% axis" msgstr "최대 ì €í¬ëŠ”(jerk) %1% axis" -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110 msgid "Minimum feedrate when extruding" msgstr "압출시 최소 공급 ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121 msgid "Minimum travel feedrate" msgstr "최소 ì´ì†¡ ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132 msgid "Maximum acceleration when extruding" msgstr "압출시 최대 ê°€ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 +#: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143 msgid "Maximum acceleration when retracting" msgstr "리트렉션 최대 ê°€ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 +#: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160 msgid "Max" msgstr "최대" -#: src/libslic3r/PrintConfig.cpp:1164 +#: src/libslic3r/PrintConfig.cpp:1152 msgid "This setting represents the maximum speed of your fan." msgstr "ì´ ì„¤ì •ì€ íŒ¬ì˜ ìµœëŒ€ ì†ë„를 나타냅니다." -#: src/libslic3r/PrintConfig.cpp:1174 +#: src/libslic3r/PrintConfig.cpp:1161 #, no-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " @@ -5145,11 +5842,11 @@ msgstr "" "는 ì••ì¶œ í­ì˜ 75 %입니다. 0으로 설정하면 층 높ì´ê°€ ë…¸ì¦ ì§€ë¦„ì˜ 75 %로 제한ë©ë‹ˆ" "다." -#: src/libslic3r/PrintConfig.cpp:1185 +#: src/libslic3r/PrintConfig.cpp:1171 msgid "Max print speed" msgstr "최대 프린트 ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1186 +#: src/libslic3r/PrintConfig.cpp:1172 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " @@ -5159,18 +5856,18 @@ msgstr "" "ì˜ ì†ë„를 ìžë™ 계산한다. ì´ ì‹¤í—˜ ì„¤ì •ì€ í—ˆìš©í•  최대 ì¸ì‡„ ì†ë„를 설정하는 ë° " "사용ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:1197 +#: src/libslic3r/PrintConfig.cpp:1182 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "" "ì´ ì‹¤í—˜ ì„¤ì •ì€ ì••ì¶œê¸°ê°€ ì§€ì›í•˜ëŠ” 최대 ì²´ì  ì†ë„를 설정하기 위해 사용ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:1206 +#: src/libslic3r/PrintConfig.cpp:1191 msgid "Max volumetric slope positive" msgstr "최대 ì²´ì  ê¸°ìš¸ê¸° ì–‘" -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 +#: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -5181,23 +5878,23 @@ msgstr "" "1.8mm3/s(0.45mm ì••ì¶œ í­, 0.2mm ì••ì¶œ 높ì´, 공급 ì†ë„ 20mm/s)ì—서 5.4mm3/s(ê³µ" "급 ì†ë„ 60mm/s)로 변경하는 ë° ìµœì†Œ 2ì´ˆ ì´ìƒ 걸린다." -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 +#: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1202 msgid "Max volumetric slope negative" msgstr "최대 ì²´ì  ê¸°ìš¸ê¸° ìŒìˆ˜" -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 +#: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223 msgid "Min" msgstr "최소" -#: src/libslic3r/PrintConfig.cpp:1231 +#: src/libslic3r/PrintConfig.cpp:1215 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "ì´ ì„¤ì •ì€ ìµœì†Œ PWMíŒ¬ì´ í™œë™í•˜ëŠ”ë° í•„ìš”í•œë¥¼ 나타냅니다." -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1224 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " @@ -5206,19 +5903,19 @@ msgstr "" "ì´ê²ƒì€ ì´ ì••ì¶œê¸°ì— ëŒ€í•œ 가장 ë‚®ì€ ì¸ì‡„ 가능한 층 높ì´ì´ê³  가변 층 높ì´ì— 대" "한 ë¶„í•´ëŠ¥ì„ ì œí•œí•œë‹¤. 대표ì ì¸ ê°’ì€ 0.05mm와 0.1mmì´ë‹¤." -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/libslic3r/PrintConfig.cpp:1232 msgid "Min print speed" msgstr "최소 ì¸ì‡„ ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1251 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3r는 ì´ ì†ë„ ì´í•˜ë¡œ ì†ë„를 낮추지 ì•Šì„ ê²ƒì´ë‹¤." -#: src/libslic3r/PrintConfig.cpp:1259 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Minimal filament extrusion length" msgstr "최소 í•„ë¼ë©˜íЏ ì••ì¶œ 길ì´" -#: src/libslic3r/PrintConfig.cpp:1260 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " @@ -5227,11 +5924,11 @@ msgstr "" "하단 ë ˆì´ì–´ì—서 ì§€ì •ëœ ì–‘ì˜ í•„ë¼ë©˜íŠ¸ë¥¼ 사용하는 ë° í•„ìš”í•œ 스커트 ë£¨í”„ì˜ ìˆ˜ ì´" "ìƒìœ¼ë¡œ ìƒì„±í•œë‹¤. 멀티 ìµìŠ¤íŠ¸ë£¨ë”ì˜ ê²½ìš°, ì´ ìµœì†Œê°’ì€ ê° ì¶”ê°€ê¸°ê¸°ì— ì ìš©ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:1270 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Configuration notes" msgstr "구성 노트" -#: src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." @@ -5239,50 +5936,30 @@ msgstr "" "ì—¬ê¸°ì— ê°œì¸ ë…¸íŠ¸ë¥¼ ë„£ì„ ìˆ˜ 있다. ì´ í…스트는 G-code í—¤ë” ì½”ë©˜íŠ¸ì— ì¶”ê°€ë  ê²ƒì´" "다." -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1260 msgid "Nozzle diameter" msgstr "ë…¸ì¦ ì§ê²½" -#: src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1261 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "ì´ ì§€ë¦„ì€ ì—‘ìŠ¤íŠ¸ë£¨ë” ë…¸ì¦ì˜ ì§ê²½ì´ë‹¤(예: 0.5, 0.35 등)." -#: src/libslic3r/PrintConfig.cpp:1288 +#: src/libslic3r/PrintConfig.cpp:1266 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "호스트 ì´ë¦„(Hostname), IP or URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1278 msgid "Only retract when crossing perimeters" msgstr "둘레를 횡단 í•  때만 수축" -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/libslic3r/PrintConfig.cpp:1279 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." @@ -5290,7 +5967,7 @@ msgstr "" "ì´ë™ 경로가 ìƒìœ„ ë ˆì´ì–´ì˜ 경계를 초과하지 않는 경우 ë¦¬íŠ¸ëž™ì…˜ì„ ë¹„í™œì„±í™”í•©ë‹ˆ" "다. ë”°ë¼ì„œ 모든 오즈가 ë³´ì´ì§€ 않습니다." -#: src/libslic3r/PrintConfig.cpp:1334 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " @@ -5300,11 +5977,11 @@ msgstr "" "변경할 때 키가 í° ìŠ¤ì»¤íŠ¸ë¥¼ ìžë™ìœ¼ë¡œ 사용하고 스커트 외부로 압출기를 ì´ë™í•©ë‹ˆ" "다." -#: src/libslic3r/PrintConfig.cpp:1342 +#: src/libslic3r/PrintConfig.cpp:1293 msgid "Output filename format" msgstr "출력 파ì¼ì´ë¦„ 형ì‹" -#: src/libslic3r/PrintConfig.cpp:1343 +#: src/libslic3r/PrintConfig.cpp:1294 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -5312,11 +5989,11 @@ msgid "" "[input_filename], [input_filename_base]." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1303 msgid "Detect bridging perimeters" msgstr "브릿 ì§• 경계선 ê°ì§€" -#: src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:1305 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." @@ -5324,11 +6001,11 @@ msgstr "" "ì˜¤ë²„í–‰ì— ëŒ€í•œ ìœ ëŸ‰ì„ ì¡°ì •í•˜ëŠ” 실험 옵션 (브리지 í름(flow)ì´ ì‚¬ìš©ë¨)ì— ë¸Œë¦¿" "ì§€ ì†ë„를 ì ìš©í•˜ê³  íŒ¬ì„ í™œì„±í™”í•©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1311 msgid "Filament parking position" msgstr "í•„ë¼ë©˜íЏ 멈춤 위치" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1312 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware. " @@ -5336,11 +6013,11 @@ msgstr "" "ì–¸ 로딩시 í•„ë¼ë©˜íЏ 위치ì—서 압출기 íŒì˜ 거리. ì´ ê°’ì€ í”„ë¦°í„° íŽŒì›¨ì–´ì˜ ê°’ê³¼ ì¼" "치해야합니다. " -#: src/libslic3r/PrintConfig.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:1320 msgid "Extra loading distance" msgstr "추가 로딩 거리" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1321 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " @@ -5351,12 +6028,12 @@ msgstr "" "ì´ë™ 한 거리와 ë™ì¼í•©ë‹ˆë‹¤. 양수ì´ë©´ ìŒìˆ˜ê°€ ë” ë§Žì´ ë¡œë“œë˜ê³  로드가 ìŒìˆ˜ ì¸ ê²½" "ìš° 언로드보다 짧습니다. " -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 +#: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347 +#: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369 msgid "Perimeters" msgstr "둘레" -#: src/libslic3r/PrintConfig.cpp:1383 +#: src/libslic3r/PrintConfig.cpp:1330 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " @@ -5366,17 +6043,17 @@ msgstr "" "ìž‘ë™í•˜ë©´ ì¢‹ì€ ê²°ê³¼ë¥¼ 제공합니다. ì£¼ë³€ì„ ê°€ì† ì œì–´í•˜ì§€ 않으려면 0으로 설정하십" "시오." -#: src/libslic3r/PrintConfig.cpp:1392 +#: src/libslic3r/PrintConfig.cpp:1338 msgid "Perimeter extruder" msgstr "주변 ìµìŠ¤íŠ¸ë£¨ë”" -#: src/libslic3r/PrintConfig.cpp:1394 +#: src/libslic3r/PrintConfig.cpp:1340 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "" "둘레와 가장ìžë¦¬ë¥¼ ì¸ì‡„ í•  때 사용할 압출기입니다. 첫 번째 압출기는 1입니다." -#: src/libslic3r/PrintConfig.cpp:1404 +#: src/libslic3r/PrintConfig.cpp:1349 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -5390,12 +6067,12 @@ msgstr "" "ì§ê²½ì´ 사용ë©ë‹ˆë‹¤. 백분율 (예 : 200 %)로 표현하면 ë ˆì´ì–´ 높ì´ë¥¼ 기준으로 계산" "ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1361 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "ë‘˜ë ˆì˜ ì†ë„ (등고선, ì¼ëª… 세로 ì…¸). ìžë™ìœ¼ë¡œ 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:1427 +#: src/libslic3r/PrintConfig.cpp:1371 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -5406,11 +6083,11 @@ msgstr "" "사용하면 ë” í° ì£¼ë³€ 수를 사용하는 ê²½ì‚¬ë©´ì„ ê°ì§€ í•  때 Slic3rì´ì´ 수를 ìžë™ìœ¼" "로 ì¦ê°€ì‹œí‚¬ 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:1431 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "(minimum)" msgstr "(최소)" -#: src/libslic3r/PrintConfig.cpp:1439 +#: src/libslic3r/PrintConfig.cpp:1383 msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " @@ -5423,35 +6100,35 @@ msgstr "" "파ì¼ì˜ 절대 경로를 첫 번째 ì¸ìˆ˜ë¡œ 전달ë˜ë©° 환경 변수를 ì½ìŒìœ¼ë¡œì¨ Slic3r 구" "성 ì„¤ì •ì— ì•¡ì„¸ìŠ¤ í•  수 있습니다." -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1395 msgid "Printer type" msgstr "프린터 타입" -#: src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1396 msgid "Type of the printer." msgstr "프린터 유형." -#: src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1401 msgid "Printer notes" msgstr "프린터 노트" -#: src/libslic3r/PrintConfig.cpp:1458 +#: src/libslic3r/PrintConfig.cpp:1402 msgid "You can put your notes regarding the printer here." msgstr "프린터 관련 메모를 ì—¬ê¸°ì— ë„£ì„ ìˆ˜ 있습니다." -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1410 msgid "Printer vendor" msgstr "제조 회사" -#: src/libslic3r/PrintConfig.cpp:1468 +#: src/libslic3r/PrintConfig.cpp:1411 msgid "Name of the printer vendor." msgstr "프린터 공급 ì—…ì²´ì˜ ì´ë¦„입니다." -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1416 msgid "Printer variant" msgstr "프린터 변형" -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1417 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." @@ -5459,22 +6136,22 @@ msgstr "" "프린터 변종 ì´ë¦„입니다. 예를 들어, 프린터 ë³€í˜•ì€ ë…¸ì¦ ì§€ë¦„ìœ¼ë¡œ 구별 ë  ìˆ˜ 있" "습니다." -#: src/libslic3r/PrintConfig.cpp:1483 +#: src/libslic3r/PrintConfig.cpp:1430 msgid "Raft layers" msgstr "ë¼í”„트(Raft) ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:1485 +#: src/libslic3r/PrintConfig.cpp:1432 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "" "물체는 ì´ ê°œìˆ˜ì˜ ì¸µì— ì˜í•´ ìƒìйë˜ë©°, ê·¸ 아래ì—서 서í¬íЏ 재료가 ìƒì„±ë  것ì´ë‹¤." -#: src/libslic3r/PrintConfig.cpp:1494 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Resolution" msgstr "í•´ê²°" -#: src/libslic3r/PrintConfig.cpp:1495 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -5486,20 +6163,20 @@ msgstr "" "있는 것보다 ë” ë§Žì€ ë””í…Œì¼ì„ 가지고 있다. 단순화를 사용하지 않고 ìž…ë ¥ì—서 ì „" "ì²´ í•´ìƒë„를 사용하려면 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:1506 +#: src/libslic3r/PrintConfig.cpp:1451 msgid "Minimum travel after retraction" msgstr "리트랙션 후 최소 ì´ë™ 거리" -#: src/libslic3r/PrintConfig.cpp:1507 +#: src/libslic3r/PrintConfig.cpp:1452 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "ì´ë™ 거리가 ì´ ê¸¸ì´ë³´ë‹¤ 짧으면 ë¦¬íŠ¸ë ‰ì…˜ì´ íŠ¸ë¦¬ê±°ë˜ì§€ 않습니다." -#: src/libslic3r/PrintConfig.cpp:1514 +#: src/libslic3r/PrintConfig.cpp:1458 msgid "Retract amount before wipe" msgstr "닦아 내기 ì „ì˜ ìˆ˜ì¶•ëŸ‰" -#: src/libslic3r/PrintConfig.cpp:1515 +#: src/libslic3r/PrintConfig.cpp:1459 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." @@ -5507,23 +6184,23 @@ msgstr "" "ë³´ìš° ë´ ì••ì¶œê¸°ë¥¼ 사용하면 와ì´í¼ ë™ìž‘ì„하기 ì „ì— ì•½ê°„ì˜ ë¹ ë¥¸ 리트랙션 를하는 " "ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1466 msgid "Retract on layer change" msgstr "ë ˆì´ì–´ 변경 후퇴" -#: src/libslic3r/PrintConfig.cpp:1524 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "ì´ í”Œëž˜ê·¸ëŠ” Z ì´ë™ì´ 완료 ë  ë•Œë§ˆë‹¤ 취소를 ê°•ì œ 실행합니다." -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480 msgid "Length" msgstr "길ì´" -#: src/libslic3r/PrintConfig.cpp:1531 +#: src/libslic3r/PrintConfig.cpp:1473 msgid "Retraction Length" msgstr "리트랙션 길ì´" -#: src/libslic3r/PrintConfig.cpp:1532 +#: src/libslic3r/PrintConfig.cpp:1474 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " @@ -5532,15 +6209,15 @@ msgstr "" "후퇴가 트리거ë˜ë©´ í•„ë¼ë©˜íŠ¸ê°€ ì§€ì •ëœ ì–‘ë§Œí¼ ë’¤ë¡œ 당겨집니다 (길ì´ëŠ” ì••ì¶œê¸°ì— " "들어가기 ì „ì— ì›ì‹œ í•„ë¼ë©˜íЏì—서 측정ë©ë‹ˆë‹¤)." -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485 msgid "mm (zero to disable)" msgstr "mm (0ì€ ë¹„í™œì„±í™”)" -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Retraction Length (Toolchange)" msgstr "리트랙션 ê¸¸ì´ (툴 ì²´ì¸ì§€)" -#: src/libslic3r/PrintConfig.cpp:1541 +#: src/libslic3r/PrintConfig.cpp:1482 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " @@ -5549,11 +6226,11 @@ msgstr "" "공구를 êµì²´í•˜ê¸° ì „ì— í›„í‡´ê°€ 트리거ë˜ë©´ í•„ë¼ë©˜íŠ¸ê°€ ì§€ì •ëœ ì–‘ë§Œí¼ ë’¤ë¡œ 당겨집니" "다 (길ì´ëŠ” ì••ì¶œê¸°ì— ë“¤ì–´ê°€ê¸° ì „ì— ì›ì‹œ í•„ë¼ë©˜íЏì—서 측정ë©ë‹ˆë‹¤)." -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Lift Z" msgstr "Zì¶• 올림" -#: src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1491 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " @@ -5562,15 +6239,15 @@ msgstr "" "ì´ ê°’ì„ ì–‘ìˆ˜ 값으로 설정하면 철회가 트리거 ë  ë•Œë§ˆë‹¤ Zê°€ 빠르게 올ë¼ê°‘니다. " "여러 ê°œì˜ ì••ì¶œê¸°ë¥¼ 사용하는 경우 첫 번째 ì••ì¶œê¸°ì˜ ì„¤ì • ë§Œ ê³ ë ¤ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Above Z" msgstr "Z 위" -#: src/libslic3r/PrintConfig.cpp:1560 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "Only lift Z above" msgstr "ì˜¤ì§ Zì¶• 위로만" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " @@ -5579,15 +6256,15 @@ msgstr "" "ì´ê²ƒì„ ì–‘ì˜ ê°’ìœ¼ë¡œ 설정하면, Z 리프트는 ì§€ì •ëœ ì ˆëŒ€ Z 위로만 ë°œìƒí•œë‹¤. 첫 번" "째 층ì—서 리프트를 건너뛸 수 있ë„ë¡ ì´ ì„¤ì •ì„ ì¡°ì •í•  수 있다." -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1507 msgid "Below Z" msgstr "Z 아래" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "Only lift Z below" msgstr "Zê°’ 아래만" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1509 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " @@ -5596,11 +6273,11 @@ msgstr "" "ì´ê²ƒì„ 양수 값으로 설정하면 Z 리프트가 ì§€ì •ëœ ì ˆëŒ€ Z 아래ì—서만 ë°œìƒí•©ë‹ˆë‹¤. " "첫 번째 ë ˆì´ì–´ë¡œ 리프트를 제한하기 ìœ„í•´ì´ ì„¤ì •ì„ ì¡°ì •í•  수 있습니다." -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525 msgid "Extra length on restart" msgstr "재시작시 ì—¬ë¶„ì˜ ê¸¸ì´" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." @@ -5608,7 +6285,7 @@ msgstr "" "ì´ë™ 후 ë¦¬íŠ¸ë ‰ì…”ì´ ë³´ì •ë˜ë©´ ìµìŠ¤íŠ¸ë£¨ë”ê°€ 추가 ì–‘ì˜ í•„ë¼ë©˜íŠ¸ë¥¼ 밀어냅니다. ì´ " "ì„¤ì •ì€ ê±°ì˜ í•„ìš”í•˜ì§€ 않습니다." -#: src/libslic3r/PrintConfig.cpp:1590 +#: src/libslic3r/PrintConfig.cpp:1526 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." @@ -5616,19 +6293,19 @@ msgstr "" "ë„구를 êµí™˜ 한 후 리트렉션를 보정하면 ìµìŠ¤íŠ¸ë£¨ë”ê°€ 추가 ì–‘ì˜ í•„ë¼ë©˜íŠ¸ë¥¼ 밀게" "ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 +#: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534 msgid "Retraction Speed" msgstr "리트랙션 ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1600 +#: src/libslic3r/PrintConfig.cpp:1535 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "리트랙션 ì†ë„ (ìµìŠ¤íŠ¸ë£¨ë” ëª¨í„°ì—ë§Œ ì ìš©ë¨)." -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542 msgid "Deretraction Speed" msgstr "ê°ì† ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1543 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " @@ -5637,71 +6314,67 @@ msgstr "" "리트랙션 후 ì••ì¶œê¸°ì— í•„ë¼ë©˜íŠ¸ë¥¼ 로드하는 ì†ë„ (압출기 모터ì—ë§Œ ì ìš©ë¨). 0으" "로 방치하면 리트랙션 ì†ë„ê°€ 사용ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1617 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "Seam position" msgstr "재봉선 위치" -#: src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1552 msgid "Position of perimeters starting points." msgstr "ë‘˜ë ˆì˜ ì‹œìž‘ì ì˜ 위치." -#: src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1558 msgid "Random" msgstr "무작위" -#: src/libslic3r/PrintConfig.cpp:1627 +#: src/libslic3r/PrintConfig.cpp:1559 msgid "Nearest" msgstr "가장 가까운" -#: src/libslic3r/PrintConfig.cpp:1628 +#: src/libslic3r/PrintConfig.cpp:1560 msgid "Aligned" msgstr "ì •ë ¬" -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 +#: src/libslic3r/PrintConfig.cpp:1568 msgid "Direction" msgstr "ë°©í–¥" -#: src/libslic3r/PrintConfig.cpp:1638 +#: src/libslic3r/PrintConfig.cpp:1570 msgid "Preferred direction of the seam" msgstr "선호하는 심(seam)ì˜ ë°©í–¥" -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1571 msgid "Seam preferred direction" msgstr "심(Seam) 선호 ë°©í–¥" -#: src/libslic3r/PrintConfig.cpp:1647 +#: src/libslic3r/PrintConfig.cpp:1578 msgid "Jitter" msgstr "지터(Jitter)" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Seam preferred direction jitter" msgstr "(Seam) 선호 ë°©í–¥ 지터(Jitter)" -#: src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "Preferred direction of the seam - jitter" msgstr "재봉선 ì§€í„°ì˜ ì„ í˜¸ ë°©í–¥" -#: src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1591 msgid "USB/serial port for printer connection." msgstr "프린터 ì—°ê²°ì„ ìœ„í•œ USB/시리얼 í¬íЏ." -#: src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1598 msgid "Serial port speed" msgstr "시리얼 í¬íЏ ì†ë„" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1599 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "프린터 ì—°ê²°ì„ ìœ„í•œ USB/시리얼 í¬íŠ¸ì˜ ì†ë„(보드)" -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1608 msgid "Distance from object" msgstr "ê°ì²´ë¡œë¶€í„°ì˜ 거리" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." @@ -5709,11 +6382,11 @@ msgstr "" "스커트와 ê°ì²´ 사ì´ì˜ 거리. 스커트를 ê°ì²´ì— 부착하고 ì ‘ì°©ë ¥ì„ ë†’ì´ê¸° 위해 ì´" "를 0으로 설정한다." -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1616 msgid "Skirt height" msgstr "스커트(Skirt) 높ì´" -#: src/libslic3r/PrintConfig.cpp:1689 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." @@ -5721,15 +6394,15 @@ msgstr "" "ìŠ¤ì»¤íŠ¸ì˜ ë†’ì´ ë ˆì´ì–´ë¡œ 표현ëœë‹¤. ì´ë¥¼ ë†’ì€ ê°’ìœ¼ë¡œ 설정하여 스커트를 드래프트" "ì— ëŒ€í•œ 쉴ㄷ로 활용하십시오." -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1624 msgid "Loops (minimum)" msgstr "루프 (최소)" -#: src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:1625 msgid "Skirt Loops" msgstr "스커트 루프" -#: src/libslic3r/PrintConfig.cpp:1699 +#: src/libslic3r/PrintConfig.cpp:1626 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " @@ -5738,11 +6411,11 @@ msgstr "" "ìŠ¤ì»¤íŠ¸ì˜ ë£¨í”„ 수입니다. 최소 ì••ì¶œ ê¸¸ì´ ì˜µì…˜ì„ ì„¤ì •í•œ 경우 ì—¬ê¸°ì— êµ¬ì„±ëœ ë£¨í”„ " "수보다 í´ ìˆ˜ 있다. 스커트를 완전히 비활성화하려면 ì´ ê°’ì„ 0으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:1634 msgid "Slow down if layer print time is below" msgstr "ë ˆì´ì–´ ì¸ì‡„ ì‹œê°„ì´ ë‹¤ìŒê³¼ ê°™ì€ ê²½ìš° ì†ë„를 낮추십시오" -#: src/libslic3r/PrintConfig.cpp:1709 +#: src/libslic3r/PrintConfig.cpp:1635 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." @@ -5750,11 +6423,11 @@ msgstr "" "층 ì¸ì‡„ ì‹œê°„ì´ ì´ ì‹œê°„ë³´ë‹¤ 낮게 ì¶”ì •ë  ê²½ìš°, ì¸ì‡„ ì´ë™ ì†ë„는 ì´ ê°’ìœ¼ë¡œ ì§€ì†" "ë˜ë„ë¡ ì¶•ì†Œëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:1720 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Small perimeters" msgstr "ìž‘ì€ ë‘˜ë ˆ" -#: src/libslic3r/PrintConfig.cpp:1722 +#: src/libslic3r/PrintConfig.cpp:1647 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " @@ -5764,34 +6437,34 @@ msgstr "" "분율로 표시ë˜ëŠ” 경우 (예 : 80 %) ìœ„ì˜ ì†ë„ 설정ì—서 계산ë©ë‹ˆë‹¤. ìžë™ìœ¼ë¡œ 0으" "로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:1732 +#: src/libslic3r/PrintConfig.cpp:1657 msgid "Solid infill threshold area" msgstr "솔리드 채우기 임계값 ì˜ì—­" -#: src/libslic3r/PrintConfig.cpp:1734 +#: src/libslic3r/PrintConfig.cpp:1659 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "" "ì§€ì •ëœ í•œê³„ê°’ë³´ë‹¤ ìž‘ì€ ì˜ì—­ì„ 가진 ì˜ì—­ì— 대해 솔리드 ì¸í•„ì„ ê°•ì œ ì ìš©." -#: src/libslic3r/PrintConfig.cpp:1735 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1742 +#: src/libslic3r/PrintConfig.cpp:1666 msgid "Solid infill extruder" msgstr "솔리드 ì¸í•„ ìµìŠ¤íŠ¸ë£¨ë”" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1668 msgid "The extruder to use when printing solid infill." msgstr "꽉찬 ë©´ì„ ì¸ì‡„í•  때 사용하는 ìµìŠ¤íŠ¸ë£¨ë”." -#: src/libslic3r/PrintConfig.cpp:1751 +#: src/libslic3r/PrintConfig.cpp:1674 msgid "Solid infill every" msgstr "솔리드 ì¸í•„ 간격" -#: src/libslic3r/PrintConfig.cpp:1753 +#: src/libslic3r/PrintConfig.cpp:1676 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -5802,7 +6475,7 @@ msgstr "" "수 ì—†ìŒ. ë‹¹ì‹ ì€ ì´ê²ƒì„ ì–´ë–¤ ê°’ìœ¼ë¡œë„ ì„¤ì •í•  수 있다(예: 9999). Slic3r는 ë…¸ì¦ " "ì§ê²½ê³¼ 층 높ì´ì— ë”°ë¼ ê²°í•©í•  최대 가능한 층 수를 ìžë™ìœ¼ë¡œ ì„ íƒí•œë‹¤." -#: src/libslic3r/PrintConfig.cpp:1766 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -5813,7 +6486,7 @@ msgstr "" "하십시오. 0ì¸ ê²½ìš° 기본 ì••ì¶œ 너비가 사용ë˜ë©°, 그렇지 않으면 1.125 x ë…¸ì¦ ì§ê²½" "ì´ ì‚¬ìš©ëœë‹¤. 백분율(예: 90%)로 표현ë˜ëŠ” 경우, 계층 높ì´ì— ê±¸ì³ ê³„ì‚°ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:1777 +#: src/libslic3r/PrintConfig.cpp:1698 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " @@ -5822,15 +6495,15 @@ msgstr "" "솔리드 ì˜ì—­(ìƒë‹¨/하부/ë‚´ë¶€ ìˆ˜í‰ ì…¸) ì¸ì‡„ ì†ë„ ì´ëŠ” ìœ„ì˜ ê¸°ë³¸ 주입 ì†ë„ì— ëŒ€" "한 백분율(예: 80%)로 표시할 수 있다. ìžë™ì„ 위해 0으로 설정한다." -#: src/libslic3r/PrintConfig.cpp:1789 +#: src/libslic3r/PrintConfig.cpp:1710 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "ìƒë‹¨ ë° í•˜ë‹¨ í‘œë©´ì— ìƒì„±í•  솔리드 ë ˆì´ì–´ 수입니다." -#: src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1716 msgid "Spiral vase" msgstr "스파ì´ëŸ´ ë°”ì´ìФ" -#: src/libslic3r/PrintConfig.cpp:1797 +#: src/libslic3r/PrintConfig.cpp:1717 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -5844,11 +6517,11 @@ msgstr "" "ìˆ˜ì— ìƒê´€ì—†ì´ 설정할 수 있다. ê·¸ê²ƒì€ ë¬¼ì²´ë³´ë‹¤ ë” ë§Žì´ ì¸ì‡„í•  때는 ìž‘ë™í•˜ì§€ 않" "ì„ ê²ƒì´ë‹¤." -#: src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1725 msgid "Temperature variation" msgstr "ì˜¨ë„ ë³€í™”" -#: src/libslic3r/PrintConfig.cpp:1807 +#: src/libslic3r/PrintConfig.cpp:1726 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " @@ -5857,7 +6530,7 @@ msgstr "" "ëŒì¶œë¶€ê°€ 활성화ë˜ì§€ ì•Šì€ ê²½ìš° ì ìš©ë˜ëŠ” ì˜¨ë„ ì°¨ì´. ë…¸ì¦ì„ 주기ì ìœ¼ë¡œ 닦는 ì „" "ì²´ ë†’ì´ \"ì¸ê³µ\" 스커트가 가능하다." -#: src/libslic3r/PrintConfig.cpp:1818 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -5874,7 +6547,7 @@ msgstr "" "ë“  Slic3r ì„¤ì •ì— ìžë¦¬ 표시 ìž ë³€ìˆ˜ë¥¼ 사용할 수 있으므로 ì›í•˜ëŠ” ìœ„ì¹˜ì— \"M109 " "S [first_layer_temperature]\"ëª…ë ¹ì„ ë„£ì„ ìˆ˜ 있습니다." -#: src/libslic3r/PrintConfig.cpp:1834 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode. This is used to override settings for a specific filament. If Slic3r " @@ -5893,48 +6566,48 @@ msgstr "" "[first_layer_temperature]\"ëª…ë ¹ì„ ë„£ì„ ìˆ˜ 있습니다. 여러 ê°œì˜ ì••ì¶œê¸°ê°€ìžˆëŠ” ê²½" "ìš° gcodeê°€ 압출기 순서로 처리ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1850 +#: src/libslic3r/PrintConfig.cpp:1766 msgid "Single Extruder Multi Material" msgstr "싱글 ìµìŠ¤íŠ¸ë£¨ë” ë©€í‹°ë©”í„°ë¦¬ì–¼" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1767 msgid "The printer multiplexes filaments into a single hot end." msgstr "프린터는 í•„ë¼ë©˜íŠ¸ë¥¼ í•˜ë‚˜ì˜ í•« ì—”ë“œì— ë©€í‹°í”Œë ‰ì‹±í•©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1772 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:1773 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:1778 msgid "Generate support material" msgstr "서í¬íЏ 재료 ìƒì„±" -#: src/libslic3r/PrintConfig.cpp:1866 +#: src/libslic3r/PrintConfig.cpp:1780 msgid "Enable support material generation." msgstr "서í¬íЏ 재료를 사용합니다." -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1784 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:1786 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1880 +#: src/libslic3r/PrintConfig.cpp:1792 msgid "XY separation between an object and its support" msgstr "물체와 ê·¸ 서í¬íЏ ì‚¬ì´ XY 분리" -#: src/libslic3r/PrintConfig.cpp:1882 +#: src/libslic3r/PrintConfig.cpp:1794 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." @@ -5942,17 +6615,17 @@ msgstr "" "ê°ì²´ì™€ ê·¸ 서í¬íЏ 사ì´ì˜ XY 분리. 백분율 (예 : 50 %)로 표시ë˜ëŠ” 경우 외부 둘" "ë ˆ 너비를 기준으로 계산ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:1804 msgid "Pattern angle" msgstr "채움 ê°ë„" -#: src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1806 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "ì´ ì„¤ì •ì„ ì‚¬ìš©í•˜ì—¬ì§€ì§€ í‰ë©´ íŒ¨í„´ì„ ìˆ˜í‰ë©´ìœ¼ë¡œ 회전시킵니다." -#: src/libslic3r/PrintConfig.cpp:1906 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." @@ -5960,11 +6633,11 @@ msgstr "" "ê·¸ê²ƒì´ ë¹Œë“œ 플레ì´íЏì—있는 경우ì—ë§Œ ì§€ì›ì„ 작성하십시오. ì¸ì‡„ë¬¼ì— ëŒ€í•œ ì§€ì›" "ì„ ìž‘ì„±í•˜ì§€ 마십시오." -#: src/libslic3r/PrintConfig.cpp:1913 +#: src/libslic3r/PrintConfig.cpp:1822 msgid "Contact Z distance" msgstr "Z 거리 문ì˜" -#: src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1824 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " @@ -5973,19 +6646,19 @@ msgstr "" "물체와 서í¬íЏ 사ì´ì˜ ìˆ˜ì§ ê±°ë¦¬. ì´ ê°’ì„ 0으로 설정하면 Slic3rì´ ì²« 번째 ê°ì²´ " "ë ˆì´ì–´ì— 브리지 í름과 ì†ë„를 사용하지 못하게ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1923 +#: src/libslic3r/PrintConfig.cpp:1831 msgid "soluble" msgstr "수용성" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "detachable" msgstr "분리 가능" -#: src/libslic3r/PrintConfig.cpp:1929 +#: src/libslic3r/PrintConfig.cpp:1837 msgid "Enforce support for the first" msgstr "첫 번째 서í¬íЏ ë” ê°•í™”" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:1839 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -5996,15 +6669,15 @@ msgstr "" "세어 ì§€ì •ëœ ë ˆì´ì–´ ìˆ˜ì— ëŒ€í•œì§€ì§€ ìžë£Œë¥¼ ìƒì„±í•©ë‹ˆë‹¤. ì´ê²ƒì€ 빌드 플레ì´íŠ¸ì— ë§¤" "ìš° 얇거나 부족한 í’‹ 프린트를 가진 물체를 ë” ë§Žì´ ë¶€ì°© í•  때 유용합니다." -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Enforce support for the first n layers" msgstr "첫 번째 n ê°œì˜ ë ˆì´ì–´ì— 대한 서í¬íЏ ê°•í™”" -#: src/libslic3r/PrintConfig.cpp:1943 +#: src/libslic3r/PrintConfig.cpp:1850 msgid "Support material/raft/skirt extruder" msgstr "서í¬íЏ 재료 / ë¼í”„트 / 스커트 ìµìŠ¤íŠ¸ë£¨ë”" -#: src/libslic3r/PrintConfig.cpp:1945 +#: src/libslic3r/PrintConfig.cpp:1852 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." @@ -6012,7 +6685,7 @@ msgstr "" "서í¬íЏ 재료, ë¼í”„트 ë° ìŠ¤ì»¤íŠ¸ë¥¼ ì¸ì‡„ í•  때 사용하는 압출기 (ë„구 ë³€ê²½ì„ ìµœì†Œ" "화하기 위해 현재 압출기를 사용하려면 1+, 0)." -#: src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -6023,20 +6696,20 @@ msgstr "" "0으로 설정하면 ì„¤ì •ëœ ê²½ìš° 기본 ì••ì¶œ í­ì´ 사용ë˜ê³  그렇지 않으면 ë…¸ì¦ ì§€ë¦„ì´ " "사용ë©ë‹ˆë‹¤. 백분율 (예 : 90 %)로 표현하면 ë ˆì´ì–´ 높ì´ë¥¼ 기준으로 계산ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1869 msgid "Interface loops" msgstr "ì¸í„°íŽ˜ì´ìФ 루프" -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:1871 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "ì§€ì§€ëŒ€ì˜ ìƒë‹¨ ì ‘ì´‰ ì¸µì„ ë£¨í”„ë¡œ ë®ìœ¼ì‹­ì‹œì˜¤. 기본ì ìœ¼ë¡œ 사용 안 함." -#: src/libslic3r/PrintConfig.cpp:1972 +#: src/libslic3r/PrintConfig.cpp:1876 msgid "Support material/raft interface extruder" msgstr "서í¬íЏ 재료/ë¼í”„트 ì¸í„°íŽ˜ì´ìФ ìµìŠ¤íŠ¸ë£¨ë”" -#: src/libslic3r/PrintConfig.cpp:1974 +#: src/libslic3r/PrintConfig.cpp:1878 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." @@ -6045,26 +6718,26 @@ msgstr "" "기 위해 현재 ìµìŠ¤íŠ¸ë£¨ë”를 사용하려면 1+, 0). ì´ê²ƒì€ ë¼í”„트ì—ë„ ì˜í–¥ì„ 미칩니" "다." -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:1885 msgid "Interface layers" msgstr "ì¸í„°íŽ˜ì´ìФ ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:1887 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "ê°ì²´ì™€ 서í¬íЏ 재료 사ì´ì— 삽입할 ì¸í„°íŽ˜ì´ìФ ë ˆì´ì–´ 수입니다." -#: src/libslic3r/PrintConfig.cpp:1992 +#: src/libslic3r/PrintConfig.cpp:1894 msgid "Interface pattern spacing" msgstr "ì¸í„°íŽ˜ì´ìФ 패턴 간격" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "" "ì¸í„°íŽ˜ì´ìФ ë¼ì¸ ê°„ 간격. 솔리드 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 가져오려면 0ì„ ì„¤ì •í•˜ì‹­ì‹œì˜¤." -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:1905 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " @@ -6073,35 +6746,35 @@ msgstr "" "서í¬íЏ 재료 ì¸í„°íŽ˜ì´ìФ ë ˆì´ì–´ ì¸ì‡„ ì†ë„ 백분율(예: 50%)로 í‘œí˜„ë  ê²½ìš° 서í¬íЏ " "재료 ì†ë„ì— ë”°ë¼ ê³„ì‚°ëœë‹¤." -#: src/libslic3r/PrintConfig.cpp:2013 +#: src/libslic3r/PrintConfig.cpp:1914 msgid "Pattern" msgstr "패턴" -#: src/libslic3r/PrintConfig.cpp:2015 +#: src/libslic3r/PrintConfig.cpp:1916 msgid "Pattern used to generate support material." msgstr "서í¬íЏ 재료를 ìƒì„±í•˜ëŠ” ë° ì‚¬ìš©ë˜ëŠ” 패턴." -#: src/libslic3r/PrintConfig.cpp:2022 +#: src/libslic3r/PrintConfig.cpp:1922 msgid "Rectilinear grid" msgstr "ì§ì„  그리드" -#: src/libslic3r/PrintConfig.cpp:2028 +#: src/libslic3r/PrintConfig.cpp:1928 msgid "Pattern spacing" msgstr "패턴 간격" -#: src/libslic3r/PrintConfig.cpp:2030 +#: src/libslic3r/PrintConfig.cpp:1930 msgid "Spacing between support material lines." msgstr "서í¬íЏ 재료 ë¼ì¸ 사ì´ì˜ 간격." -#: src/libslic3r/PrintConfig.cpp:2040 +#: src/libslic3r/PrintConfig.cpp:1939 msgid "Speed for printing support material." msgstr "서í¬íЏ 재료를 ì¸ì‡„하는 ì†ë„." -#: src/libslic3r/PrintConfig.cpp:2047 +#: src/libslic3r/PrintConfig.cpp:1946 msgid "Synchronize with object layers" msgstr "ê°ì²´ ë ˆì´ì–´ì™€ ë™ê¸°í™”" -#: src/libslic3r/PrintConfig.cpp:2049 +#: src/libslic3r/PrintConfig.cpp:1948 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." @@ -6109,11 +6782,11 @@ msgstr "" "서í¬íЏ ë ˆì´ì–´ë¥¼ 프린트 ë ˆì´ì–´ì™€ ë™ê¸°í™”하십시오. ì´ê²ƒì€ 스위치가 비싼 멀티 ë©”" "터리얼 프린터ì—서 유용하다." -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:1954 msgid "Overhang threshold" msgstr "오버행 한계ì " -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:1956 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -6125,11 +6798,11 @@ msgstr "" "성ë˜ì§€ 않는다. 즉, ì´ ê°’ì€ ì„œí¬íЏ 재료 ì—†ì´ ì¸ì‡„í•  수 있는 가장 ìˆ˜í‰ ê²½ì‚¬(수" "í‰ë©´ì—서 측정ë¨)를 나타낸다. ìžë™ ê°ì§€ë¥¼ 위해 0으로 설정하십시오(권장)." -#: src/libslic3r/PrintConfig.cpp:2071 +#: src/libslic3r/PrintConfig.cpp:1968 msgid "With sheath around the support" msgstr "서í¬íЏ 주변ì´ë‚˜ 외부로" -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:1970 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." @@ -6137,7 +6810,7 @@ msgstr "" "기본 서í¬íЏ ì£¼ìœ„ì— ì™¸ìž¥ (ë‹¨ì¼ ì£¼ë³€ ì„ )ì„ ì¶”ê°€í•˜ì‹­ì‹œì˜¤. ì´ê²ƒì€ 페ì´ìФ ì—…ì„ë³´" "다 신뢰성있게 만들ë¿ë§Œ ì•„ë‹ˆë¼ ì œê±°í•˜ê¸°ë„ ì–´ë µìŠµë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:1977 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." @@ -6145,25 +6818,25 @@ msgstr "" "첫 번째 것 ì´í›„ì— ë ˆì´ì–´ì— 대한 ë” ë‚®ì€ ì˜¨ë„. ì´ ê°’ì„ 0으로 설정하면 출력ì—" "서 â€‹â€‹ì˜¨ë„ ì œì–´ ëª…ë ¹ì„ ë¹„í™œì„±í™” í•  수 있습니다." -#: src/libslic3r/PrintConfig.cpp:2084 +#: src/libslic3r/PrintConfig.cpp:1979 msgid "Temperature" msgstr "온ë„" -#: src/libslic3r/PrintConfig.cpp:2090 +#: src/libslic3r/PrintConfig.cpp:1985 msgid "Detect thin walls" msgstr "ì–‡ì€ ë²½(walls) ê°ì§€" -#: src/libslic3r/PrintConfig.cpp:2092 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." msgstr "싱글 너비 ë²½ (ë‘ ë¶€ë¶„ì´ ë§žì§€ 않는 부분과 무너지는 부분)ì„ ê°ì§€í•©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2099 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Threads" msgstr "스레드(Threads)" -#: src/libslic3r/PrintConfig.cpp:2100 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." @@ -6171,7 +6844,7 @@ msgstr "" "스레드는 장기 실행 태스í¬ë¥¼ 병렬 처리하는 ë° ì‚¬ìš©ë©ë‹ˆë‹¤. 최ì ì˜ 스레드 수는 " "사용 가능한 코어 / 프로세서 수보다 약간 높습니다." -#: src/libslic3r/PrintConfig.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:2006 msgid "" "This custom code is inserted right before every extruder change. Note that " "you can use placeholder variables for all Slic3r settings as well as " @@ -6181,7 +6854,7 @@ msgstr "" "[previous_extruder] ë° [next_extruder]ë¿ ì•„ë‹ˆë¼ ëª¨ë“  Slic3r ì„¤ì •ì— ëŒ€í•´ ìžë¦¬ " "표시 ìž ë³€ìˆ˜ë¥¼ 사용할 수 있습니다." -#: src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2018 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -6195,7 +6868,7 @@ msgstr "" "으면 ë…¸ì¦ ì§€ë¦„ì´ ì‚¬ìš©ë©ë‹ˆë‹¤. 백분율 (예 : 90 %)로 표현하면 ë ˆì´ì–´ 높ì´ë¥¼ 기준" "으로 계산ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2029 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -6208,28 +6881,23 @@ msgstr "" "ì „ ì†ë„ì— ëŒ€í•œ 백분율 (예 : 80 %)로 나타낼 수 있습니다. ìžë™ìœ¼ë¡œ 0으로 설정하" "십시오." -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "윗부분" - -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2043 msgid "Number of solid layers to generate on top surfaces." msgstr "ìƒë‹¨ í‘œë©´ì— ìƒì„± í•  솔리드 ë ˆì´ì–´ 수입니다." -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "Top solid layers" msgstr "탑 솔리드 ë ˆì´ì–´" -#: src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2050 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "ì´ë™ ì†ë„ (먼 ëŒì¶œ ì  ì‚¬ì´ì˜ ì í”„)." -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2058 msgid "Use firmware retraction" msgstr "펌웨어 철회" -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2059 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." @@ -6237,11 +6905,11 @@ msgstr "" "ì´ ì‹¤í—˜ ì„¤ì •ì€ G10 ë° G11 ëª…ë ¹ì„ ì‚¬ìš©í•˜ì—¬ 펌웨어ì—서 취소를 처리하ë„ë¡í•©ë‹ˆ" "다. ì´ê²ƒì€ ìµœê·¼ì˜ ë§ë¦°ì—서만 ì§€ì›ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2065 msgid "Use relative E distances" msgstr "ìƒëŒ€ì ì¸ E 거리 사용" -#: src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2066 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." @@ -6249,11 +6917,11 @@ msgstr "" "íŽŒì›¨ì–´ì— ìƒëŒ€ E ê°’ì´ í•„ìš”í•œ ê²½ìš°ì´ ê°’ì„ ì„ íƒí•˜ê³ , 그렇지 않으면 ì„ íƒí•˜ì§€ 마십" "시오. ëŒ€ë¶€ë¶„ì˜ íšŒì‚¬ëŠ” 절대 ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2184 +#: src/libslic3r/PrintConfig.cpp:2072 msgid "Use volumetric E" msgstr "ìš©ì  E 사용" -#: src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -6268,11 +6936,11 @@ msgstr "" "[filament_diameter_0] T0'ê³¼ ê°™ì€ ëª…ë ¹ì„ ìž…ë ¥ í•  수 있습니다 Slic3r. ì´ê²ƒì€ 최" "ê·¼ì˜ ë§ë¦°ì—서만 ì§€ì›ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2196 +#: src/libslic3r/PrintConfig.cpp:2083 msgid "Enable variable layer height feature" msgstr "가변 ë ˆì´ì–´ ë†’ì´ ê¸°ëŠ¥ 사용" -#: src/libslic3r/PrintConfig.cpp:2197 +#: src/libslic3r/PrintConfig.cpp:2084 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." @@ -6280,11 +6948,11 @@ msgstr "" "ì¼ë¶€ 프린터 ë˜ëŠ” 프린터 ì„¤ì •ì€ ê°€ë³€ ë ˆì´ì–´ 높ì´ë¡œ ì¸ì‡„하는 ë° ì–´ë ¤ì›€ì´ìžˆì„ " "수 있습니다. 기본ì ìœ¼ë¡œ 사용ë©ë‹ˆë‹¤." -#: src/libslic3r/PrintConfig.cpp:2204 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Wipe while retracting" msgstr "수축시 닦아내십시오" -#: src/libslic3r/PrintConfig.cpp:2205 +#: src/libslic3r/PrintConfig.cpp:2091 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." @@ -6292,7 +6960,7 @@ msgstr "" "ì´ í”Œëž˜ê·¸ëŠ” ëˆ„ì¶œëœ ë¦¬íŠ¸ëž™ì‹±ì˜ ë¸”ëŸ½ ê°€ëŠ¥ì„±ì„ ìµœì†Œí™”í•˜ê¸° 위해 수축하는 ë™ì•ˆ ë…¸" "ì¦ì„ ì´ë™ì‹œí‚¨ë‹¤." -#: src/libslic3r/PrintConfig.cpp:2213 +#: src/libslic3r/PrintConfig.cpp:2098 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." @@ -6300,11 +6968,11 @@ msgstr "" "멀티 메터리알 프린터는 공구 êµí™˜ 시 ìµìŠ¤íŠ¸ë£¨ë”를 프ë¼ì´ë°í•˜ê±°ë‚˜ 제거해야 í•  " "수 있다. ê³¼ë„한 ë¬¼ì§ˆì„ ì™€ì´í¼ íƒ€ì›Œì— ëŒì¶œì‹œí‚¨ë‹¤." -#: src/libslic3r/PrintConfig.cpp:2220 +#: src/libslic3r/PrintConfig.cpp:2104 msgid "Purging volumes - load/unload volumes" msgstr "볼륨 ì‚­ì œ - 볼륨 로드/언로드" -#: src/libslic3r/PrintConfig.cpp:2221 +#: src/libslic3r/PrintConfig.cpp:2105 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " @@ -6313,11 +6981,11 @@ msgstr "" "ì´ ë²¡í„°ëŠ” 와ì´í¼ ìž‘ë™ íƒ€ì›Œì— ì‚¬ìš©ë˜ëŠ” ê° ê³µêµ¬ì™€ êµí™˜í•˜ëŠ” ë° í•„ìš”í•œ ë³¼ë¥¨ì„ ì €" "장한다. ì´ëŸ¬í•œ ê°’ì€ ì•„ëž˜ ì „ì²´ ì‚­ì œ 볼륨 ìƒì„±ì„ 단순화하기 위해 사용ëœë‹¤. " -#: src/libslic3r/PrintConfig.cpp:2228 +#: src/libslic3r/PrintConfig.cpp:2111 msgid "Purging volumes - matrix" msgstr "볼륨 ì‚­ì œ - 행렬" -#: src/libslic3r/PrintConfig.cpp:2229 +#: src/libslic3r/PrintConfig.cpp:2112 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " @@ -6325,73 +6993,73 @@ msgstr "" "ì´ ë§¤íŠ¸ë¦­ìŠ¤ëŠ” 주어진 공구 ìŒì— 대해 새 í•„ë¼ë©˜íŠ¸ë¥¼ 지우는 ë° í•„ìš”í•œ 볼륨(ìž…ë°© " "밀리미터)ì„ ì„¤ëª…í•œë‹¤. " -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2121 msgid "Position X" msgstr "Xì¶• 위치" -#: src/libslic3r/PrintConfig.cpp:2240 +#: src/libslic3r/PrintConfig.cpp:2122 msgid "X coordinate of the left front corner of a wipe tower" msgstr "와ì´í”„ íƒ€ì›Œì˜ ì¢Œì¸¡ ì „ë©´ ëª¨ì„œë¦¬ì˜ X 좌표" -#: src/libslic3r/PrintConfig.cpp:2247 +#: src/libslic3r/PrintConfig.cpp:2128 msgid "Position Y" msgstr "Yì¶• 위치" -#: src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2129 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "와ì´í¼ ìž‘ë™ íƒ€ì›Œì˜ ì¢Œì¸¡ ì „ë°© ëª¨ì„œë¦¬ì˜ Y 좌표" -#: src/libslic3r/PrintConfig.cpp:2256 +#: src/libslic3r/PrintConfig.cpp:2136 msgid "Width of a wipe tower" msgstr "와ì´í¼ 타워 í­" -#: src/libslic3r/PrintConfig.cpp:2263 +#: src/libslic3r/PrintConfig.cpp:2142 msgid "Wipe tower rotation angle" msgstr "와ì´í¼ 타워 회전ê°ë„" -#: src/libslic3r/PrintConfig.cpp:2264 +#: src/libslic3r/PrintConfig.cpp:2143 msgid "Wipe tower rotation angle with respect to x-axis " msgstr "X ì¶•ì— ëŒ€í•œ 와ì´í¼ 타워 ê°ë„ " -#: src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565 msgid "degrees" msgstr "ê°ë„" -#: src/libslic3r/PrintConfig.cpp:2272 +#: src/libslic3r/PrintConfig.cpp:2150 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2273 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2281 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2282 +#: src/libslic3r/PrintConfig.cpp:2159 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2289 +#: src/libslic3r/PrintConfig.cpp:2165 msgid "Maximal bridging distance" msgstr "최대 브리징 거리" -#: src/libslic3r/PrintConfig.cpp:2290 +#: src/libslic3r/PrintConfig.cpp:2166 msgid "Maximal distance between supports on sparse infill sections. " msgstr "드문드문하 ì¸í•„ 섹션ì—서 지지대 사ì´ì˜ 최대 거리. " -#: src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2172 msgid "XY Size Compensation" msgstr "XY í¬ê¸° ë³´ì •" -#: src/libslic3r/PrintConfig.cpp:2299 +#: src/libslic3r/PrintConfig.cpp:2174 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" @@ -6400,11 +7068,11 @@ msgstr "" "XY í‰ë©´ì—서 ì„¤ì •ëœ ê°’(ìŒìˆ˜ = 안, ì–‘ = 바깥쪽)ì— ë”°ë¼ ê°ì²´ê°€ ì¦ê°€/정격ëœë‹¤. ì´" "는 êµ¬ë© í¬ê¸°ë¥¼ 미세 ì¡°ì •í•˜ëŠ”ë° ìœ ìš©í•  수 있다." -#: src/libslic3r/PrintConfig.cpp:2308 +#: src/libslic3r/PrintConfig.cpp:2182 msgid "Z offset" msgstr "Z 오프셋" -#: src/libslic3r/PrintConfig.cpp:2309 +#: src/libslic3r/PrintConfig.cpp:2183 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " @@ -6415,425 +7083,578 @@ msgstr "" "톱 0ì´ ì‹¤ì œë¡œ ë…¸ì¦ì„ 프린트 베드ì—서 0.3mm 떨어진 ê³³ì— ë‘” 경우, ì´ë¥¼ -0.3(ë˜" "는 엔드 ìŠ¤í†±ì„ ê³ ì •)으로 설정하십시오." -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2201 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2206 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2207 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2212 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2214 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2220 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2402 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2403 +#: src/libslic3r/PrintConfig.cpp:2226 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2410 +#: src/libslic3r/PrintConfig.cpp:2232 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2411 +#: src/libslic3r/PrintConfig.cpp:2233 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2238 +msgid "Fast" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2239 +msgid "Fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2240 +msgid "Time of the fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2247 +msgid "Slow" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2248 +msgid "Slow tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2249 +msgid "Time of the slow tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2256 +msgid "Area fill" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2257 +msgid "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2266 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273 +msgid "Printer absolute correction" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2274 +msgid "" +"Will inflate or deflate the sliced 2D polygons according to the sign of the " +"correction." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281 +msgid "Printer gamma correction" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2282 +msgid "This will apply a gamm correction to the rasterized 2D polygons." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 +#: src/libslic3r/PrintConfig.cpp:2298 +msgid "Faded layers" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2299 +msgid "" +"Number of the layers needed for the exposure time fade from initial exposure " +"time to the exposure time" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307 +msgid "Exposure time" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" +#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 +msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2327 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2328 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 +#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2487 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2360 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2494 +#: src/libslic3r/PrintConfig.cpp:2365 msgid "Support head front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2503 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Support head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2376 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2383 msgid "Support head width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2514 +#: src/libslic3r/PrintConfig.cpp:2385 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2521 +#: src/libslic3r/PrintConfig.cpp:2393 msgid "Support pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2395 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Support pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2531 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "" "Controls the bridge type between two neigboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2540 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2541 +#: src/libslic3r/PrintConfig.cpp:2413 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2426 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2437 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2559 +#: src/libslic3r/PrintConfig.cpp:2439 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2447 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2449 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2456 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2577 +#: src/libslic3r/PrintConfig.cpp:2458 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2466 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2586 +#: src/libslic3r/PrintConfig.cpp:2468 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2475 +msgid "Max pillar linking distance" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2477 +msgid "" +"The max distance of two pillars to get linked with each other. A zero value " +"will prohibit pillar cascading." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2485 msgid "Object elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2595 +#: src/libslic3r/PrintConfig.cpp:2487 msgid "How much the supports should lift up the supported object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" +#: src/libslic3r/PrintConfig.cpp:2495 +msgid "Support points density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." +#: src/libslic3r/PrintConfig.cpp:2497 +msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" +#: src/libslic3r/PrintConfig.cpp:2503 +msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" +#: src/libslic3r/PrintConfig.cpp:2505 +msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 +#: src/libslic3r/PrintConfig.cpp:2511 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2513 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2636 +#: src/libslic3r/PrintConfig.cpp:2518 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2645 +#: src/libslic3r/PrintConfig.cpp:2520 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2654 +#: src/libslic3r/PrintConfig.cpp:2529 +msgid "Defines the cavity depth. Set to zero to disable the cavity." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2539 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2663 +#: src/libslic3r/PrintConfig.cpp:2541 +msgid "" +"Some objects can get along with a few smaller pads instead of a single big " +"one. This parameter defines how far the center of two smaller pads should " +"be. If theyare closer, they will get merged into one pad." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2552 msgid "Pad edge radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3017 +#: src/libslic3r/PrintConfig.cpp:2561 +msgid "Pad wall slope" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2563 +msgid "" +"The slope of the pad wall relative to the bed plane. 90 degrees means " +"straight walls." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2924 +msgid "Export SVG" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2925 +msgid "Export the model(s) as OBJ." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2936 +msgid "Export SLA" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2937 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2942 +msgid "Export 3MF" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2943 +msgid "Export the model(s) as 3MF." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2947 +msgid "Export AMF" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2948 +msgid "Export the model(s) as AMF." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2952 +msgid "Export STL" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2953 +msgid "Export the model(s) as STL." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2958 +msgid "Slice the model and export toolpaths as G-code." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2963 +msgid "Slice" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2964 +msgid "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2969 +msgid "Help" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2970 +msgid "Show this help." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2975 +msgid "Help (FFF options)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2976 +msgid "Show the full list of print/G-code configuration options." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2980 +msgid "Help (SLA options)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2981 +msgid "Show the full list of SLA print configuration options." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2985 +msgid "Output Model Info" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2986 +msgid "Write information about the model to the console." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2990 +msgid "Save config file" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2991 +msgid "Save configuration to the specified file." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3001 +msgid "Align XY" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3002 +msgid "Align the model to the given point." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3007 msgid "Cut model at the given Z." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" +#: src/libslic3r/PrintConfig.cpp:3028 +msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3023 +#: src/libslic3r/PrintConfig.cpp:3029 +msgid "Center the print around the given center." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3033 +msgid "Don't arrange" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3034 msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" +#: src/libslic3r/PrintConfig.cpp:3037 +msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3031 +#: src/libslic3r/PrintConfig.cpp:3038 +msgid "Multiply copies by this factor." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3042 +msgid "Duplicate by grid" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3043 +msgid "Multiply copies by creating a grid." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3046 +msgid "Merge" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3047 +msgid "" +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3052 +msgid "" +"Try to repair any non-manifold meshes (this option is implicitly added " +"whenever we need to slice the model to perform the requested action)." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3056 +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3060 +msgid "Rotate around X" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3061 +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3065 +msgid "Rotate around Y" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3066 +msgid "Rotation angle around the Y axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3071 +msgid "Scaling factor or percentage." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3076 +msgid "" +"Detect unconnected parts in the given model(s) and split them into separate " +"objects." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3079 +msgid "Scale to Fit" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3080 +msgid "Scale to fit the given volume." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3089 +msgid "Ignore non-existent config files" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3090 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 +msgid "Load config file" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3094 +msgid "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3097 +msgid "Output File" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3098 +msgid "" +"The file where the output will be written (if not specified, it will be " +"based on the input file)." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3108 +msgid "Data directory" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3109 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - #: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." +msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." +#: src/libslic3r/PrintConfig.cpp:3113 +msgid "" +"Messages with severity lower or eqal to the loglevel will be printed out. 0:" +"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:176 diff --git a/resources/localization/list.txt b/resources/localization/list.txt index aa673bbdf..fdffaf9d9 100644 --- a/resources/localization/list.txt +++ b/resources/localization/list.txt @@ -1,4 +1,5 @@ src/slic3r/GUI/AboutDialog.cpp +src/slic3r/GUI/BackgroundSlicingProcess.cpp src/slic3r/GUI/BedShapeDialog.cpp src/slic3r/GUI/BedShapeDialog.hpp src/slic3r/GUI/BonjourDialog.cpp @@ -8,11 +9,17 @@ src/slic3r/GUI/ConfigWizard.cpp src/slic3r/GUI/Field.cpp src/slic3r/GUI/FirmwareDialog.cpp src/slic3r/GUI/GLCanvas3D.cpp -src/slic3r/GUI/GLGizmo.cpp +src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp +src/slic3r/GUI/Gizmos/GLGizmoMove.cpp +src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp +src/slic3r/GUI/Gizmos/GLGizmoScale.cpp +src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp src/slic3r/GUI/GUI.cpp src/slic3r/GUI/GUI_App.cpp src/slic3r/GUI/GUI_ObjectList.cpp src/slic3r/GUI/GUI_ObjectManipulation.cpp +src/slic3r/GUI/GUI_ObjectSettings.cpp src/slic3r/GUI/GUI_Preview.cpp src/slic3r/GUI/KBShortcutsDialog.cpp src/slic3r/GUI/MainFrame.cpp @@ -23,15 +30,23 @@ src/slic3r/GUI/Preset.cpp src/slic3r/GUI/PresetBundle.cpp src/slic3r/GUI/PresetHints.cpp src/slic3r/GUI/PrintHostDialogs.cpp +src/slic3r/GUI/ProgressStatusBar.cpp src/slic3r/GUI/RammingChart.cpp src/slic3r/GUI/SysInfoDialog.cpp src/slic3r/GUI/Tab.cpp src/slic3r/GUI/Tab.hpp src/slic3r/GUI/UpdateDialogs.cpp src/slic3r/GUI/WipeTowerDialog.cpp +src/slic3r/GUI/wxExtensions.cpp +src/slic3r/Utils/Duet.cpp src/slic3r/Utils/OctoPrint.cpp src/slic3r/Utils/PresetUpdater.cpp src/slic3r/Utils/FixModelByWin10.cpp +src/libslic3r/Zipper.cpp +src/libslic3r/SLA/SLASupportTree.cpp src/libslic3r/Print.cpp +src/libslic3r/SLAPrint.cpp +src/libslic3r/PrintBase.cpp src/libslic3r/PrintConfig.cpp +src/libslic3r/PrintObject.cpp src/libslic3r/GCode/PreviewData.cpp diff --git a/resources/localization/pl/Slic3rPE.mo b/resources/localization/pl/Slic3rPE.mo deleted file mode 100644 index 7cd9902cf..000000000 Binary files a/resources/localization/pl/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/pl/Slic3rPE_pl.po b/resources/localization/pl/Slic3rPE_pl.po deleted file mode 100644 index 44c39a7c2..000000000 --- a/resources/localization/pl/Slic3rPE_pl.po +++ /dev/null @@ -1,7006 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n" -"%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n" -"%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3);\n" -"X-Generator: Poedit 2.0.8\n" - -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" -msgstr "O Slic3r" - -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 -msgid "Version" -msgstr "Wersja" - -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "KsztaÅ‚t" - -#: src/slic3r/GUI/BedShapeDialog.cpp:50 -msgid "Rectangular" -msgstr "ProstokÄ…tny" - -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 -msgid "Size" -msgstr "Rozmiar" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -msgid "Size in X and Y of the rectangular plate." -msgstr "Rozmiar X i Y stoÅ‚u prostokÄ…tnego." - -#: src/slic3r/GUI/BedShapeDialog.cpp:61 -msgid "Origin" -msgstr "Punkt zerowy" - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" -"OdlegÅ‚ość koordynaty punktu zerowego od przedniego lewego rogu prostokÄ…ta." - -#: src/slic3r/GUI/BedShapeDialog.cpp:66 -msgid "Circular" -msgstr "OkrÄ…gÅ‚y" - -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 -msgid "mm" -msgstr "mm" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "Åšrednica" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Åšrednica stoÅ‚u. Z zaÅ‚ożenia punkt bazowy (0, 0) jest zlokalizowany na Å›rodku." - -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "WÅ‚asny" - -#: src/slic3r/GUI/BedShapeDialog.cpp:79 -msgid "Load shape from STL..." -msgstr "" - -#: src/slic3r/GUI/BedShapeDialog.cpp:125 -msgid "Settings" -msgstr "Ustawienia" - -#: src/slic3r/GUI/BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Wybierz plik do importu ksztaÅ‚tu stoÅ‚u (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " -msgstr "Błąd! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "Wybrany plik nie zawiera żadnego ksztaÅ‚tu." - -#: src/slic3r/GUI/BedShapeDialog.cpp:328 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Wybrany plik zawiera kilka rozłączonych obszarów. Taki plik nie jest " -"obsÅ‚ugiwany." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape" -msgstr "KsztaÅ‚t stoÅ‚u" - -#: src/slic3r/GUI/BonjourDialog.cpp:54 -msgid "Network lookup" -msgstr "PodglÄ…d sieci" - -#: src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Address" -msgstr "Adres" - -#: src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Hostname" -msgstr "Nazwa hosta" - -#: src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "Service name" -msgstr "Nazwa usÅ‚ugi" - -#: src/slic3r/GUI/BonjourDialog.cpp:70 -msgid "OctoPrint version" -msgstr "Wersja OctoPrint" - -#: src/slic3r/GUI/BonjourDialog.cpp:188 -msgid "Searching for devices" -msgstr "Wyszukiwanie urzÄ…dzeÅ„" - -#: src/slic3r/GUI/BonjourDialog.cpp:195 -msgid "Finished" -msgstr "ZakoÅ„czono" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "Opis Przycisków i Kolorów Tekstu" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "Wartość jest taka sama jak systemowa" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "" -"Value was changed and is not equal to the system value or the last saved " -"preset" -msgstr "" -"Wartość zostaÅ‚a zmieniona i nie równa siÄ™ wartoÅ›ci systemowej lub tej z " -"ostatnio zapisanego zestawu ustawieÅ„" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 -msgid "Upgrade" -msgstr "Aktualizacja" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 -msgid "Downgrade" -msgstr "Deaktualizacja" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 -msgid "Before roll back" -msgstr "Przez zmianÄ…" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 -msgid "User" -msgstr "Użytkownik" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 -msgid "Unknown" -msgstr "Nieznane" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "Aktywny: " - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "wersja Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" -msgstr "druk" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "filaments" -msgstr "filamenty" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 -msgid "printer" -msgstr "drukarka" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 -msgid "vendor" -msgstr "dostawca" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "version" -msgstr "wersja" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "min slic3r version" -msgstr "minimalna wersja slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "max slic3r version" -msgstr "maksymalna wersja Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "model" -msgstr "model" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "variants" -msgstr "warianty" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" -msgstr "Niekompatybilne z tÄ… wersjÄ… Slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 -msgid "Activate" -msgstr "Aktywacja" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 -msgid "Configuration Snapshots" -msgstr "Zrzuty konfiguracji" - -#: src/slic3r/GUI/ConfigWizard.cpp:92 -msgid "nozzle" -msgstr "dysza" - -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "domyÅ›lnie" - -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Zaznacz wszystko" - -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "Odznacz" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "Witaj w Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -msgid "Welcome" -msgstr "Witaj" - -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 -#, c-format -msgid "Run %s" -msgstr "Uruchom %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:234 -#, c-format -msgid "" -"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " -"configuration; just a few settings and you will be ready to print." -msgstr "" -"Witaj w Slic3r Prusa Edition! Ten %s pomoże we wstÄ™pnej konfiguracji - tylko " -"kilka ustawieÅ„ dzieli CiÄ™ od gotowoÅ›ci do drukowania." - -#: src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "" -"Remove user profiles - install from scratch (a snapshot will be taken " -"beforehand)" -msgstr "" -"UsuÅ„ profile użytkownika - czysta instalacja (najpierw zostanie wykonany " -"zrzut)" - -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "Inni dostawcy" - -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "WÅ‚asne ustawienia" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Automatic updates" -msgstr "Automatyczne aktualizacje" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Updates" -msgstr "Aktualizacje" - -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "Sprawdź aktualizacje aplikacji" - -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 -msgid "" -"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " -"version becomes available a notification is displayed at the next " -"application startup (never during program usage). This is only a " -"notification mechanisms, no automatic installation is done." -msgstr "" -"Włączenie automatycznego sprawdzania dostÄ™pnoÅ›ci nowych wersji Slic3r PE " -"online. Pojawienie siÄ™ nowej wersji spowoduje wyÅ›wietlenie powiadomienia " -"przy starcie aplikacji (nigdy podczas jej pracy). Ta funkcja sÅ‚uży tylko " -"powiadamianiu, nie instaluje aktualizacji automatycznie." - -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "Automatyczna aktualizacja wbudowanych zestawów ustawieÅ„" - -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 -msgid "" -"If enabled, Slic3r downloads updates of built-in system presets in the " -"background. These updates are downloaded into a separate temporary location. " -"When a new preset version becomes available it is offered at application " -"startup." -msgstr "" -"Włączenie powoduje pobieranie wbudowanych systemowych zestawów ustawieÅ„ w " -"tle. Te ustawienia sÄ… pobierane do oddzielnej lokalizacji tymczasowej. JeÅ›li " -"pojawi siÄ™ nowa wersja to opcja jej instalacji pojawi siÄ™ przy starcie " -"aplikacji." - -#: src/slic3r/GUI/ConfigWizard.cpp:308 -msgid "" -"Updates are never applied without user's consent and never overwrite user's " -"customized settings." -msgstr "" -"Aktualizacje nie sÄ… stosowane bez wiedzy użytkownika i nigdy nie nadpisujÄ… " -"zapisanych ustawieÅ„ wÅ‚asnych." - -#: src/slic3r/GUI/ConfigWizard.cpp:313 -msgid "" -"Additionally a backup snapshot of the whole configuration is created before " -"an update is applied." -msgstr "" -"Dodatkowa kopia zrzutu caÅ‚ej konfiguracji jest tworzona przed " -"zainstalowaniem aktualizacji." - -#: src/slic3r/GUI/ConfigWizard.cpp:320 -msgid "Other Vendors" -msgstr "Inni dostawcy" - -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "Wybierz innego dostawcÄ™ wspieranego przez Slic3r PE:" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 -msgid "Firmware Type" -msgstr "Typ firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 -msgid "Firmware" -msgstr "Firmware" - -#: src/slic3r/GUI/ConfigWizard.cpp:385 -msgid "Choose the type of firmware used by your printer." -msgstr "Wybierz rodzaj firmware używanego przez TwojÄ… drukarkÄ™." - -#: src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape and Size" -msgstr "KsztaÅ‚t i rozmiar stoÅ‚u roboczego" - -#: src/slic3r/GUI/ConfigWizard.cpp:422 -msgid "Set the shape of your printer's bed." -msgstr "Ustaw ksztaÅ‚t stoÅ‚u roboczego drukarki." - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Filament and Nozzle Diameters" -msgstr "Åšrednice filamentu i dyszy" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Print Diameters" -msgstr "Åšrednice wydruku" - -#: src/slic3r/GUI/ConfigWizard.cpp:452 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "Wprowadź Å›rednicÄ™ dyszy hotendu." - -#: src/slic3r/GUI/ConfigWizard.cpp:455 -msgid "Nozzle Diameter:" -msgstr "Åšrednica dyszy:" - -#: src/slic3r/GUI/ConfigWizard.cpp:465 -msgid "Enter the diameter of your filament." -msgstr "Wprowadź Å›rednicÄ™ filamentu." - -#: src/slic3r/GUI/ConfigWizard.cpp:466 -msgid "" -"Good precision is required, so use a caliper and do multiple measurements " -"along the filament, then compute the average." -msgstr "" -"Wymagana jest spora precyzja, użyj wiÄ™c suwmiarki i przeprowadź kilka " -"pomiarów w sporych odstÄ™pach od siebie i oblicz Å›redniÄ…." - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Filament Diameter:" -msgstr "Åšrednica Filamentu:" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Extruder and Bed Temperatures" -msgstr "Temperatury ekstrudera i stoÅ‚u" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Temperatures" -msgstr "Temperatury" - -#: src/slic3r/GUI/ConfigWizard.cpp:503 -msgid "Enter the temperature needed for extruding your filament." -msgstr "Wprowadź temperaturÄ™ potrzebnÄ… do ekstruzji filamentu." - -#: src/slic3r/GUI/ConfigWizard.cpp:504 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "GeneralnÄ… zasadÄ… jest 160 do 230 °C dla PLA i 215 do 250 °C dla ABS." - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Extrusion Temperature:" -msgstr "Temperatura ekstrudera:" - -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 -msgid "°C" -msgstr "°C" - -#: src/slic3r/GUI/ConfigWizard.cpp:517 -msgid "" -"Enter the bed temperature needed for getting your filament to stick to your " -"heated bed." -msgstr "" -"Wprowadź temperaturÄ™ potrzebnÄ… do dobrego przylegania filamentu do " -"powierzchni podgrzewanego stoÅ‚u." - -#: src/slic3r/GUI/ConfigWizard.cpp:518 -msgid "" -"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " -"no heated bed." -msgstr "" -"GeneralnÄ… zasadÄ… jest 60 °C dla PLA i 110 °C dla ABS. Ustaw zero jeÅ›li nie " -"masz podgrzewanego stoÅ‚u." - -#: src/slic3r/GUI/ConfigWizard.cpp:521 -msgid "Bed Temperature:" -msgstr "Temperatura stoÅ‚u:" - -#: src/slic3r/GUI/ConfigWizard.cpp:833 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:834 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:835 -msgid "&Finish" -msgstr "&ZakoÅ„cz" - -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" -msgstr "Asystent Konfiguracji" - -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" -msgstr "&Asystent Konfiguracji" - -#: src/slic3r/GUI/ConfigWizard.cpp:909 -msgid "Configuration Assistant" -msgstr "Asystent konfiguracji" - -#: src/slic3r/GUI/ConfigWizard.cpp:910 -msgid "Configuration &Assistant" -msgstr "&Asystent Konfiguracji" - -#: src/slic3r/GUI/Field.cpp:109 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:140 -#, c-format -msgid "%s doesn't support percentage" -msgstr "%s nie może być wartoÅ›ciÄ… procentowÄ…" - -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:153 -msgid "Input value is out of range" -msgstr "Wartość poza zakresem" - -#: src/slic3r/GUI/Field.cpp:176 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:179 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:133 -msgid "Flash!" -msgstr "Flash!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "Anuluj" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "Flashowanie w toku. ProszÄ™ nie odłączać drukarki!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:245 -msgid "Flashing succeeded!" -msgstr "Flashowanie pomyÅ›lne!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:246 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "Flashowanie nie powiodÅ‚o siÄ™. Zobacz log z avrdude poniżej." - -#: src/slic3r/GUI/FirmwareDialog.cpp:247 -msgid "Flashing cancelled." -msgstr "Flashowanie anulowane." - -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 -msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:581 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:690 -msgid "Firmware flasher" -msgstr "Flasher firmware" - -#: src/slic3r/GUI/FirmwareDialog.cpp:712 -msgid "Firmware image:" -msgstr "Obraz firmware:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:716 -msgid "Serial port:" -msgstr "Port szeregowy:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:718 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:719 -msgid "Rescan" -msgstr "Skanuj ponownie" - -#: src/slic3r/GUI/FirmwareDialog.cpp:726 -msgid "Progress:" -msgstr "PostÄ™p:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:729 -msgid "Status:" -msgstr "Stan:" - -#: src/slic3r/GUI/FirmwareDialog.cpp:730 -msgid "Ready" -msgstr "Gotowe" - -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "Zaawansowane: log wyjÅ›ciowy z avrdude" - -#: src/slic3r/GUI/FirmwareDialog.cpp:809 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" -"Czy na pewno chcesz przerwać flashowanie firmware?\n" -"Może to spowodować nieprzewidziane problemy z drukarkÄ…!" - -#: src/slic3r/GUI/FirmwareDialog.cpp:810 -msgid "Confirmation" -msgstr "Potwierdzenie" - -#: src/slic3r/GUI/FirmwareDialog.cpp:813 -msgid "Cancelling..." -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "Obróć" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "Skalowanie" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 -msgid "Rotate lower part upwards" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 -msgid "Perform cut" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2276 -msgid "Cut object:" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 -msgid "Cut" -msgstr "Obcinanie" - -#: src/slic3r/GUI/GLGizmo.cpp:2466 -msgid "Keep upper part" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2467 -msgid "Keep lower part" -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "Uwaga" - -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "Próba uwolnienia nieokreÅ›lonego skalara" - -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 -msgid "Warning" -msgstr "Ostrzeżenie" - -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Wybierz jeden lub wiÄ™cej plików (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." -msgstr "Listy nazw jÄ™zyków i oznaczeÅ„ powinny mieć taki sam rozmiar." - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" -msgstr "Wybierz jÄ™zyk" - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" -msgstr "JÄ™zyk" - -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" -msgstr "DomyÅ›lnie" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" -msgstr "Zrzuty &konfiguracji" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" -msgstr "Sprawdzenie / aktywacja zrzutów konfiguracji" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" -msgstr "Wykonaj &Zrzut Konfiguracji" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" -msgstr "Zapisz zrzut konfiguracji" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" -msgstr "&Preferencje" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Preferencje aplikacji" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" -msgstr "Zaawansowane" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "ZmieÅ„ &jÄ™zyk aplikacji" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "Flash &firmware drukarki" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "Wgraj obraz firmware do drukarki opartej na Adruino" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "Zrzucanie konfiguracji" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "Nazwa zrzutu" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "Aplikacja zostanie uruchomiona ponownie" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "Uwaga!" - -#: src/slic3r/GUI/GUI_App.cpp:691 -msgid "&Configuration" -msgstr "&Konfiguracja" - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " -msgstr "Masz niesapisane zmiany " - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" -msgstr ". Odrzucić zmiany i kontynuować?" - -#: src/slic3r/GUI/GUI_App.cpp:712 -msgid "Unsaved Presets" -msgstr "Niezapisane zestawy ustawieÅ„" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Layers and Perimeters" -msgstr "Warstwy i Obrysy" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 -msgid "Infill" -msgstr "WypeÅ‚nienie" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "MateriaÅ‚ podporowy" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "PrÄ™dkość" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 -msgid "Extruders" -msgstr "Ekstrudery" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 -msgid "Extrusion Width" -msgstr "Szerokość Ekstruzji" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 -msgid "Name" -msgstr "Nazwa" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 -msgid "Extruder" -msgstr "Ekstruder" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "" -"Wybrany model nie może być rozdzielony ponieważ zawiera tylko jednÄ… część." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 -msgid "The supplied name is not valid;" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 -msgid "the following characters are not allowed:" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 -msgid "View" -msgstr "Widok" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Rodzaj funkcji" - -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 -msgid "Height" -msgstr "Wysokość" - -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 -msgid "Width" -msgstr "Szerokość" - -#: src/slic3r/GUI/GUI_Preview.cpp:242 -msgid "Volumetric flow rate" -msgstr "ObjÄ™toÅ›ciowa wartość przepÅ‚ywu" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "NarzÄ™dzie" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:247 -msgid "Show" -msgstr "Pokaż" - -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 -msgid "Feature types" -msgstr "Rodzaje funkcji" - -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Obrys" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "Obrys zewnÄ™trzny" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "Obrys zwisu" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "WypeÅ‚nienie wewnÄ™trzne" - -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Zwarte wypeÅ‚nienie" - -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Zwarte wypeÅ‚nienie górne" - -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "WypeÅ‚nienie mostu" - -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "WypeÅ‚nienie szpar" - -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "Skirt" - -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Warstwa łączÄ…ca podpory z modelem" - -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "Wieża czyszczÄ…ca" - -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 -msgid "Travel" -msgstr "JaÅ‚owy" - -#: src/slic3r/GUI/GUI_Preview.cpp:270 -msgid "Retractions" -msgstr "Retrakcje" - -#: src/slic3r/GUI/GUI_Preview.cpp:271 -msgid "Unretractions" -msgstr "Powrót retrakcji" - -#: src/slic3r/GUI/GUI_Preview.cpp:272 -msgid "Shells" -msgstr "PowÅ‚oka" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" -msgstr "Eksport G-code" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" -msgstr "Powtórz ostatnie szybkie ciÄ™cie" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" -msgstr "ZakÅ‚adka Stół" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "Ustawienia Druku" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" -msgstr "Ustawienia Filamentu" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "Ustawienia Drukarki" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Preferencje" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" -msgstr "Rozmieść" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" -msgstr "UsuÅ„ wszystko" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid "" -" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr "" -" - PamiÄ™taj aby sprawdzać aktualizacja na http://github.com/prusa3d/slic3r/" -"releases" - -#: src/slic3r/GUI/MainFrame.cpp:130 -msgid "Plater" -msgstr "Zawartość StoÅ‚u" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "&Otwórz" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Load exported configuration file" -msgstr "Wczytaj wyeksportowany plik konfiguracyjny" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Load presets from a bundle" -msgstr "Wczytaj zestaw ustawieÅ„" - -#: src/slic3r/GUI/MainFrame.cpp:256 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export &G-code" -msgstr "Eksport &G-code" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export current plate as G-code" -msgstr "Eksport zawartoÅ›ci stoÅ‚u jako G-code" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export plate as &STL" -msgstr "Eksport zawartoÅ›ci stoÅ‚u jako &STL" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export current plate as STL" -msgstr "Eksport zawartoÅ›ci stoÅ‚u jako STL" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export plate as &AMF" -msgstr "Eksport zawartoÅ›ci stoÅ‚u jako &AMF" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export current plate as AMF" -msgstr "Eksport zawartoÅ›ci stoÅ‚u jako AMF" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export &Config" -msgstr "Eksport &Konfiguracji" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export current configuration to file" -msgstr "Eksport obecnej konfiguracji do pliku" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export Config &Bundle" -msgstr "Eksport &Paczki Konfiguracyjnej" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export all presets to file" -msgstr "Eksport wszystkich zestawów ustawieÅ„ do pliku" - -#: src/slic3r/GUI/MainFrame.cpp:271 -msgid "&Export" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Slice a file into a G-code" -msgstr "CiÄ™cie jako G-code" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Quick Slice and Save As" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Slice a file into a G-code, save as" -msgstr "CiÄ™cie jako G-code, zapisz jako" - -#: src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat Last Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "(Re)Slice &Now" -msgstr "T&nij (ponownie)" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "Start new slicing process" -msgstr "Uruchom nowy proces ciÄ™cia" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "&Repair STL file" -msgstr "Na&prawa pliku STL" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "Automatically repair an STL file" -msgstr "Automatyczna naprawa pliku STL" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "&Quit" -msgstr "&WyjÅ›cie" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" -msgstr "Zamknij Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "&Select all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Delete &all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "&Plater Tab" -msgstr "ZakÅ‚adka &Stół" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "Show the plater" -msgstr "Pokaż zawartość stoÅ‚u" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "P&rint Settings Tab" -msgstr "Ustawienia D&ruku" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "Show the print settings" -msgstr "Pokaż ustawienia druku" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "&Filament Settings Tab" -msgstr "Ustawienia &Filamentu" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "Show the filament settings" -msgstr "Pokaż ustawienia filamentu" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Print&er Settings Tab" -msgstr "&Ustawienia Drukarki" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Show the printer settings" -msgstr "Pokaż ustawienia drukarki" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "&Izometryczny" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "Widok izometryczny" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "Z &góry" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "Widok z góry" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "Od &doÅ‚u" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "Widok od doÅ‚u" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "&Przód" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "Widok przodu" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "&TyÅ‚" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "Widok z tyÅ‚u" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "&Lewo" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "Widok lewy" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "P&rawo" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "Widok prawy" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "&Sterowniki Prusa3D" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Otwórz stronÄ™ Prusa3D ze sterownikami w przeglÄ…darce" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "W&ydania Prusa Edition" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Otwórz stronÄ™ z wydaniami Prusa Edition w przeglÄ…darce" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "Strona &WWW Slic3ra" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "Otwórz stronÄ™ Slic3ra w przeglÄ…darce" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "I&nstrukcja" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "Otwórz instrukcjÄ™ do Slic3ra w przeglÄ…darce" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "&Informacje o systemie" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "Pokaż informacje o systemie" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "Pokaż folder &Konfiguracyjny" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "Pokaż folder z konfiguracjami użytkownika (datadir)" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "ZgÅ‚oÅ› &problem" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "ZgÅ‚oÅ› problem z Slic3r Prusa Edition" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "Inform&acje o Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "Pokaż okienko" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "&Plik" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" -msgstr "&Okno" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" -msgstr "&Widok" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" -msgstr "Pomo&c" - -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Wybierz plik do pociÄ™cia (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." -msgstr "Brak poprzednio pociÄ™tych plików." - -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" -msgstr "Błąd" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "Poprzednio pociÄ™ty plik (" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." -msgstr ") nie znaleziono." - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "File Not Found" -msgstr "Nie znaleziono pliku" - -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " -msgstr "Zapisz " - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "SVG" -msgstr "SVG" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "G-code" -msgstr "G-code" - -# Context: L('Save ') . ($params{export_svg} ? L('SVG') : L('G-code')) . L(' file as:'), e.g. "Save G-Code file as:" -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr " plik jako:" - -#: src/slic3r/GUI/MainFrame.cpp:548 -msgid "Save zip file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Slicing" -msgstr "CiÄ™cie" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " -msgstr "Przetwarzanie " - -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid " was successfully sliced." -msgstr " zostaÅ‚ pomyÅ›lnie pociÄ™ty." - -#: src/slic3r/GUI/MainFrame.cpp:585 -msgid "Slicing Done!" -msgstr "CiÄ™cie zakoÅ„czone!" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Select the STL file to repair:" -msgstr "Wybierz plik STL do naprawy:" - -#: src/slic3r/GUI/MainFrame.cpp:614 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "Zapisz plik OBJ (mniej podatny na błędy współrzÄ™dnych niż STL) jako:" - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Your file was repaired." -msgstr "Twój plik zostaÅ‚ naprawiony." - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Repair" -msgstr "Naprawa" - -#: src/slic3r/GUI/MainFrame.cpp:643 -msgid "Save configuration as:" -msgstr "Zapisz konfiguracjÄ™ jako:" - -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 -msgid "Select configuration to load:" -msgstr "Wybierz konfiguracjÄ™ do wczytania:" - -#: src/slic3r/GUI/MainFrame.cpp:700 -msgid "Save presets bundle as:" -msgstr "Zapisz paczkÄ™ ustawieÅ„ jako:" - -#: src/slic3r/GUI/MainFrame.cpp:751 -#, c-format -msgid "%d presets successfully imported." -msgstr "pomyÅ›lnie zaimportowano %d zestawów ustawieÅ„." - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" -msgstr "Błąd Slic3r" - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" -msgstr "Slic3r napotkaÅ‚ błąd" - -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Info" - -#: src/slic3r/GUI/Plater.cpp:126 -msgid "Volume" -msgstr "ObjÄ™tość" - -#: src/slic3r/GUI/Plater.cpp:127 -msgid "Facets" -msgstr "Powierzchnie" - -#: src/slic3r/GUI/Plater.cpp:128 -msgid "Materials" -msgstr "MateriaÅ‚y" - -#: src/slic3r/GUI/Plater.cpp:131 -msgid "Manifold" -msgstr "Model zamkniÄ™ty" - -#: src/slic3r/GUI/Plater.cpp:174 -msgid "Sliced Info" -msgstr "Informacje o ciÄ™ciu" - -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 -msgid "Used Filament (m)" -msgstr "Użyty filament (m)" - -#: src/slic3r/GUI/Plater.cpp:194 -msgid "Used Filament (mm³)" -msgstr "Użyty filament (mm³)" - -#: src/slic3r/GUI/Plater.cpp:195 -msgid "Used Filament (g)" -msgstr "Użyty filament (g)" - -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 -msgid "Cost" -msgstr "Koszt" - -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 -msgid "Estimated printing time" -msgstr "Szacowany czas druku" - -#: src/slic3r/GUI/Plater.cpp:198 -msgid "Number of tool changes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "Podpory" - -#: src/slic3r/GUI/Plater.cpp:364 -msgid "Select what kind of support do you need" -msgstr "Wybierz rodzaj potrzebnych podpór" - -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Brak" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 -msgid "Support on build plate only" -msgstr "Podpory jedynie na powierzchni stoÅ‚u" - -#: src/slic3r/GUI/Plater.cpp:367 -msgid "Everywhere" -msgstr "WszÄ™dzie" - -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 -msgid "Brim" -msgstr "Brim (obramowanie)" - -#: src/slic3r/GUI/Plater.cpp:381 -msgid "" -"This flag enables the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Ta flaga włącza brim, który zostanie wydrukowany na pierwszej warstwie wokół " -"każdego modelu." - -#: src/slic3r/GUI/Plater.cpp:390 -msgid "Purging volumes" -msgstr "ObjÄ™toÅ›ci czyszczenia" - -#: src/slic3r/GUI/Plater.cpp:556 -msgid "Print settings" -msgstr "Ustawienia druku" - -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 -msgid "Filament" -msgstr "Filament" - -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:560 -msgid "Printer" -msgstr "Drukarka" - -#: src/slic3r/GUI/Plater.cpp:588 -msgid "Send to printer" -msgstr "WyÅ›lij do drukarki" - -#: src/slic3r/GUI/Plater.cpp:607 -msgid "Slice now" -msgstr "CiÄ™cie" - -#: src/slic3r/GUI/Plater.cpp:787 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d obrysów)" - -#: src/slic3r/GUI/Plater.cpp:792 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Naprawiono automatycznie (%d błędów)" - -#: src/slic3r/GUI/Plater.cpp:795 -#, c-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" -"%d nieprawidÅ‚owych powierzchni, %d naprawionych krawÄ™dzi, %d powierzchni " -"usuniÄ™to, %d powierzchni dodano, %d powierzchni odwrócono, %d odwróconych " -"krawÄ™dzi" - -#: src/slic3r/GUI/Plater.cpp:805 -msgid "Yes" -msgstr "Tak" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:855 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1304 -msgid "Loading" -msgstr "Wczytywanie" - -#: src/slic3r/GUI/Plater.cpp:1314 -#, c-format -msgid "Processing input file %s\n" -msgstr "Przetwarzanie pliku wejÅ›ciowego %s\n" - -#: src/slic3r/GUI/Plater.cpp:1366 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Ten plik zawiera kilka modeli umieszczonych na różnych wysokoÅ›ciach. " -"Potraktować go jako\n" -"jeden model skÅ‚adajÄ…cy siÄ™ z kilku części?\n" - -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 -msgid "Multi-part object detected" -msgstr "Wykryto obiekt wieloczęściowy" - -#: src/slic3r/GUI/Plater.cpp:1388 -#, c-format -msgid "" -"You can't to add the object(s) from %s because of one or some of them " -"is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1408 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"Kilka obiektów zostaÅ‚o zaÅ‚adowanych dla drukarki typu multi-material.\n" -"Traktować je jako jeden model zawierajÄ…cy kilka części?\n" - -#: src/slic3r/GUI/Plater.cpp:1424 -msgid "Loaded" -msgstr "Wczytano" - -#: src/slic3r/GUI/Plater.cpp:1492 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" -"Importowany model przekracza wymiary przestrzeni roboczej i zostaÅ‚ " -"przeskalowany do odpowiednich rozmiarów." - -#: src/slic3r/GUI/Plater.cpp:1493 -msgid "Object too large?" -msgstr "Model zbyt duży?" - -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "Export konfiguracji druku" - -#: src/slic3r/GUI/Plater.cpp:1538 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1702 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1705 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1736 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1740 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1782 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1787 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1797 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1818 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" -"Wybrany model nie może być podzielony ponieważ skÅ‚ada siÄ™ z wiÄ™cej niż " -"jednej części lub zawiera wiÄ™cej niż jeden materiaÅ‚." - -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "Anulowanie" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "W tej chwili trwa inny proces eksportu." - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "Niepowodzenie eksportu" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "UsuÅ„" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "UsuÅ„ wybrany model" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Increase copies" -msgstr "ZwiÄ™ksz kopie" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Place one more copy of the selected object" -msgstr "Umieść jednÄ… kopiÄ™ zaznaczonego modelu" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Decrease copies" -msgstr "Zmniejsz kopie" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Remove one copy of the selected object" -msgstr "UsuÅ„ jednÄ… kopiÄ™ wybranego modelu" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Set number of copies" -msgstr "Ustaw ilość kopii" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Change the number of copies of the selected object" -msgstr "ZmieÅ„ ilość kopii wybranego modelu" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload from Disk" -msgstr "Wczytaj ponownie z dysku" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload the selected file from Disk" -msgstr "Wczytaj ponownie wybrany plik z dysku" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "Eksport modelu jako STL" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "Eksport pojedynczego modelu jako plik STL" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Along X axis" -msgstr "WzdÅ‚uż osi X" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Mirror the selected object along the X axis" -msgstr "Odbicie lustrzane wybranego modelu w osi X" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Along Y axis" -msgstr "WzdÅ‚uż osi Y" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Mirror the selected object along the Y axis" -msgstr "Odbicie lustrzane wybranego modelu w osi Y" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Along Z axis" -msgstr "WzdÅ‚uż osi Z" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Mirror the selected object along the Z axis" -msgstr "Odbicie lustrzane wybranego modelu w osi Z" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror" -msgstr "Lustrzane" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror the selected object" -msgstr "Odbicie lustrzane wybranego modelu" - -#: src/slic3r/GUI/Plater.cpp:2400 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 -msgid "Split the selected object into individual objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 -msgid "Split the selected object into individual sub-parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 -msgid "Split" -msgstr "Podziel" - -#: src/slic3r/GUI/Plater.cpp:2405 -msgid "Split the selected object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save G-code file as:" -msgstr "Zapisz plik G-code jako:" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2845 -#, c-format -msgid "STL file exported to %s" -msgstr "Plik STL zostaÅ‚ wyeksportowany do %s" - -#: src/slic3r/GUI/Plater.cpp:2861 -#, c-format -msgid "AMF file exported to %s" -msgstr "Plik AMF zostaÅ‚ wyeksportowany do %s" - -#: src/slic3r/GUI/Plater.cpp:2864 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "Błąd eksportu pliku AMF %s" - -#: src/slic3r/GUI/Plater.cpp:2891 -#, c-format -msgid "3MF file exported to %s" -msgstr "Plik 3MF zostaÅ‚ wyeksportowany do %s" - -#: src/slic3r/GUI/Plater.cpp:2894 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "Błąd eksportu pliku 3MF %s" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 -msgid "General" -msgstr "Ogólne" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "ZapamiÄ™taj katalog wyjÅ›ciowy" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" -"Włączenie spowoduje, że Slic3r bÄ™dzie za każdym razem pytaÅ‚ gdzie " -"wyeksportować plik zamiast używać katalogu z plikami wejÅ›ciowymi." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Rozmieść modele automatycznie" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" -"Spowoduje, że Slic3r bÄ™dzie automatycznie umieszczaÅ‚ modele wokół centrum " -"stoÅ‚u." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Przetwarzanie w tle" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" -"Spowoduje, że Slic3r bÄ™dzie automatycznie procesowaÅ‚ modele jak tylko " -"zostanÄ… zaÅ‚adowane aby zmniejszyć czas eksportu G-code." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "Ukryj \" - domyÅ›lne - \" zestawy ustawieÅ„" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" -"Ukryj \" - domyÅ›lne - \" zestawy ustawieÅ„ w zakÅ‚adkach Druk / Filament / " -"Drukarka gdy dostÄ™pne sÄ… inne kompatybilne ustawienia." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Pokaż niekompatybilne ustawienia druku i filamentów" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" -"Zaznaczenie tej opcji spowoduje wyÅ›wietlanie wszystkich ustawieÅ„ druku i " -"filamentów w edytorze zestawów ustawieÅ„, nawet jeÅ›li sÄ… oznaczone jak " -"niekompatybilne z wybranÄ… drukarkÄ…" - -#: src/slic3r/GUI/Preferences.cpp:90 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "Użyj renderowania OpenGL 1.1 (przestarzaÅ‚e)" - -#: src/slic3r/GUI/Preferences.cpp:92 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" -"JeÅ›li napotykasz błędy spowodowane problematycznym sterownikiem OpenGL 2.0, " -"spróbuj zaznaczyć to pole. Wyłączy to edycjÄ™ wysokoÅ›ci warstwy i anti-" -"aliasing, wiÄ™c prawdopodobnie lepiej bÄ™dzie zaktualizować sterowniki karty " -"graficznej." - -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "Trzeba zrestartować Slic3r aby wprowadzić zmiany." - -#: src/slic3r/GUI/Preset.cpp:170 -msgid "modified" -msgstr "" - -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 -msgid "System presets" -msgstr "Ustawienia systemowe" - -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 -msgid "User presets" -msgstr "Zestawy użytkownika" - -#: src/slic3r/GUI/Preset.cpp:1157 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" -"JeÅ›li szacowany czas druku warstwy jest niższy niż ~%d s, wentylator bÄ™dzie " -"pracowaÅ‚ na %d %% a prÄ™dkość druku zostanie obniżona tak, aby warstwa byÅ‚a " -"drukowana przez nie mniej niż %d s (jednakże prÄ™dkość nie zejdzie poniżej " -"%d mm/s)." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"JeÅ›li szacowany czas jest wyższy, ale poniżej ~%ds, wentylator bÄ™dzie " -"pracowaÅ‚ z proporcjonalnie zmniejszanÄ… prÄ™dkoÅ›ciÄ… poniÄ™dzy %d%% a %d%%." - -#: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"Na pozostaÅ‚ych warstwach, wentylator " - -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "Wentylator " - -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "bÄ™dzie zawsze pracować w %d %% " - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "za wyjÄ…tkiem pierwszych %d warstw" - -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "za wyjÄ…tkiem pierwszej warstwy" - -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "bÄ™dzie wyłączony." - -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "obrysów zewnÄ™trznych" - -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "obrysy" - -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "wypeÅ‚nienia" - -#: src/slic3r/GUI/PresetHints.cpp:181 -msgid "solid infill" -msgstr "zwarte wypeÅ‚nienie" - -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "zwarte wypeÅ‚nienie na szczycie" - -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "podpora" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "warstwa łączÄ…ca podpory z modelem" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Na pierwszej warstwie" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Mosty objÄ™toÅ›ciowe" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "ObjÄ™toÅ›ciowy" - -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr " przepÅ‚yw osiÄ…ga wartoÅ›ci szczytowe " - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "maksimum zależny od profilu wydruku" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "podczas druku " - -#: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " -msgstr " ze współczynnikiem objÄ™toÅ›ciowym " - -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f mm³/s" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " z prÄ™dkoÅ›ciÄ… filamentu %3.2f mm/s." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" -"Zalecana grubość Å›cian dla modelu: niedostÄ™pna ze wzglÄ™du na niewÅ‚aÅ›ciwÄ… " -"wysokość warstwy." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "Zalecana grubość Å›ciany modelu dla wysokoÅ›ci warstwy %.2f i " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d linii: %.2lf mm" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "BRAK WYCISKANIA" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "Czas" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 -msgid "s" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "PrÄ™dkość objÄ™toÅ›ciowa" - -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 -msgid "Compatible printers" -msgstr "Kompatybilne drukarki" - -#: src/slic3r/GUI/Tab.cpp:50 -msgid "Select the printers this profile is compatible with." -msgstr "Wybierz drukarki kompatybilne z tym profilem." - -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:56 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " -msgstr "Zapisz bieżące " - -#: src/slic3r/GUI/Tab.cpp:119 -msgid "Delete this preset" -msgstr "UsuÅ„ ten zestaw ustawieÅ„" - -#: src/slic3r/GUI/Tab.cpp:131 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" -"Umieść kursor nad przyciskiem aby uzyskać wiÄ™cej informacji\n" -"lub kliknij ten przycisk." - -#: src/slic3r/GUI/Tab.cpp:824 -msgid "It's a default preset." -msgstr "DomyÅ›lny zestaw ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:825 -msgid "It's a system preset." -msgstr "To jest systemowy zestaw ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " -msgstr "Obecny zestaw ustawieÅ„ jest dziedziczony z " - -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " -msgstr "Nie można usunąć ani zmodyfikować. " - -#: src/slic3r/GUI/Tab.cpp:832 -msgid "" -"Any modifications should be saved as a new preset inherited from this one. " -msgstr "" -"Każda modyfikacja powinna zostać zapisana jako nowy zestaw ustawieÅ„ " -"dziedziczony z obecnego. " - -#: src/slic3r/GUI/Tab.cpp:833 -msgid "To do that please specify a new name for the preset." -msgstr "Aby to zrobić ustaw nowÄ… nazwÄ™ zestawu ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:837 -msgid "Additional information:" -msgstr "Dodatkowe informacje:" - -#: src/slic3r/GUI/Tab.cpp:843 -msgid "printer model" -msgstr "model drukarki" - -#: src/slic3r/GUI/Tab.cpp:851 -msgid "default print profile" -msgstr "domyÅ›lny profil druku" - -#: src/slic3r/GUI/Tab.cpp:854 -msgid "default filament profile" -msgstr "domyÅ›lny profil filamentu" - -#: src/slic3r/GUI/Tab.cpp:868 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:872 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 -msgid "Layers and perimeters" -msgstr "Warstwy i obrysy" - -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 -msgid "Layer height" -msgstr "Wysokość warstwy" - -#: src/slic3r/GUI/Tab.cpp:924 -msgid "Vertical shells" -msgstr "PowÅ‚oka pionowa" - -#: src/slic3r/GUI/Tab.cpp:935 -msgid "Horizontal shells" -msgstr "PowÅ‚oka pozioma" - -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 -msgid "Solid layers" -msgstr "Zwarte warstwy" - -#: src/slic3r/GUI/Tab.cpp:941 -msgid "Quality (slower slicing)" -msgstr "Jakość (wolniejsze ciÄ™cie)" - -#: src/slic3r/GUI/Tab.cpp:958 -msgid "Reducing printing time" -msgstr "Obniżanie czasu wydruku" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Skirt and brim" -msgstr "Skirt i brim" - -#: src/slic3r/GUI/Tab.cpp:987 -msgid "Raft" -msgstr "Tratwa (raft)" - -#: src/slic3r/GUI/Tab.cpp:991 -msgid "Options for support material and raft" -msgstr "Opcje materiaÅ‚u podporowego i tratwy (raft)" - -#: src/slic3r/GUI/Tab.cpp:1006 -msgid "Speed for print moves" -msgstr "PrÄ™dkość ruchów drukujÄ…cych" - -#: src/slic3r/GUI/Tab.cpp:1018 -msgid "Speed for non-print moves" -msgstr "PrÄ™dkość ruchów jaÅ‚owych" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Modifiers" -msgstr "Modyfikatory" - -#: src/slic3r/GUI/Tab.cpp:1024 -msgid "Acceleration control (advanced)" -msgstr "Ustawienia przyspieszeÅ„ (zaawansowane)" - -#: src/slic3r/GUI/Tab.cpp:1031 -msgid "Autospeed (advanced)" -msgstr "Automatyczne dostosowanie prÄ™dkoÅ›ci (zaawansowane)" - -#: src/slic3r/GUI/Tab.cpp:1037 -msgid "Multiple Extruders" -msgstr "Kilka ekstruderów" - -#: src/slic3r/GUI/Tab.cpp:1045 -msgid "Ooze prevention" -msgstr "Zapobieganie wyciekom (ooze)" - -#: src/slic3r/GUI/Tab.cpp:1062 -msgid "Extrusion width" -msgstr "Szerokość ekstruzji" - -#: src/slic3r/GUI/Tab.cpp:1072 -msgid "Overlap" -msgstr "NakÅ‚adanie" - -#: src/slic3r/GUI/Tab.cpp:1075 -msgid "Flow" -msgstr "PrzepÅ‚yw" - -#: src/slic3r/GUI/Tab.cpp:1078 -msgid "Other" -msgstr "Inne" - -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 -msgid "Output options" -msgstr "Opcje wyjÅ›ciowe" - -#: src/slic3r/GUI/Tab.cpp:1086 -msgid "Sequential printing" -msgstr "Drukowanie sekwencyjne (model po modelu)" - -#: src/slic3r/GUI/Tab.cpp:1088 -msgid "Extruder clearance (mm)" -msgstr "OdstÄ™p od ekstrudera (mm)" - -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 -msgid "Output file" -msgstr "Plik wyjÅ›ciowy" - -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 -msgid "Post-processing scripts" -msgstr "Skrypty do przetwarzania koÅ„cowego" - -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 -msgid "Notes" -msgstr "Notatki" - -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 -msgid "Dependencies" -msgstr "ZależnoÅ›ci" - -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 -msgid "Profile dependencies" -msgstr "ZależnoÅ›ci profilowe" - -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"Wymagania trybu wazy:\n" -"- jeden obrys\n" -"- brak warstw górnych\n" -"- 0% wypeÅ‚nienia\n" -"- brak materiaÅ‚u podporowego\n" -"- brak opcji \"zagwarantuj odpowiedniÄ… grubość Å›cianki\"\n" -"\n" -"Czy ustawić te parametry odpowiednio dla trybu wazy?" - -#: src/slic3r/GUI/Tab.cpp:1168 -msgid "Spiral Vase" -msgstr "Tryb Wazy" - -#: src/slic3r/GUI/Tab.cpp:1191 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"Użycie wieży czyszczÄ…cej jest możliwe jedynie przy użyciu nierozpuszczalnych " -"podpór\n" -"gdy sÄ… drukowane z obecnie używanego ekstrudera, bez inicjowania jego " -"zmiany.\n" -"(zarówno support_material_extruder i support_material_interface_extruder " -"muszÄ… być ustawione na 0).\n" -"\n" -"Zmienić te ustawienia aby włączyć wieżę czyszczÄ…cÄ…?" - -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 -msgid "Wipe Tower" -msgstr "Wieża CzyszczÄ…ca" - -#: src/slic3r/GUI/Tab.cpp:1209 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"Aby wieża czyszczÄ…ca dziaÅ‚aÅ‚a przy rozpuszczalnych podporach, warstwy " -"podporowe muszÄ… być zsynchronizowane z warstwami modelu.\n" -"\n" -"Zsynchronizować warstwy podporowe aby włączyć wieżę czyszczÄ…cÄ…?" - -#: src/slic3r/GUI/Tab.cpp:1227 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Druk podpór daje lepsze efekty, gdy nastÄ™pujÄ…ca funkcja jest włączona:\n" -"- Wykrywanie mostów przy obrysach\n" -"\n" -"Zmienić tÄ… opcjÄ™ dla druku podpór?" - -#: src/slic3r/GUI/Tab.cpp:1230 -msgid "Support Generator" -msgstr "Generator Podpór" - -# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n") -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" wzór wypeÅ‚nienia nie dziaÅ‚a z gÄ™stoÅ›ciÄ… 100%.\n" -"\n" -"Zmienić wzór wypeÅ‚nienia na linie równolegÅ‚e?" - -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " -msgstr "Temperatura " - -#: src/slic3r/GUI/Tab.cpp:1394 -msgid "Bed" -msgstr "Stół" - -#: src/slic3r/GUI/Tab.cpp:1399 -msgid "Cooling" -msgstr "ChÅ‚odzenie" - -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Enable" -msgstr "Włącz" - -#: src/slic3r/GUI/Tab.cpp:1411 -msgid "Fan settings" -msgstr "Ustawienia wentylatora" - -#: src/slic3r/GUI/Tab.cpp:1412 -msgid "Fan speed" -msgstr "PrÄ™dkość wentylatora" - -#: src/slic3r/GUI/Tab.cpp:1420 -msgid "Cooling thresholds" -msgstr "Progi chÅ‚odzenia" - -#: src/slic3r/GUI/Tab.cpp:1426 -msgid "Filament properties" -msgstr "WÅ‚aÅ›ciwoÅ›ci filamentu" - -#: src/slic3r/GUI/Tab.cpp:1430 -msgid "Print speed override" -msgstr "Nadpisanie prÄ™dkoÅ›ci druku" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "Parametry zmiany narzÄ™dzia dla drukarek MM z jednym ekstruderem" - -#: src/slic3r/GUI/Tab.cpp:1455 -msgid "Ramming settings" -msgstr "Ustawienia wyciskania" - -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 -msgid "Custom G-code" -msgstr "WÅ‚asny G-code" - -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 -msgid "Start G-code" -msgstr "G-code startowy" - -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 -msgid "End G-code" -msgstr "KoÅ„cowy G-code" - -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr " PrzeglÄ…daj " - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 -msgid "Test" -msgstr "Test" - -#: src/slic3r/GUI/Tab.cpp:1615 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 -msgid "Success!" -msgstr "Powodzenie!" - -#: src/slic3r/GUI/Tab.cpp:1636 -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"Plik HTTPS CA jest opcjonalny. Jest potrzebny jedynie w sytuacji, gdy " -"używasz HTTPS z certyfikatem samopodpisanym." - -#: src/slic3r/GUI/Tab.cpp:1648 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "Pliki certyfikatów (*.crt, *.pem)|*.crt;*.pem|Wszystkie pliki|*.*" - -#: src/slic3r/GUI/Tab.cpp:1649 -msgid "Open CA certificate file" -msgstr "Otwórz plik certyfikatu CA" - -#: src/slic3r/GUI/Tab.cpp:1676 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " -"Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate " -"Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 -msgid "Size and coordinates" -msgstr "Rozmiar i koordynaty" - -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " -msgstr " Ustaw " - -#: src/slic3r/GUI/Tab.cpp:1740 -msgid "Capabilities" -msgstr "MożliwoÅ›ci" - -#: src/slic3r/GUI/Tab.cpp:1745 -msgid "Number of extruders of the printer." -msgstr "Liczba ekstruderów drukarki." - -#: src/slic3r/GUI/Tab.cpp:1773 -msgid "USB/Serial connection" -msgstr "Połączenie USB/szeregowe" - -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 -msgid "Serial port" -msgstr "Port szeregowy" - -#: src/slic3r/GUI/Tab.cpp:1779 -msgid "Rescan serial ports" -msgstr "Przeskanuj porty szeregowe" - -#: src/slic3r/GUI/Tab.cpp:1801 -msgid "Connection to printer works correctly." -msgstr "Połączenie z drukarkÄ… pomyÅ›lne." - -#: src/slic3r/GUI/Tab.cpp:1804 -msgid "Connection failed." -msgstr "Błąd połączenia." - -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 -msgid "Before layer change G-code" -msgstr "G-code wykonywany przed zmianÄ… warstwy" - -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 -msgid "After layer change G-code" -msgstr "G-code wykonywany po zmianie warstwy" - -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 -msgid "Tool change G-code" -msgstr "G-code wykonywany przy zmianie narzÄ™dzia" - -#: src/slic3r/GUI/Tab.cpp:1877 -msgid "Between objects G-code (for sequential printing)" -msgstr "" -"G-code wykonywany przy przejÅ›ciach pomiÄ™dzy modelami (druk sekwencyjny)" - -#: src/slic3r/GUI/Tab.cpp:1938 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2040 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2045 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2052 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2057 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 -msgid "Single extruder MM setup" -msgstr "Ustawienia MM dla jednego ekstrudera" - -#: src/slic3r/GUI/Tab.cpp:2104 -msgid "Single extruder multimaterial parameters" -msgstr "Parametry multimaterial przy jednym ekstruderze" - -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "Ekstruder %d" - -#: src/slic3r/GUI/Tab.cpp:2125 -msgid "Layer height limits" -msgstr "Limit wysokoÅ›ci warstw" - -#: src/slic3r/GUI/Tab.cpp:2130 -msgid "Position (for multi-extruder printers)" -msgstr "Pozycja (dla drukarek z kilkoma ekstruderami)" - -#: src/slic3r/GUI/Tab.cpp:2133 -msgid "Retraction" -msgstr "Retrakcja" - -#: src/slic3r/GUI/Tab.cpp:2136 -msgid "Only lift Z" -msgstr "Tylko z-hop" - -#: src/slic3r/GUI/Tab.cpp:2149 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" -"Retrakcja gdy dany ekstruder nie jest w użyciu (funkcja zaawansowana dla " -"drukarek z kilkoma ekstruderami)" - -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "PodglÄ…d" - -#: src/slic3r/GUI/Tab.cpp:2284 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"Opcja czyszczenia dyszy nie jest dostÄ™pna z funkcjÄ… Retrakcji w Firmware " -"(Firmware Retraction).\n" -"\n" -"Wyłączyć jÄ… aby włączyć Firmware Retraction?" - -#: src/slic3r/GUI/Tab.cpp:2286 -msgid "Firmware Retraction" -msgstr "Retrakcja z firmware" - -#: src/slic3r/GUI/Tab.cpp:2565 -#, c-format -msgid "Default preset (%s)" -msgstr "DomyÅ›lne zestaw ustawieÅ„ (%s)" - -#: src/slic3r/GUI/Tab.cpp:2566 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2583 -msgid "has the following unsaved changes:" -msgstr "ma nastÄ™pujÄ…ce niezapisane zmiany:" - -#: src/slic3r/GUI/Tab.cpp:2586 -msgid "is not compatible with printer" -msgstr "nie jest kompatybilne z drukarkÄ…" - -#: src/slic3r/GUI/Tab.cpp:2587 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2589 -msgid "and it has the following unsaved changes:" -msgstr "i ma nastÄ™pujÄ…ce niezapisane zmiany:" - -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "Odrzucić zmiany i kontynuować?" - -#: src/slic3r/GUI/Tab.cpp:2593 -msgid "Unsaved Changes" -msgstr "Niezapisane zmiany" - -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "The supplied name is empty. It can't be saved." -msgstr "Podana nazwa jest pusta. Nie można zapisać." - -#: src/slic3r/GUI/Tab.cpp:2704 -msgid "Cannot overwrite a system profile." -msgstr "Nie można nadpisać profilu systemowego." - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Cannot overwrite an external profile." -msgstr "Nie można nadpisać profilu zewnÄ™trznego." - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "remove" -msgstr "usuÅ„" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "delete" -msgstr "usuÅ„" - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " -msgstr "Czy na pewno chcesz " - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr " wybrany zestaw ustawieÅ„?" - -#: src/slic3r/GUI/Tab.cpp:2736 -msgid "Remove" -msgstr "UsuÅ„" - -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" -msgstr " Zestaw ustawieÅ„" - -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "Wszystko" - -#: src/slic3r/GUI/Tab.cpp:2869 -msgid "" -"LOCKED LOCK;indicates that the settings are the same as the system values " -"for the current option group" -msgstr "" -"ZAMKNIĘTA KÅÓDKA;oznacza, że ustawienia sÄ… takie same jak wartoÅ›ci systemowe " -"w obecnej grupie ustawieÅ„" - -#: src/slic3r/GUI/Tab.cpp:2872 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to " -"the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group " -"to the system values." -msgstr "" -"OTWARTA KÅÓDKA; oznacza, że niektóre ustawienia zostaÅ‚y zmodyfikowane i nie " -"odpowiadajÄ… wartoÅ›ciom systemowym w obecnej grupie opcji.\n" -"Kliknij ikonÄ™ OTWARTEJ KÅÓDKI aby zresetować wszystkie ustawienia obecnej " -"grupy ustawieÅ„ do wartoÅ›ci systemowych." - -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" -"BIAÅA KROPKA;dla lewego przycisku: wskazuje na niesystemowy zestaw " -"ustawieÅ„,\n" -"dla prawego przycisku: wskazuje, że ustawienia nie zostaÅ‚y zmodyfikowane." - -#: src/slic3r/GUI/Tab.cpp:2882 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the " -"last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group " -"to the last saved preset." -msgstr "" -"STRZAÅKA W TYÅ;oznacza, że ustawienia zostaÅ‚y zmodyfikowane i nie " -"odpowiadajÄ… tym z ostatnio zapisanego zestawu ustawieÅ„ dla obecnej grupy " -"opcji.\n" -"Kliknij ikonÄ™ STRZAÅKI W TYÅ aby zresetować wszystkie ustawienia w obecnej " -"grupie opcji do tych z ostatnio zapisanego zestawu ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:2908 -msgid "" -"LOCKED LOCK icon indicates that the settings are the same as the system " -"values for the current option group" -msgstr "" -"ZAMKNIĘTA KÅÓDKA oznacza, że ustawienia sÄ… takie same jak wartoÅ›ci systemowe " -"w obecnej grupie ustawieÅ„" - -#: src/slic3r/GUI/Tab.cpp:2910 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not " -"equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" -"OTWARTA KÅÓDKA oznacza, że niektóre ustawienia zostaÅ‚y zmodyfikowane i nie " -"odpowiadajÄ… wartoÅ›ciom systemowym w obecnej grupie opcji.\n" -"Kliknij aby zresetować wszystkie ustawienia obecnej grupy ustawieÅ„ do " -"wartoÅ›ci systemowych." - -#: src/slic3r/GUI/Tab.cpp:2913 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "BIAÅA KROPKA oznacza niesystemowy zestaw ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:2916 -msgid "" -"WHITE BULLET icon indicates that the settings are the same as in the last " -"saved preset for the current option group." -msgstr "" -"BIAÅA KROPKA oznacza, że ustawienia sÄ… takie same jak w ostatnio zapisanym " -"zestawie ustawieÅ„ dla obecnej grupy opcji." - -#: src/slic3r/GUI/Tab.cpp:2918 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal " -"to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved " -"preset." -msgstr "" -"STRZAÅKA W TYÅ oznacza, że ustawienia zostaÅ‚y zmodyfikowane i nie " -"odpowiadajÄ… tym z ostatnio zapisanego zestawu ustawieÅ„ dla obecnej grupy " -"opcji.\n" -"Kliknij aby zresetować wszystkie ustawienia w obecnej grupie opcji do tych z " -"ostatnio zapisanego zestawu ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:2924 -msgid "" -"LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" -"ZAMKNIĘTA KÅÓDKA oznacza, że ustawienia sÄ… takie same jak wartoÅ›ci systemowe." - -#: src/slic3r/GUI/Tab.cpp:2925 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to " -"the system value.\n" -"Click to reset current value to the system value." -msgstr "" -"OTWARTA KÅÓDKA oznacza, że niektóre ustawienia zostaÅ‚y zmodyfikowane i nie " -"odpowiadajÄ… wartoÅ›ciom systemowym.\n" -"Kliknij ikonÄ™ aby zresetować do wartoÅ›ci systemowej." - -#: src/slic3r/GUI/Tab.cpp:2931 -msgid "" -"WHITE BULLET icon indicates that the value is the same as in the last saved " -"preset." -msgstr "" -"BIAÅA KROPKA oznacza, że wartość jest taka sama jak w ostatnio zapisanym " -"zestawie ustawieÅ„." - -#: src/slic3r/GUI/Tab.cpp:2932 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the " -"last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" -"STRZAÅKA W TYÅ oznacza, że ustawienia zostaÅ‚y zmodyfikowane i nie " -"odpowiadajÄ… tym z ostatnio zapisanego zestawu ustawieÅ„.\n" -"Kliknij aby zresetować wszystkie ustawienia do tych z ostatnio zapisanego " -"zestawu ustawieÅ„." - -# Used in this context: _("Save ") + title + _(" as:") -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" -msgstr " jako:" - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "The supplied name is not available." -msgstr "Podana nazwa jest niedostÄ™pna." - -#: src/slic3r/GUI/Tab.cpp:3092 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 -msgid "Layers" -msgstr "Warstwy" - -#: src/slic3r/GUI/Tab.cpp:3098 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3183 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3188 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 -msgid "Print Settings" -msgstr "Ustawienia Druku" - -#: src/slic3r/GUI/Tab.hpp:311 -msgid "Filament Settings" -msgstr "Ustawienia Filamentu" - -#: src/slic3r/GUI/Tab.hpp:344 -msgid "Printer Settings" -msgstr "Ustawienia Drukarki" - -#: src/slic3r/GUI/Tab.hpp:367 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:393 -msgid "Save preset" -msgstr "Zapisz zestaw ustawieÅ„" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "Update available" -msgstr "DostÄ™pna jest aktualizacja" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" -msgstr "DostÄ™pna jest nowa wersja Slic3r PE" - -#: src/slic3r/GUI/UpdateDialogs.cpp:35 -msgid "To download, follow the link below." -msgstr "Przejdź do linku aby pobrać." - -#: src/slic3r/GUI/UpdateDialogs.cpp:42 -msgid "Current version:" -msgstr "Obecna wersja:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "New version:" -msgstr "Nowa wersja:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:52 -msgid "Don't notify about new releases any more" -msgstr "Nie powiadamiaj o nowych wersjach" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 -msgid "Configuration update" -msgstr "Aktualizacja konfiguracji" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 -msgid "Configuration update is available" -msgstr "DostÄ™pna jest aktualizacja konfiguracji" - -#: src/slic3r/GUI/UpdateDialogs.cpp:73 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then " -"be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" -"Czy chcesz kontynuować instalacjÄ™?\n" -"\n" -"Weź pod uwagÄ™, że najpierw zostanie stworzony zrzut konfiguracji. Może być " -"przywrócony w każdej chwili, gdyby okazaÅ‚o siÄ™, że nowa wersja powoduje " -"problemy.\n" -"\n" -"Zaktualizowane paczki konfiguracyjne:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "Niekompatybilność ze Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "Konfiguracja Slic3r jest niekompatybilna" - -#: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed " -"configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using " -"a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-" -"run the initial configuration. Doing so will create a backup snapshot of the " -"existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" -"Ta wersja Slic3r PE nie jest kompatybilna z aktualnie zainstalowanym " -"zestawem konfiguracji.\n" -"Może to być rezultatem uruchomienia starszej wersji Slic3r PE po instalacji " -"nowszej.\n" -"\n" -"Masz 2 opcje wyboru: możesz zamknąć Slic3r i spróbować ponownie uruchomić " -"nowszÄ… wersjÄ™ lub uruchomić ponownie konfiguracjÄ™ poczÄ…tkowÄ…. Wybranie " -"drugiej opcji spowoduje stworzenie zrzutu istniejÄ…cej konfiguracji przed " -"instalacjÄ… konfiguracji kompatybilnej z tÄ… wersjÄ… Slic3ra.\n" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "Ta wersja Slic3r PE: %s" - -#: src/slic3r/GUI/UpdateDialogs.cpp:126 -msgid "Incompatible bundles:" -msgstr "Niekompatybilne zestawy ustawieÅ„:" - -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" -msgstr "Zamknij Slic3r" - -#: src/slic3r/GUI/UpdateDialogs.cpp:145 -msgid "Re-configure" -msgstr "Ponowna konfiguracja" - -#: src/slic3r/GUI/UpdateDialogs.cpp:166 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in " -"default settings for various printers. These System presets cannot be " -"modified, instead, users now may create their own presets inheriting " -"settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent " -"or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to " -"choose whether to enable automatic preset updates." -msgstr "" -"Slic3r PE używa teraz ulepszonej struktury konfiguracji.\n" -"\n" -"Wprowadzamy tak zwane \"Zestawy systemowe\", które zawierajÄ… preinstalowane " -"ustawienia domyÅ›lne dla różnych drukarek. Te Zestawy nie mogÄ… być " -"zmodyfikowane, ale za to użytkownik może na ich bazie utworzyć wÅ‚asne - " -"kopiujÄ…c ustawienia z jednego z Zestawów.\n" -"Zestaw dziedziczÄ…cy ustawienia może skopiować ustawienia z zestawu " -"nadrzÄ™dnego lub nadpisać je wÅ‚asnymi.\n" -"\n" -"Przejdź do %s aby stworzyć nowe zestawy i wybrać opcjÄ™ ich automatycznej " -"aktualizacji." - -#: src/slic3r/GUI/UpdateDialogs.cpp:182 -msgid "For more information please visit our wiki page:" -msgstr "Aby uzyskać wiÄ™cej informacji odwiedź naszÄ… wiki:" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 -msgid "Ramming customization" -msgstr "Dostosowywanie wyciskania" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." -msgstr "" -"Wyciskanie oznacza szybkÄ… ekstruzjÄ™ bezpoÅ›rednio przed zmianÄ… narzÄ™dzia w " -"drukarce typu MultiMaterial z jednym ekstruderem (narzÄ™dzie w tym przypadku " -"oznacza filament). Jego zadaniem jest odpowiednie uksztaÅ‚towanie koÅ„cówki " -"rozÅ‚adowywanego filamentu, aby jego ponowne zaÅ‚adowanie mogÅ‚o odbyć siÄ™ bez " -"przeszkód. Ta faza procesu zmiany filamentu jest bardzo ważna a różne " -"filamenty mogÄ… potrzebować różnej prÄ™dkoÅ›ci wyciskania aby uzyskać " -"odpowiedni ksztaÅ‚t koÅ„cówki. Z tego powodu można edytować jego parametry.\n" -"\n" -"To jest ustawienie dla zaawansowanych użytkowników. NieprawidÅ‚owe wartoÅ›ci " -"mogÄ… powodować blokady, Å›cieranie filamentu przez radeÅ‚ko itp." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 -msgid "Total ramming time" -msgstr "CaÅ‚kowity czas wyciskania" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 -msgid "Total rammed volume" -msgstr "CaÅ‚kowita objÄ™tość wyciskania" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Ramming line width" -msgstr "Szerokość linii wyciskania" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 -msgid "Ramming line spacing" -msgstr "Rozmieszczenie linii wyciskania" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 -msgid "Wipe tower - Purging volume adjustment" -msgstr "Wieża czyszczÄ…ca - dostosowanie objÄ™toÅ›ci czyszczenia" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 -msgid "" -"Here you can adjust required purging volume (mm³) for any given pair of " -"tools." -msgstr "" -"To ustawienie odpowiada za objÄ™tość czyszczonego filamentu w (mm³) dla danej " -"pary ekstruderów." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 -msgid "Extruder changed to" -msgstr "Ekstruder zmieniony na" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 -msgid "unloaded" -msgstr "rozÅ‚adowano" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 -msgid "loaded" -msgstr "zaÅ‚adowano" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "Tool #" -msgstr "NarzÄ™dzie #" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "" -"Total purging volume is calculated by summing two values below, depending on " -"which tools are loaded/unloaded." -msgstr "" -"CaÅ‚kowita objÄ™tość czyszczenia jest obliczana z sumy obydwóch wartoÅ›ci " -"poniżej, w zależnoÅ›ci która para narzÄ™dzi jest rozÅ‚adowana/Å‚adowana." - -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "ObjÄ™tość do wyczyszczenia (mm³), gdy filament jest" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 -msgid "From" -msgstr "Od" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 -msgid "" -"Switching to simple settings will discard changes done in the advanced " -"mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" -"Włączenie trybu prostego spowoduje odrzucenie zmian wprowadzonych w trybie " -"zaawansowanym! Czy chcesz kontynować?" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show simplified settings" -msgstr "Pokaż ustawienia uproszczone" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show advanced settings" -msgstr "Pokaż ustawienia zaawansowane" - -#: src/slic3r/Utils/OctoPrint.cpp:65 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:80 -msgid "Connection to OctoPrint works correctly." -msgstr "Połączenie z OctoPrint pomyÅ›lne." - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Could not connect to OctoPrint" -msgstr "Nie można połączyć siÄ™ z OctoPrint" - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "Uwaga: wymagany jest OctoPrint w wersji 1.1.0 lub wyższej." - -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:186 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:571 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "wymaga min. %s i max. %s" - -#: src/slic3r/Utils/PresetUpdater.cpp:576 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:578 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:334 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:335 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:357 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:372 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:375 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:379 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Print.cpp:1175 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1201 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1216 -msgid "" -"Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "" -"The Spiral Vase option can only be used when printing single material " -"objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1234 -msgid "" -"All extruders must have the same diameter for single extruder multimaterial " -"printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1239 -msgid "" -"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " -"and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1241 -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1253 -msgid "" -"The Wipe Tower is only supported for multiple objects if they have equal " -"layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1255 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1257 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are printed " -"with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1259 -msgid "" -"The Wipe Tower is only supported for multiple objects if they are sliced " -"equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1281 -msgid "" -"The Wipe tower is only supported if all objects have the same layer height " -"profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1290 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1307 -msgid "" -"One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "" -"Printing with multiple extruders of differing nozzle diameters. If support " -"is to be printed with the current extruder (support_material_extruder == 0 " -"or support_material_interface_extruder == 0), all nozzles have to be of the " -"same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1324 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers " -"need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1328 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only if they are " -"printed with the current extruder without triggering a tool change. (both " -"support_material_extruder and support_material_interface_extruder need to be " -"set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1350 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1354 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:41 -msgid "Bed shape" -msgstr "KsztaÅ‚t stoÅ‚u" - -#: src/libslic3r/PrintConfig.cpp:48 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"To ustawienie odpowiada za wysokość warstwy (czyli ciÄ™cia), a w konsekwencji " -"za ich liczbÄ™. Niższe warstwy zapewniajÄ… lepszÄ… dokÅ‚adność i jakość, ale " -"wydÅ‚użajÄ… ogólny czas wydruku." - -#: src/libslic3r/PrintConfig.cpp:56 -msgid "Max print height" -msgstr "Maksymalna wysokość wydruku" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "" -"Set this to the maximum height that can be reached by your extruder while " -"printing." -msgstr "" -"Ustaw tutaj maksymalnÄ… wysokość, jakÄ… może osiÄ…gnąć Twój ekstruder podczas " -"drukowania." - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" -msgstr "Unikaj ruchów nad obrysami" - -#: src/libslic3r/PrintConfig.cpp:74 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"Optymalizuj ruchy jaÅ‚owe aby zminimalizować przejeżdżanie nad obrysami. Ta " -"funkcja jest przydatna szczególne przy ekstruderach typu bowden, podatnych " -"na wyciekanie filamentu z dyszy. Włączenie tej funkcji wydÅ‚uża zarówno czas " -"druku jak i czas generowania G-code." - -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 -msgid "Other layers" -msgstr "Inne warstwy" - -#: src/libslic3r/PrintConfig.cpp:83 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" -"Temperatura stoÅ‚u dla warstw powyżej pierwszej. Ustaw 0 aby wyłączyć " -"kontrolowanie temperatury w pliku wyjÅ›ciowym." - -#: src/libslic3r/PrintConfig.cpp:86 -msgid "Bed temperature" -msgstr "Temperatura stoÅ‚u" - -#: src/libslic3r/PrintConfig.cpp:93 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"Ten kod jest wykonywany przy każdej zmianie warstwy, zaraz przed " -"podniesieniem ekstrudera na wysokość nowej warstwy. PamiÄ™taj, że możesz użyć " -"zmiennych typu placeholder dla wszystkich ustawieÅ„ Slic3r, jak np. " -"[layer_num] (numer warstwy) i [layer_z] (poÅ‚ożenie warstwy w osi Z)." - -#: src/libslic3r/PrintConfig.cpp:104 -msgid "Between objects G-code" -msgstr "G-code wykonywany przy przejÅ›ciach pomiÄ™dzy modelami" - -#: src/libslic3r/PrintConfig.cpp:105 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Ten kod jest wykonywany pomiÄ™dzy drukiem poszczególnych modeli w trybie " -"druku sekwencyjnego. DomyÅ›lnie przy komendzie non-wait temperatury dyszy i " -"stoÅ‚u sÄ… resetowane; jednakże jeÅ›li przy tej opcji zostanÄ… użyte komendy " -"M104, M109, M140 lub M190 to Slic3r nie doda wÅ‚asnych komend do kontroli " -"temperatury. PamiÄ™taj, że możesz używać zmiennych typu placeholder, wiÄ™c np. " -"komendÄ™ \"M109 S[first_layer_temperature]\" (temperatura pierwszej warstwy) " -"możesz umieÅ›cić gdzie chcesz." - -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Dolne" - -#: src/libslic3r/PrintConfig.cpp:116 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "Liczba zwartych warstw dolnych." - -#: src/libslic3r/PrintConfig.cpp:118 -msgid "Bottom solid layers" -msgstr "Zwarte warstwy dolne" - -#: src/libslic3r/PrintConfig.cpp:123 -msgid "Bridge" -msgstr "Most" - -#: src/libslic3r/PrintConfig.cpp:124 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "" -"To jest przyspieszenie stosowane przy druku mostów. Ustaw zero aby wyłączyć " -"osobne ustawienia przyspieszenia dla mostów." - -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 -msgid "mm/s²" -msgstr "mm/s²" - -#: src/libslic3r/PrintConfig.cpp:133 -msgid "Bridging angle" -msgstr "KÄ…t linii mostów" - -#: src/libslic3r/PrintConfig.cpp:135 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" -"Nadpisanie kÄ…ta linii mostów. JeÅ›li zostanie 0 to kÄ…t zostanie obliczony " -"automatycznie. W innym przypadku ustawiony kÄ…t bÄ™dzie dotyczyÅ‚ wszystkich " -"mostów. Ustaw 180° dla kÄ…ta zerowego." - -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:145 -msgid "Bridges fan speed" -msgstr "PrÄ™dkość wentylatora przy mostach" - -#: src/libslic3r/PrintConfig.cpp:146 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "" -"Ta prÄ™dkość wentylatora zostanie zastosowana przy druku mostów i zwisów." - -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 -msgid "%" -msgstr "%" - -#: src/libslic3r/PrintConfig.cpp:155 -msgid "Bridge flow ratio" -msgstr "Współczynnik przepÅ‚ywu przy mostach" - -#: src/libslic3r/PrintConfig.cpp:157 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"Ten współczynnik okreÅ›la ilość plastiku wytÅ‚aczanÄ… przy drukowaniu mostów. " -"Możesz delikatnie zmniejszyć tÄ… wartość aby zapobiec opadaniu drukowanej " -"linii, jednakże standardowe ustawienia sÄ… zazwyczaj dobrze dobrane i " -"najpierw poeksperymentuj z chÅ‚odzeniem wydruku." - -#: src/libslic3r/PrintConfig.cpp:168 -msgid "Bridges" -msgstr "Mosty" - -#: src/libslic3r/PrintConfig.cpp:170 -msgid "Speed for printing bridges." -msgstr "PrÄ™dkość drukowania mostów." - -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 -msgid "mm/s" -msgstr "mm/s" - -#: src/libslic3r/PrintConfig.cpp:178 -msgid "Brim width" -msgstr "Szerokość brim" - -#: src/libslic3r/PrintConfig.cpp:179 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "" -"Szerokość brim (obramowania), drukowanego wokół każdego z modeli na " -"pierwszej warstwie." - -#: src/libslic3r/PrintConfig.cpp:187 -msgid "Clip multi-part objects" -msgstr "Przycinaj modele zÅ‚ożone z kilku części" - -#: src/libslic3r/PrintConfig.cpp:188 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" -"To ustawienie sprawi, że podczas druku modeli z wielu materiałów, Slic3r " -"przytnie nachodzÄ…ce na siebie części (druga część zostanie przyciÄ™ta przez " -"pierwszÄ…, trzecia przez pierwszÄ… i drugÄ… itd.)" - -#: src/libslic3r/PrintConfig.cpp:196 -msgid "Colorprint height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Compatible printers condition" -msgstr "Warunki kompatybilnoÅ›ci z drukarkÄ…" - -#: src/libslic3r/PrintConfig.cpp:208 -msgid "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." -msgstr "" -"Wyrażenie logiczne (Boole'owskie) używajÄ…ce wartoÅ›ci konfiguracji aktywnego " -"profilu drukarki. JeÅ›li to wyrażenie jest prawdziwe to znaczy, że aktywny " -"profil jest kompatybilny z drukarkÄ…." - -#: src/libslic3r/PrintConfig.cpp:220 -msgid "Compatible print profiles condition" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:221 -msgid "" -"A boolean expression using the configuration values of an active print " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active print profile." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:235 -msgid "Complete individual objects" -msgstr "Druk sekwencyjny (model po modelu)" - -#: src/libslic3r/PrintConfig.cpp:236 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"Włączenie tej opcji sprawi, że przy druku kilku modeli drukarka wydrukuje " -"jeden model w caÅ‚oÅ›ci zanim przejdzie do nastÄ™pnego (zaczynajÄ…c od " -"najniższej warstwy). Przydaje siÄ™ aby uniknąć ryzyka niepowodzenia wydruku " -"kilku części. Slic3r powinien ostrzec przed możliwoÅ›ciÄ… kolizji z " -"ekstruderem, ale zachowaj ostrożność." - -#: src/libslic3r/PrintConfig.cpp:245 -msgid "Enable auto cooling" -msgstr "Włącz automatyczne chÅ‚odzenie" - -#: src/libslic3r/PrintConfig.cpp:246 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "" -"Ta flaga umożliwia automatyczne sterowanie chÅ‚odzeniem przez zmianÄ™ " -"prÄ™dkoÅ›ci druku i wentylatora wzglÄ™dem czasu druku jednej warstwy." - -#: src/libslic3r/PrintConfig.cpp:252 -msgid "Cooling tube position" -msgstr "Pozycja rurki chÅ‚odzÄ…cej" - -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "OdlegÅ‚ość punktu centralnego rurki chÅ‚odzÄ…cej od koÅ„cówki ekstrudera " - -#: src/libslic3r/PrintConfig.cpp:261 -msgid "Cooling tube length" -msgstr "DÅ‚ugość rurki chÅ‚odzÄ…cej" - -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "DÅ‚ugość rurki chÅ‚odzÄ…cej ograniczajÄ…ca ruchy chÅ‚odzÄ…ce wewnÄ…trz jej " - -#: src/libslic3r/PrintConfig.cpp:271 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"Do tej wartoÅ›ci przyspieszenia drukarka wróci gdy ustawione zostanÄ… " -"przyspieszenia dla okreÅ›lonych ruchów (obrysy/wypeÅ‚nienie). Ustaw zero aby " -"wyłączyć resetowanie przyspieszeÅ„." - -#: src/libslic3r/PrintConfig.cpp:281 -msgid "Default filament profile" -msgstr "DomyÅ›lny profil filamentu" - -#: src/libslic3r/PrintConfig.cpp:282 -msgid "" -"Default filament profile associated with the current printer profile. On " -"selection of the current printer profile, this filament profile will be " -"activated." -msgstr "" -"DomyÅ›lny profil filamentu powiÄ…zany z obecnym profilem drukarki. Przy " -"wybraniu obecnego profilu drukarki automatycznie zostanie wybrany ten profil " -"filamentu." - -#: src/libslic3r/PrintConfig.cpp:287 -msgid "Default print profile" -msgstr "DomyÅ›lny profil druku" - -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 -msgid "" -"Default print profile associated with the current printer profile. On " -"selection of the current printer profile, this print profile will be " -"activated." -msgstr "" -"DomyÅ›lny profil druku powiÄ…zany z obecnym profilem drukarki. Przy wybraniu " -"obecnego profilu drukarki automatycznie zostanie wybrany ten profil " -"filamentu." - -#: src/libslic3r/PrintConfig.cpp:293 -msgid "Disable fan for the first" -msgstr "Wyłącz wentylator przy pierwszych" - -#: src/libslic3r/PrintConfig.cpp:294 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" -"WpisujÄ…c tutaj wartość dodatniÄ… możesz wyłączyć wentylator podczas druku " -"pierwszych warstw, aby nie pogarszać przyczepnoÅ›ci do stoÅ‚u." - -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "layers" -msgstr "warstwy" - -#: src/libslic3r/PrintConfig.cpp:304 -msgid "Don't support bridges" -msgstr "Nie używaj podpór pod mostami" - -#: src/libslic3r/PrintConfig.cpp:306 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "" -"Funkcja eksperymentalna majÄ…ca zapobiegać tworzeniu podpór pod mostami." - -#: src/libslic3r/PrintConfig.cpp:313 -msgid "Distance between copies" -msgstr "OdstÄ™p pomiÄ™dzy kopiami" - -#: src/libslic3r/PrintConfig.cpp:314 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "OdstÄ™p używany przy automatycznym rozmieszczaniu modeli na stole." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Elephant foot compensation" -msgstr "Kompensacja \"stopy sÅ‚onia\"" - -#: src/libslic3r/PrintConfig.cpp:324 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" -"Pierwsza warstwa zostanie zmniejszona o tÄ… wartość w osiach X i Y aby " -"zniwelować efekt stopy sÅ‚onia (Elephant Foot - gdy pierwsza warstwa " -"\"rozjeżdża\" siÄ™ na boki)." - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "" -"Ten kod jest wykonywany jako ostatni w pliku wyjÅ›ciowym. PamiÄ™taj, że możesz " -"użyć zmiennych typu placeholder dla wszystkich ustawieÅ„ Slic3r." - -#: src/libslic3r/PrintConfig.cpp:345 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"Ten kod jest wykonywany na samym koÅ„cu, przed samym zakoÅ„czeniem wykonywania " -"pliku G-code. PamiÄ™taj, że możesz użyć zmiennych typu placeholder dla " -"wszystkich ustawieÅ„ Slic3r. JeÅ›li masz kilka ekstruderów, ten G-code jest " -"wykonywany zgodnie z ich kolejnoÅ›ciÄ…." - -#: src/libslic3r/PrintConfig.cpp:356 -msgid "Ensure vertical shell thickness" -msgstr "Zagwarantuj odpowiedniÄ… grubość Å›cianki" - -#: src/libslic3r/PrintConfig.cpp:358 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" -"Dodaj zwarte wypeÅ‚nienie przy pochyÅ‚ych powierzchniach aby zagwarantować " -"odpowiedniÄ… grubość warstwy (suma górnych i dolnych zwartych warstw)." - -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Wzór wypeÅ‚nienia góry/doÅ‚u" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "" -"Wzór wypeÅ‚nienia górnego/dolnego. Ma wpÅ‚yw jedynie na zewnÄ™trzne widoczne " -"warstwy, nie ma wpÅ‚ywu na przylegajÄ…ce do nich powÅ‚oki zwartego wypeÅ‚nienia." - -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 -msgid "External perimeters" -msgstr "Obrysy zewnÄ™trzne" - -#: src/libslic3r/PrintConfig.cpp:388 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji obrysów zewnÄ™trznych. JeÅ›li ustawisz zero, szerokość bÄ™dzie miaÅ‚a " -"wartość domyÅ›lnÄ…, czyli 1.125x Å›rednicy dyszy. JeÅ›li ustawisz wartość " -"procentowÄ… (np. 200%) to zostanie obliczona z wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "mm or % (leave 0 for default)" -msgstr "mm lub % (zero dla domyÅ›lnych)" - -#: src/libslic3r/PrintConfig.cpp:399 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"To ustawienie steruje prÄ™dkoÅ›ciÄ… zewnÄ™trznych (widocznych) obrysów. JeÅ›li " -"ustawisz wartość procentowÄ… (np. 80%) to zostanie obliczona z prÄ™dkoÅ›ci " -"obrysów ustawionej powyżej. Ustaw zero aby pozwolić na sterowanie " -"automatyczne." - -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 -msgid "mm/s or %" -msgstr "mm/s lub %" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "External perimeters first" -msgstr "Najpierw obrysy zewnÄ™trzne" - -#: src/libslic3r/PrintConfig.cpp:411 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "" -"Drukuj obrysy od zewnÄ…trz do wewnÄ…trz zamiast domyÅ›lnego ustawienia wÄ™wnÄ…trz-" -"zewnÄ…trz." - -#: src/libslic3r/PrintConfig.cpp:418 -msgid "Extra perimeters if needed" -msgstr "Dodatkowe obrysy jeÅ›li potrzebne" - -#: src/libslic3r/PrintConfig.cpp:420 -#, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" -"Dodaj wiÄ™cej obrysów, aby uniknąć przerw przy pochyÅ‚ych Å›cianach. Slic3r " -"bÄ™dzie dodawaÅ‚ tyle obrysów, ile jest potrzebne aby podeprzeć co najmniej " -"70% gruboÅ›ci Å›ciany kolejnej warstwy." - -#: src/libslic3r/PrintConfig.cpp:431 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" -"Używany ekstruder (jeÅ›li nie sÄ… okreÅ›lone dokÅ‚adniejsze ustawienia " -"ekstuderów). To ustawienie nadpisuje ustawienia ekstruderów dla obrysów i " -"wypeÅ‚nienia, ale nie tych dla podpór." - -#: src/libslic3r/PrintConfig.cpp:444 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"OkreÅ›la pionowÄ… odlegÅ‚ość koÅ„cówki dyszy od (zazwyczaj) prÄ™tów osi X. " -"Inaczej mówiÄ…c (matematycznie), jest to wysokość cylindra opisanego na " -"zespole ekstrudera i okreÅ›la maksymalnÄ… głębokość, na którÄ… może opuÅ›cić siÄ™ " -"ekstruder aby nie uderzyć w obiekt znajdujÄ…cy siÄ™ bezpoÅ›rednio pod prÄ™tami " -"osi X." - -#: src/libslic3r/PrintConfig.cpp:455 -msgid "Radius" -msgstr "PromieÅ„" - -#: src/libslic3r/PrintConfig.cpp:456 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"OkreÅ›la promieÅ„ okrÄ™gu opisanego na caÅ‚ym zespole ekstrudera (matematycznie " -"- wyobraź sobie, że chcesz narysować okrÄ…g opisany na zespole ekstrudera " -"patrzÄ…c na niego z góry). JeÅ›li sam ekstruder nie jest dokÅ‚adnie na Å›rodku, " -"użyj najwiÄ™kszego promienia. Ta wartość jest używana do wykrywania możliwych " -"kolizji z wydrukowanymi modelami i jako graficzna reprezentacja na " -"wirtualnym stole." - -#: src/libslic3r/PrintConfig.cpp:467 -msgid "Extruder Color" -msgstr "Kolor ekstrudera" - -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "" -"Ta funkcja jest używana jedynie w interfejsie Slic3ra jako pomoc wizualna." - -#: src/libslic3r/PrintConfig.cpp:475 -msgid "Extruder offset" -msgstr "Margines ekstrudera" - -#: src/libslic3r/PrintConfig.cpp:476 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"JeÅ›li oprogramowanie ukÅ‚adowe (firmware) Twojej drukarki nie obsÅ‚uguje " -"rozmieszczenia ekstruderów to trzeba to okreÅ›lić w G-code. Ta opcja pozwala " -"ustawić rozmieszczenie każdego ekstrudera w relacji do pierwszego. Oczekuje " -"koordynat dodatnich (bÄ™dÄ… odejmowane od koordynat XY)." - -#: src/libslic3r/PrintConfig.cpp:486 -msgid "Extrusion axis" -msgstr "OÅ› ekstruzji" - -#: src/libslic3r/PrintConfig.cpp:487 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"Ta opcja okreÅ›la literÄ™, którÄ… Twoja drukarka opisuje oÅ› ekstrudera " -"(zazwyczaj jest to E ale niektóre drukarki używajÄ… A)." - -#: src/libslic3r/PrintConfig.cpp:493 -msgid "Extrusion multiplier" -msgstr "Współczynnik ekstruzji" - -#: src/libslic3r/PrintConfig.cpp:494 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"Ten współczynnik okreÅ›la proporcjonalnÄ… ilość przepÅ‚ywu plastiku. Możesz " -"zmienić tÄ… wartość aby uzyskać gÅ‚adsze powierzchnie i poprawnÄ… szerokość " -"Å›cian drukowanych z 1 linii. Ten współczynnik waha siÄ™ zazwyczaj od 0.9 do " -"1.1. JeÅ›li musisz wykroczyć poza ten zakres to najpierw zmierz Å›rednicÄ™ " -"filamentu i kroki ekstrudera (E steps)." - -#: src/libslic3r/PrintConfig.cpp:503 -msgid "Default extrusion width" -msgstr "DomyÅ›lna szerokość linii" - -#: src/libslic3r/PrintConfig.cpp:505 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstrudowanej linii. JeÅ›li ustawisz zero, Slic3r obliczy szerokość ekstruzji " -"na podstawie Å›rednicy dyszy (zobacz wskazówki dla szerokoÅ›ci ekstruzji " -"obrysów, wypeÅ‚nienia itp). JeÅ›li ustawisz wartość procentowÄ… (np. 230%) to " -"zostanie obliczona z wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:509 -msgid "mm or % (leave 0 for auto)" -msgstr "mm lub % (zero dla wartoÅ›ci automatycznych)" - -#: src/libslic3r/PrintConfig.cpp:515 -msgid "Keep fan always on" -msgstr "Wentylator zawsze włączony" - -#: src/libslic3r/PrintConfig.cpp:516 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"Ta opcja spowoduje, że wentylator nie wyłączy siÄ™ podczas druku, tzn. zawsze " -"bÄ™dzie pracowaÅ‚ z przynajmniej minimalnÄ… prÄ™dkoÅ›ciÄ…. Przydatne dla PLA, może " -"szkodzić przy ABS." - -#: src/libslic3r/PrintConfig.cpp:522 -msgid "Enable fan if layer print time is below" -msgstr "Włącz chÅ‚odzenie jeÅ›li czas druku warstwy wynosi poniżej" - -#: src/libslic3r/PrintConfig.cpp:523 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"JeÅ›li szacowany czas druku warstwy bÄ™dzie niższy niż ta wartość to " -"wentylator bÄ™dzie włączony a jego prÄ™dkość bÄ™dzie interpolowana na podstawie " -"górnego i dolnego limitu prÄ™dkoÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 -msgid "approximate seconds" -msgstr "szacowane sekundy" - -#: src/libslic3r/PrintConfig.cpp:534 -msgid "Color" -msgstr "Kolor" - -#: src/libslic3r/PrintConfig.cpp:541 -msgid "Filament notes" -msgstr "Notatki do filamentu" - -#: src/libslic3r/PrintConfig.cpp:542 -msgid "You can put your notes regarding the filament here." -msgstr "Tutaj możesz umieÅ›cić notatki dotyczÄ…ce filamentu." - -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 -msgid "Max volumetric speed" -msgstr "Maksymalny przepÅ‚yw" - -#: src/libslic3r/PrintConfig.cpp:552 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"Maksymalna prÄ™dkość objÄ™toÅ›ciowa dla tego filamentu. Ogranicza maksymalnÄ… " -"prÄ™dkość objÄ™toÅ›ciowÄ… do minimum objÄ™toÅ›ciowej prÄ™dkoÅ›ci druku i filamentu. " -"Ustaw zero aby usunąć ograniczenie." - -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "mm³/s" - -#: src/libslic3r/PrintConfig.cpp:562 -msgid "Loading speed" -msgstr "PrÄ™dkość Å‚adowania" - -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "PrÄ™dkość Å‚adowania filamentu przy druku wieży czyszczÄ…cej. " - -#: src/libslic3r/PrintConfig.cpp:571 -msgid "Loading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:580 -msgid "Unloading speed" -msgstr "PrÄ™dkość rozÅ‚adowania" - -#: src/libslic3r/PrintConfig.cpp:581 -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming). " -msgstr "" -"PrÄ™dkość rozÅ‚adowywania filamentu dla wieży czyszczÄ…cej (nie wpÅ‚ywa na " -"poczÄ…tkowÄ… fazÄ™ rozÅ‚adowywania zaraz po wyciskaniu). " - -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:591 -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:599 -msgid "Delay after unloading" -msgstr "Opóźnienie po rozÅ‚adowaniu" - -#: src/libslic3r/PrintConfig.cpp:600 -msgid "" -"Time to wait after the filament is unloaded. May help to get reliable " -"toolchanges with flexible materials that may need more time to shrink to " -"original dimensions. " -msgstr "" -"Czas bezczynnoÅ›ci po rozÅ‚adowaniu filamentu. Może pomóc w bezproblemowej " -"zmianie narzÄ™dzia podczas druku z materiaÅ‚ami elastycznymi, które mogÄ… " -"potrzebować wiÄ™cej czasu na skurcz termiczny wracajÄ…c do nominalnego " -"rozmiaru. " - -#: src/libslic3r/PrintConfig.cpp:610 -msgid "Number of cooling moves" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:611 -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:620 -msgid "Speed of the first cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:629 -msgid "Minimal purge on wipe tower" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:630 -msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:635 -msgid "mm³" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:641 -msgid "Speed of the last cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:650 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:651 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:659 -msgid "Ramming parameters" -msgstr "Parametry wyciskania" - -#: src/libslic3r/PrintConfig.cpp:660 -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters " -msgstr "" -"Ten ciÄ…g jest edytowany przez RammingDialog i zawiera parametry wÅ‚aÅ›ciwe dla " -"wyciskania " - -#: src/libslic3r/PrintConfig.cpp:667 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "" -"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"Wprowadź Å›rednicÄ™ filamentu. Wymagana jest precyzja, wiÄ™c użyj suwmiarki i " -"zmierz filament w kilku miejscach, potem oblicz Å›redniÄ…." - -#: src/libslic3r/PrintConfig.cpp:685 -msgid "Density" -msgstr "GÄ™stość" - -#: src/libslic3r/PrintConfig.cpp:686 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"Wprowadź gÄ™stość filamentu. SÅ‚uży tylko statystykom. DobrÄ… metodÄ… jest " -"zważenie filamentu o zmierzonej dÅ‚ugoÅ›ci i przeliczenie stosunku wagi do " -"objÄ™toÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:689 -msgid "g/cm³" -msgstr "g/cm³" - -#: src/libslic3r/PrintConfig.cpp:695 -msgid "Filament type" -msgstr "Typ filamentu" - -#: src/libslic3r/PrintConfig.cpp:696 -msgid "The filament material type for use in custom G-codes." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:712 -msgid "Soluble material" -msgstr "MateriaÅ‚ rozpuszczalny" - -#: src/libslic3r/PrintConfig.cpp:713 -msgid "Soluble material is most likely used for a soluble support." -msgstr "" -"MateriaÅ‚ rozpuszczalny jest używany zazwyczaj do rozpuszczalnych podpór." - -#: src/libslic3r/PrintConfig.cpp:719 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "Wprowadź koszt filamentu za kilogram. SÅ‚uży tylko statystykom." - -#: src/libslic3r/PrintConfig.cpp:720 -msgid "money/kg" -msgstr "piniendzy/kg" - -#: src/libslic3r/PrintConfig.cpp:729 -msgid "Fill angle" -msgstr "KÄ…t wypeÅ‚nienia" - -#: src/libslic3r/PrintConfig.cpp:731 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"DomyÅ›lny kÄ…t linii wypeÅ‚nienia. Mosty bÄ™dÄ… wypeÅ‚niane z użyciem najlepszego " -"kierunku obliczonego przez Slic3r, wiÄ™c to ustawienie ich nie dotyczy." - -#: src/libslic3r/PrintConfig.cpp:744 -msgid "Fill density" -msgstr "GÄ™stość wypeÅ‚nienia" - -#: src/libslic3r/PrintConfig.cpp:746 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "GÄ™stość wypeÅ‚nienia wewnÄ™trznego, wyrażana w zakresie 0% - 100%." - -#: src/libslic3r/PrintConfig.cpp:782 -msgid "Fill pattern" -msgstr "Wzór wypeÅ‚nienia" - -#: src/libslic3r/PrintConfig.cpp:784 -msgid "Fill pattern for general low-density infill." -msgstr "Wzór dla ogólnego wypeÅ‚nienia o niskiej gÄ™stoÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:801 -msgid "Grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:802 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Cubic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:805 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:808 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:809 -msgid "Gyroid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 -msgid "First layer" -msgstr "Pierwsza warstwa" - -#: src/libslic3r/PrintConfig.cpp:817 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "" -"To jest przyspieszenie stosowane przy druku pierwszej warstwy. Ustaw zero " -"aby wyłączyć osobne ustawienia przyspieszenia dla pierwszej warstwy." - -#: src/libslic3r/PrintConfig.cpp:827 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "" -"Temperatura podgrzewanego stoÅ‚u dla pierwszej warstwy. Ustaw zero aby " -"wyłączyć komendy kontrolujÄ…ce temperaturÄ™ stoÅ‚u w pliku wyjÅ›ciowym." - -#: src/libslic3r/PrintConfig.cpp:837 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji pierwszej warstwy. DziÄ™ki tej funkcji możesz wymusić grubsze linie " -"dla lepszej przyczepnoÅ›ci. JeÅ›li ustawisz wartość procentowÄ… (np. 120%) to " -"bÄ™dzie oliczona z wysokoÅ›ci pierwszej warstwy. Ustaw zero dla wartoÅ›ci " -"domyÅ›lnej." - -#: src/libslic3r/PrintConfig.cpp:848 -msgid "First layer height" -msgstr "Wysokość pierwszej warstwy" - -#: src/libslic3r/PrintConfig.cpp:850 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"Podczas druku z bardzo małą wysokoÅ›ciÄ… warstwy warto mimo wszystko " -"wydrukować najniższÄ… warstwÄ™ o wiÄ™kszej wysokoÅ›ci aby zwiÄ™kszyć przyczepność " -"i tolerancjÄ™ na niedoskonaÅ‚oÅ›ci powierzchni druki. Może być wyrażona jako " -"wartość bezwzglÄ™dna lub procentowa (np. 150%) nominalnej wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 -msgid "mm or %" -msgstr "mm lub %" - -#: src/libslic3r/PrintConfig.cpp:860 -msgid "First layer speed" -msgstr "PrÄ™dkość pierwszej warstwy" - -#: src/libslic3r/PrintConfig.cpp:861 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"JeÅ›li ustawisz wartość bezwzglÄ™dnÄ… wyrażonÄ… w mm/s, taka prÄ™dkość bÄ™dzie " -"zastosowana dla wszystkich ruchów drukujÄ…cych dla pierwszej warstwy, nie " -"zależnie od ich rodzajów. JeÅ›li ustawisz wartość procentowÄ… (np. 40%), " -"bÄ™dzie ona skalowana wg domyÅ›lnej prÄ™dkoÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:872 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"Temperatura ekstrudera dla pierwszej warstwy. JeÅ›li chcesz rÄ™cznie " -"kontrolować temperaturÄ™ podczas druku to ustaw zero aby wyłączyć komendy " -"kontrolujÄ…ce temperaturÄ™ w pliku wyjÅ›ciowym." - -#: src/libslic3r/PrintConfig.cpp:882 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" -"PrÄ™dkość wypeÅ‚niania szczelin krótkimi ruchami typu zygzak. Ustaw tÄ… wartość " -"na tyle nisko aby uniknąć wibracji i rezonansu. Ustaw 0 aby wyłączyć " -"wypeÅ‚nianie szczelin." - -#: src/libslic3r/PrintConfig.cpp:890 -msgid "Verbose G-code" -msgstr "G-code rozszerzony" - -#: src/libslic3r/PrintConfig.cpp:891 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"Włącz tÄ… opcjÄ™ aby dodawać komentarz opsiujÄ…cy do każdej liniki pliku G-" -"code. Przy druku z karty SD dodatkowy rozmiar pliku może sprawiać, że " -"firmware bÄ™dzie reagować wolniej." - -#: src/libslic3r/PrintConfig.cpp:899 -msgid "G-code flavor" -msgstr "Rodzaj G-code" - -#: src/libslic3r/PrintConfig.cpp:900 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"Niektóre komendy G/M-code, wliczajÄ…c w to dot. kontroli temperatury i inne, " -"nie sÄ… uniwersalne. Ustaw tÄ… opcjÄ™ zgodnie z oprogramowaniem ukÅ‚adowym " -"Twojej drukarki aby dostać kompatybilny plik wyjÅ›ciowy. Parametr \"Bez " -"ekstruzji\" (\"No extrusion\") zapobiega generowaniu przez Slic3r " -"jakichkolwiek ekstruzji." - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:929 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:930 -msgid "" -"It may be beneficial to increase the extruder motor current during the " -"filament exchange sequence to allow for rapid ramming feed rates and to " -"overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:939 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "" -"To jest przyspieszenie stosowane przy druku wypeÅ‚nienia. Ustaw zero aby " -"wyłączyć osobne ustawienia przyspieszenia dla wypeÅ‚nienia." - -#: src/libslic3r/PrintConfig.cpp:948 -msgid "Combine infill every" -msgstr "Scalaj wypeÅ‚nienie co" - -#: src/libslic3r/PrintConfig.cpp:950 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"Ta funkcja pozwala ustawić oddzielne wysokoÅ›ci dla wypeÅ‚nienia i obrysów " -"modelu i przyspieszyć wydruk ustawiajÄ…c np. wyższÄ… warstwÄ™ wypeÅ‚nienia " -"zachowujÄ…c nominalnÄ… wysokość obrysów, co pozwoli zachować wysokÄ… jakość i " -"dokÅ‚adność wydruku." - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "Combine infill every n layers" -msgstr "Scalaj wypeÅ‚nienie co n warstw" - -#: src/libslic3r/PrintConfig.cpp:960 -msgid "Infill extruder" -msgstr "Ekstruder dla wypeÅ‚nienia" - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "The extruder to use when printing infill." -msgstr "Ekstruder używany do druku wypeÅ‚nienia." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji wypeÅ‚nienia. JeÅ›li ustawisz zero to szerokość bÄ™dzie miaÅ‚a wartość " -"domyÅ›lnÄ…, czyli 1.125x Å›rednicy dyszy. Możesz ustawić wiÄ™kszÄ… szerokość aby " -"przyspieszyć druk wypeÅ‚nienia i zwiÄ™kszyć wytrzymaÅ‚ość wydruków. JeÅ›li " -"ustawisz wartość procentowÄ… (np. 90%) to zostanie obliczona z wysokoÅ›ci " -"warstwy." - -#: src/libslic3r/PrintConfig.cpp:981 -msgid "Infill before perimeters" -msgstr "WypeÅ‚nienie przed obrysami" - -#: src/libslic3r/PrintConfig.cpp:982 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "" -"Ta opcja zamieni kolejność druku obrysów i wypeÅ‚nienia, aby te drugie byÅ‚y " -"drukowane jako pierwsze." - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "Only infill where needed" -msgstr "Tylko potrzebne wypeÅ‚nienie" - -#: src/libslic3r/PrintConfig.cpp:990 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"Ta opcja wygeneruje wypeÅ‚nienie jedynie w miejscach, gdzie jest potrzebne do " -"podparcia górnych warstw (zadziaÅ‚a na zasadzie wewnÄ™trznych podpór). " -"Włączenie jej spowolni generowanie G-code ze wzglÄ™du na konieczność " -"kilkukrotnej weryfikacji." - -#: src/libslic3r/PrintConfig.cpp:998 -msgid "Infill/perimeters overlap" -msgstr "NakÅ‚adanie wypeÅ‚nienia na obrysy" - -#: src/libslic3r/PrintConfig.cpp:1000 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"To ustawienie odpowiada za dodatkowe nakÅ‚adanie na siebie linii obrysów i " -"wypeÅ‚nienia dla lepszego spojenia. Teoretycznie nie powinno być potrzebne " -"ale luz może powodować szczeliny. JeÅ›li ustawisz wartość procentowÄ… (np. " -"15%) to zostanie obliczona z szerokoÅ›ci ekstruzji obrysów." - -#: src/libslic3r/PrintConfig.cpp:1012 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "" -"PrÄ™dkość druku wewnÄ™trznego wypeÅ‚nienia. Ustaw 0 dla prÄ™dkoÅ›ci automatycznej." - -#: src/libslic3r/PrintConfig.cpp:1020 -msgid "Inherits profile" -msgstr "Dziedziczy profil" - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Name of the profile, from which this profile inherits." -msgstr "Nazwa profilu, z którego dziedziczy ten profil." - -#: src/libslic3r/PrintConfig.cpp:1032 -msgid "Interface shells" -msgstr "Obrysy łączÄ…ce" - -#: src/libslic3r/PrintConfig.cpp:1033 -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." -msgstr "" -"WymuÅ› generowanie zwartych powÅ‚ok pomiÄ™dzy przylegajÄ…cymi do siebie " -"materiaÅ‚ami. Przydatne przy druku materiaÅ‚ami przejrzystymi lub przy " -"rÄ™cznych podporach rozpuszczalnych." - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"Ten kod jest wykonywany przy każdej zmianie warstwy - zaraz po podniesieniu " -"gÅ‚owicy na wysokość kolejnej warstwy ale zanim ekstruder przejdzie do " -"pierwszego punktu nowej warstwy. PamiÄ™taj, że możesz użyć zmiennych typu " -"placeholder dla wszystkich ustawieÅ„ Slic3r, jak np. [layer_num] (numer " -"warstwy) i [layer_z] (poÅ‚ożenie warstwy w osi Z)." - -#: src/libslic3r/PrintConfig.cpp:1054 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1055 -msgid "" -"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " -"intervals into the G-code to let the firmware show accurate remaining time. " -"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 " -"firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 -msgid "Max" -msgstr "Max" - -#: src/libslic3r/PrintConfig.cpp:1164 -msgid "This setting represents the maximum speed of your fan." -msgstr "To ustawienie odpowiada za maksymalnÄ… prÄ™dkość wentylatora." - -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" -"To jest najwyższa możliwa do wydrukowania wysokość warstwy dla tego " -"ekstrudera i jednoczeÅ›nie górny limit dla funkcji zmiennej wysokoÅ›ci warstwy " -"i materiaÅ‚u podporowego. Zalecana jest wartość nie wiÄ™ksza niż 75% " -"szerokoÅ›ci ekstruzji aby zapewnić dobrÄ… przyczepność warstw do siebie. JeÅ›li " -"ustawisz zero, wysokość warstwy zostanie ograniczona do 75% Å›rednicy dyszy." - -#: src/libslic3r/PrintConfig.cpp:1185 -msgid "Max print speed" -msgstr "Maksymalna prÄ™dkość druku" - -#: src/libslic3r/PrintConfig.cpp:1186 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"Ustawienie pozostaÅ‚ych prÄ™dkoÅ›ci na 0 spowoduje, ze Slic3r bÄ™dzie " -"automatycznie przeliczaÅ‚ optymalnÄ… prÄ™dkość dla utrzymania staÅ‚ego ciÅ›nienia " -"materiaÅ‚u w ekstruderze. To eksperymentalne ustawienie okreÅ›la maksymalnÄ… " -"dozwolonÄ… prÄ™dkość druku." - -#: src/libslic3r/PrintConfig.cpp:1197 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "" -"Ta eksperymentalna funkcja okreÅ›la maksymalnÄ… prÄ™dkość objÄ™toÅ›ciowÄ…, którÄ… " -"jest w stanie wytÅ‚oczyć Twój ekstruder." - -#: src/libslic3r/PrintConfig.cpp:1206 -msgid "Max volumetric slope positive" -msgstr "Maksymalny objÄ™toÅ›ciowo kÄ…t pozytywny" - -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" -"To ustawienie eksperymentalne jest używane do ograniczania szybkoÅ›ci zmian " -"iloÅ›ci ekstrudowanego materiaÅ‚u. Wartość 1.8 mm³/s² oznacza, że zmiana z " -"iloÅ›ci ekstrudowanego materiaÅ‚u z poziomu 1.8 mm³/s (czyli 0.45 mm " -"szerokoÅ›ci ekstruzji, 0.2 mm wysokoÅ›ci warstwy przy prÄ™dkoÅ›ci 20 mm/s) na " -"5.4 mm³/s (prÄ™dkość 60 mm/s) zajmie co najmniej 2 sekundy." - -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 -msgid "mm³/s²" -msgstr "mm³/s²" - -#: src/libslic3r/PrintConfig.cpp:1218 -msgid "Max volumetric slope negative" -msgstr "Maksymalny negatywny kÄ…t zwisu" - -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 -msgid "Min" -msgstr "Min" - -#: src/libslic3r/PrintConfig.cpp:1231 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "" -"To ustawienie wyraża minimalny PWM (Pulse Width Modulation), który jest " -"niezbÄ™dny dla wentylatora." - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" -"To jest najniższa możliwa do wydrukowania wysokość warstwy dla tego " -"ekstrudera i jednoczeÅ›nie dolny limit dla funkcji zmiennej wysokoÅ›ci " -"warstwy. Zazwyczaj jest to 0.05 lub 0.1 mm." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Min print speed" -msgstr "Minimalna prÄ™dkość druku" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r nie bÄ™dzie skalowaÅ‚ prÄ™dkoÅ›ci poniżej tej wartoÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:1259 -msgid "Minimal filament extrusion length" -msgstr "Minimalna dÅ‚ugość ekstruzji" - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"Generuj ilość pÄ™tli skirtu nie mniejszÄ… niż okreÅ›lona aby zużyć takÄ… ilość " -"filamentu na dolnej warstwie. Dla drukarek z kilkoma ekstuderami ta wartość " -"jest stosowana dla każdego z nich." - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Configuration notes" -msgstr "Notatki konfiguracyjne" - -#: src/libslic3r/PrintConfig.cpp:1271 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Tutaj możesz umieÅ›cić notatki, które zostanÄ… dodane do nagłówka pliku G-code." - -#: src/libslic3r/PrintConfig.cpp:1281 -msgid "Nozzle diameter" -msgstr "Åšrednica dyszy" - -#: src/libslic3r/PrintConfig.cpp:1282 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "To jest Å›rednica dyszy ekstrudera (np. 0.5, 0.35 itp.)" - -#: src/libslic3r/PrintConfig.cpp:1288 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1289 -msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "Nazwa Hosta, IP lub URL" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 -msgid "Only retract when crossing perimeters" -msgstr "Retrakcja tylko przy przechodzeniu nad obrysami" - -#: src/libslic3r/PrintConfig.cpp:1326 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "" -"Wyłącza retrakcjÄ™ gdy ruch jaÅ‚owy nie wykracza poza zewnÄ™trzny obrys górnej " -"warstwy (wiÄ™c jakiekolwiek wycieki z dyszy prawdopodobnie i tak nie bÄ™dÄ… " -"widoczne)." - -#: src/libslic3r/PrintConfig.cpp:1334 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" -"Ta funkcja obniży temperatury nieużywanych ekstruderów aby zapobiec " -"wyciekaniu filamentu z dyszy. RównoczeÅ›nie włączy wysoki skirt i przesunie " -"ekstrudery poza jego obrys przy zmianie temperatury." - -#: src/libslic3r/PrintConfig.cpp:1342 -msgid "Output filename format" -msgstr "Rozszerzenie pliku wyjÅ›ciowego" - -#: src/libslic3r/PrintConfig.cpp:1343 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"Możesz użyć wszystkich opcji konfiguracjnych jako zmiennych w tym szablonie, " -"takich jak np: [layer_height] - wysokość warstwy, [fill_density] - gÄ™stość " -"wypeÅ‚nienia, itp. Możesz również użyć [timestamp] - czas, [year] - rok, " -"[month] - miesiÄ…c, [day] - dzieÅ„, [hour] - godzina, [minute] - minuta, " -"[second] - sekunda, [version] - wersja, [input_filename] - peÅ‚na nazwa pliku " -"wejÅ›ciowego, [input_filename_base] - nazwa pliku wejÅ›ciowego bez " -"rozszerzenia." - -#: src/libslic3r/PrintConfig.cpp:1353 -msgid "Detect bridging perimeters" -msgstr "Wykrywanie mostów przy obrysach" - -#: src/libslic3r/PrintConfig.cpp:1355 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"Opcja eksperymentalna dostosowujÄ…ca przepÅ‚yw przy zwisach (zostanie " -"zastosowany przepÅ‚yw taki jak dla mostów), zastosuje również prÄ™dkość i " -"chÅ‚odzenie takie jak dla mostów." - -#: src/libslic3r/PrintConfig.cpp:1362 -msgid "Filament parking position" -msgstr "Pozycja zatrzymania filamentu" - -#: src/libslic3r/PrintConfig.cpp:1363 -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware. " -msgstr "" -"OdlegÅ‚ość koÅ„cówki ekstrudera do miejsca zatrzymania filamentu po " -"rozÅ‚adowaniu. Ta wartość powinna odpowiadać tej ustawionej w firmware " -"drukarki. " - -#: src/libslic3r/PrintConfig.cpp:1372 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1373 -msgid "" -"When set to zero, the distance the filament is moved from parking position " -"during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 -msgid "Perimeters" -msgstr "Obrysy" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"To jest przyspieszenie stosowane przy druku obrysów. Wysoka wartość, np. " -"9000 zazwyczaj daje dobre rezultaty - pod warunkiem, że Twój sprzÄ™t siÄ™ do " -"tego nadaje. Ustaw zero aby wyłączyć osobne ustawienia przyspieszenia dla " -"obrysów." - -#: src/libslic3r/PrintConfig.cpp:1392 -msgid "Perimeter extruder" -msgstr "Ekstruder dla obrysów" - -#: src/libslic3r/PrintConfig.cpp:1394 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "" -"Ekstruder używany przy druku obrysów i brim. Pierwszy ekstruder ma nr 1." - -#: src/libslic3r/PrintConfig.cpp:1404 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji obrysów. Możesz ustawić wiÄ™kszÄ… szerokość aby uzyskać " -"dokÅ‚adniejsze wykoÅ„czenie powierzchni. JeÅ›li ustawisz zero to szerokość " -"bÄ™dzie miaÅ‚a wartość domyÅ›lnÄ…, czyli 1.125x Å›rednicy dyszy. JeÅ›li ustawisz " -"wartość procentowÄ… (np. 200%) to zostanie obliczona z wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" -"PrÄ™dkość obrysów (inaczej powÅ‚oki pionowej). Ustaw 0 dla prÄ™dkoÅ›ci " -"automatycznej." - -#: src/libslic3r/PrintConfig.cpp:1427 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"To ustawienie okreÅ›la ilość obrysów, które bÄ™dÄ… generowane dla każdej " -"warstwy. Weź po uwagÄ™, że Slic3r może zwiÄ™kszyć tÄ… liczbÄ™ automatycznie gdy " -"wykryje zwisy, w których wydruku pomoże dodatkowa ilość obrysów przy " -"jednoczeÅ›nie włączonej opcji \"Dodatkowe obrysy jeÅ›li potrzebne\"." - -#: src/libslic3r/PrintConfig.cpp:1431 -msgid "(minimum)" -msgstr "(minimum)" - -#: src/libslic3r/PrintConfig.cpp:1439 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" -"Wprowadź Å›cieżki do wÅ‚asnych skryptów jeÅ›li chcesz dodać je do wyjÅ›ciowego " -"pliku G-code. Możesz dodać wiele skryptów, rozdzielajÄ…c je Å›rednikiem ( ; ). " -"Skrypty bÄ™dÄ… przetwarzane jako pierwsze w kolejnoÅ›ci i majÄ… dostÄ™p do " -"ustawieÅ„ konfiguracyjnych Slic3ra przez zmienne Å›rodowiskowe." - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "Printer type" -msgstr "Rodzaj drukarki" - -#: src/libslic3r/PrintConfig.cpp:1453 -msgid "Type of the printer." -msgstr "Rodzaj drukarki." - -#: src/libslic3r/PrintConfig.cpp:1457 -msgid "Printer notes" -msgstr "Notatki o drukarce" - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "You can put your notes regarding the printer here." -msgstr "Tutaj możesz umieÅ›cić notatki dotyczÄ…ce drukarki." - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "Printer vendor" -msgstr "Dostawca drukarki" - -#: src/libslic3r/PrintConfig.cpp:1468 -msgid "Name of the printer vendor." -msgstr "Nazwa dostawcy drukarki." - -#: src/libslic3r/PrintConfig.cpp:1472 -msgid "Printer variant" -msgstr "Wariant drukarki" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "" -"Name of the printer variant. For example, the printer variants may be " -"differentiated by a nozzle diameter." -msgstr "Nazwa wersji drukarki. Możesz np. tworzyć warianty wg Å›rednicy dyszy." - -#: src/libslic3r/PrintConfig.cpp:1483 -msgid "Raft layers" -msgstr "Warstwy tratwy" - -#: src/libslic3r/PrintConfig.cpp:1485 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "" -"Model zostanie podniesiony o zadanÄ… ilość warstw i umieszczony na podporach." - -#: src/libslic3r/PrintConfig.cpp:1494 -msgid "Resolution" -msgstr "Rozdzielczość" - -#: src/libslic3r/PrintConfig.cpp:1495 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"Minimalna rozdzielczość, używana do uproszczenia modelu wejÅ›ciowego, co " -"prowadzi do przyspieszenia procesu ciÄ™cia. Modele w wysokiej rozdzielczoÅ›ci " -"mogÄ… zawierać wiÄ™cej szczegółów niż drukarka jest w stanie przetworzyć. " -"Ustaw zero aby wyłączyć upraszczanie i użyć peÅ‚nej rozdzielczoÅ›ci pliku " -"wejÅ›ciowego." - -#: src/libslic3r/PrintConfig.cpp:1506 -msgid "Minimum travel after retraction" -msgstr "Minimalny ruch jaÅ‚owy po retrakcji" - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "" -"Retrakcja nie zostanie wykonana przy ruchu jaÅ‚owym krótszym niż ta wartość." - -#: src/libslic3r/PrintConfig.cpp:1514 -msgid "Retract amount before wipe" -msgstr "DÅ‚ugość retrakcji przed ruchem czyszczÄ…cym" - -#: src/libslic3r/PrintConfig.cpp:1515 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" -"Przy ekstruderze typu bowden warto wykonać szybkÄ… retrakcjÄ™ przed ruchem " -"czyszczÄ…cym." - -#: src/libslic3r/PrintConfig.cpp:1523 -msgid "Retract on layer change" -msgstr "Retrakcja przy zmianie warstwy" - -#: src/libslic3r/PrintConfig.cpp:1524 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "Ta flaga wymusza retrakcjÄ™ przy każdej zmianie wysokoÅ›ci Z." - -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 -msgid "Length" -msgstr "DÅ‚ugość" - -#: src/libslic3r/PrintConfig.cpp:1531 -msgid "Retraction Length" -msgstr "DÅ‚ugość retrakcji" - -#: src/libslic3r/PrintConfig.cpp:1532 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"Kiedy zostaje wykonana retrakcja to filament o okreÅ›lonej dÅ‚ugoÅ›ci jest " -"wciÄ…gany z powrotem (mierzona jest dÅ‚ugość nieprzetworzonego filamentu, " -"zanim wejdzie do ekstrudera)." - -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 -msgid "mm (zero to disable)" -msgstr "mm (zero aby wyłączyć)" - -#: src/libslic3r/PrintConfig.cpp:1540 -msgid "Retraction Length (Toolchange)" -msgstr "DÅ‚ugość Retrakcji (zmiana narzÄ™dzia)" - -#: src/libslic3r/PrintConfig.cpp:1541 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"Kiedy retrakcja zostaje wykonana przed zmianÄ… ekstrudera, filament o " -"okreÅ›lonej dÅ‚ugoÅ›ci jest wciÄ…gany z powrotem (mierzona jest dÅ‚ugość " -"nieprzetworzonego filamentu, zanim wejdzie do ekstrudera)." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Lift Z" -msgstr "Z-hop" - -#: src/libslic3r/PrintConfig.cpp:1551 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"JeÅ›li ustawisz tu wartość dodatniÄ… to oÅ› Z wykona szybki ruch w górÄ™ przy " -"każdej retrakcji. Przy używaniu kilku ekstruderów tylko ustawienia " -"pierwszego z nich bÄ™dÄ… brane pod uwagÄ™." - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Above Z" -msgstr "Powyżej Z" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Only lift Z above" -msgstr "Z-hop tylko powyżej" - -#: src/libslic3r/PrintConfig.cpp:1561 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"JeÅ›li ustawisz wartość dodatniÄ…, to oÅ› Z (z-hop) bÄ™dzie podnosić siÄ™ tylko " -"powyżej ustawionej wartoÅ›ci. Możesz w ten sposób wyłączyć z-hop na pierwszej " -"warstwie." - -#: src/libslic3r/PrintConfig.cpp:1569 -msgid "Below Z" -msgstr "Poniżej Z" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Only lift Z below" -msgstr "Z-hop tylko poniżej" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"JeÅ›li ustawisz wartość dodatniÄ…, to z-hop bÄ™dzie odbywaÅ‚ siÄ™ tylko poniżej " -"ustawionej wartoÅ›ci. Możesz w ten sposób ograniczyć dziaÅ‚anie funkcji np. " -"tylko dla pierwszych warstw." - -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 -msgid "Extra length on restart" -msgstr "Dodatkowa ilość dla powrotu" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"JeÅ›li retrakcja jest korygowana po ruchu jaÅ‚owym, ekstruder przepchnie takÄ… " -"dodatkowÄ… ilość filamentu. Ta opcja jest rzadko potrzebna." - -#: src/libslic3r/PrintConfig.cpp:1590 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"JeÅ›li retrakcja jest korygowana po zmianie narzÄ™dzia, ekstruder przepchnie " -"takÄ… dodatkowÄ… ilość filamentu." - -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 -msgid "Retraction Speed" -msgstr "PrÄ™dkość retrakcji" - -#: src/libslic3r/PrintConfig.cpp:1600 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "PrÄ™dkość retrakcji (stosowana tylko dla silnika ekstrudera)." - -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 -msgid "Deretraction Speed" -msgstr "PrÄ™dkość powrotu retrakcji" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" -"PrÄ™dkość powrotu filamentu do ekstrudera po retrakcji (dotyczy tylko silnika " -"ekstrudera). Ustaw zero aby użyć prÄ™dkoÅ›ci retrakcji." - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "Seam position" -msgstr "Pozycja szwu" - -#: src/libslic3r/PrintConfig.cpp:1619 -msgid "Position of perimeters starting points." -msgstr "Pozycja startowa druku obrysów." - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1627 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1628 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 -msgid "Direction" -msgstr "Kierunek" - -#: src/libslic3r/PrintConfig.cpp:1638 -msgid "Preferred direction of the seam" -msgstr "Preferowane ustawienie szwu" - -#: src/libslic3r/PrintConfig.cpp:1639 -msgid "Seam preferred direction" -msgstr "Preferowany kierunek szwu" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "Jitter" -msgstr "Jitter" - -#: src/libslic3r/PrintConfig.cpp:1649 -msgid "Seam preferred direction jitter" -msgstr "Kierunek jitter wyznaczany przez szew" - -#: src/libslic3r/PrintConfig.cpp:1650 -msgid "Preferred direction of the seam - jitter" -msgstr "Preferowany kierunek szwu - jitter" - -#: src/libslic3r/PrintConfig.cpp:1661 -msgid "USB/serial port for printer connection." -msgstr "Port USB/szeregowy do połączenia z drukarkÄ…." - -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "Szybkość portu szeregowego" - -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "" -"Szybkość transmisji portu USB/portu szeregowego do połączenia z drukarkÄ…." - -#: src/libslic3r/PrintConfig.cpp:1679 -msgid "Distance from object" -msgstr "OdstÄ™p od modelu" - -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "" -"OdlegÅ‚ość skirtu od modelu. Ustaw zero aby dołączyć do modelu i uzyskać " -"obramowanie dla lepszej przyczepnoÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "Skirt height" -msgstr "Wysokość skirt" - -#: src/libslic3r/PrintConfig.cpp:1689 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "" -"Wysokość skirtu wyrażona w warstwach. Ustawienie wysokiej wartoÅ›ci spowoduje " -"stworzenie osÅ‚ony chroniÄ…cej przed przeciÄ…gami." - -#: src/libslic3r/PrintConfig.cpp:1697 -msgid "Loops (minimum)" -msgstr "PÄ™tle (minimum)" - -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "Skirt Loops" -msgstr "Liczba obrysów skirt" - -#: src/libslic3r/PrintConfig.cpp:1699 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"Liczba pÄ™tli skirt. JeÅ›li włączona jest opcja \"Minimalna dÅ‚ugość ekstruzji" -"\", to może ona nadpisać wartość wprowadzonÄ… w tym polu. Ustaw zero aby " -"caÅ‚kowicie wyłączyć skirt." - -#: src/libslic3r/PrintConfig.cpp:1708 -msgid "Slow down if layer print time is below" -msgstr "Zwolnij jeÅ›li czas warstwy wynosi mniej niż" - -#: src/libslic3r/PrintConfig.cpp:1709 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"JeÅ›li szacowany czas druku warstwy bÄ™dzie niższy niż ta wartość to prÄ™dkość " -"ruchów drukujÄ…cych bÄ™dzie zmniejszona aby wydÅ‚użyć czas druku." - -#: src/libslic3r/PrintConfig.cpp:1720 -msgid "Small perimeters" -msgstr "MaÅ‚e obrysy" - -#: src/libslic3r/PrintConfig.cpp:1722 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" -"To ustawienie reguluje prÄ™dkość obrysów posiadajÄ…cych promieÅ„ mniejszy lub " -"równy 6.5 mm (zazwyczaj chodzi o otwory). JeÅ›li ustawisz wartość procentowÄ… " -"(np. 80%) to zostanie obliczona z prÄ™dkoÅ›ci obrysów ustawionej powyżej. " -"Ustaw zero aby użyć nastawów automatycznych." - -#: src/libslic3r/PrintConfig.cpp:1732 -msgid "Solid infill threshold area" -msgstr "Próg powierzchni zwartego wypeÅ‚nienia" - -#: src/libslic3r/PrintConfig.cpp:1734 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "WymuÅ› zwarte wypeÅ‚nienie dla obszarów mniejszych niż zadany próg." - -#: src/libslic3r/PrintConfig.cpp:1735 -msgid "mm²" -msgstr "mm²" - -#: src/libslic3r/PrintConfig.cpp:1742 -msgid "Solid infill extruder" -msgstr "Ekstruder do zwartego wypeÅ‚nienia" - -#: src/libslic3r/PrintConfig.cpp:1744 -msgid "The extruder to use when printing solid infill." -msgstr "Ekstruder używany do druku zwartego wypeÅ‚nienia." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "Solid infill every" -msgstr "Zwarte wypeÅ‚nienie co" - -#: src/libslic3r/PrintConfig.cpp:1753 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"Ta funkcja pozwoli wstawić zwartÄ… warstwÄ™ wypeÅ‚nienia pomiÄ™dzy okreÅ›lonÄ… " -"liczbÄ… warstw. Ustaw zero aby wyłączyć. Możesz ustawić tu dowolnÄ… wartość " -"(np. 9999) a Slic3r automatycznie wybierze maksymalnÄ… możliwÄ… liczbÄ™ warstw " -"biorÄ…c pod uwagÄ™ Å›rednicÄ™ dyszy i wysokość warstwy." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji wypeÅ‚nienia powierzchni zwartych. JeÅ›li ustawisz zero, szerokość " -"bÄ™dzie miaÅ‚a wartość domyÅ›lnÄ…, czyli 1.125x Å›rednicy dyszy. JeÅ›li ustawisz " -"wartość procentowÄ… (np. 90%) to zostanie obliczona z wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" -"PrÄ™dkość druku zwartych obszarów (góra/dół/poziome powÅ‚oki wewnÄ™trzne). Może " -"być wyrażona procentowo (np. 80%) ponad domyÅ›lnÄ… prÄ™dkość wypeÅ‚nienia. Wpisz " -"zero dla automatycznego ustawienia." - -#: src/libslic3r/PrintConfig.cpp:1789 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "Liczba zwartych warstw górnych i dolnych." - -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "Spiral vase" -msgstr "Tryb wazy" - -#: src/libslic3r/PrintConfig.cpp:1797 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"Ta funkcja pozwala drukować modele z 1 zewnÄ™trznÄ… Å›ciankÄ… z ciÄ…gÅ‚ym " -"podnoszeniem Z, aby uniknąć widocznego szwu (czyli ekstruder nie bÄ™dzie " -"drukowaÅ‚ po 1 warstwie na 1 wysokoÅ›ci, lecz bÄ™dzie podnosiÅ‚ siÄ™ pÅ‚ynnie w " -"formie spirali). Wymaga użycia 1 obrysu, zerowego wypeÅ‚nienia, braku warstw " -"górnych i braku podpór. Możesz ustawić dowolnÄ… ilość dolnych warstw jak i " -"obrysów skirt/brim. Nie zadziaÅ‚a przy druku wiÄ™cej niż jednego modelu." - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "Temperature variation" -msgstr "Zmiana temperatury" - -#: src/libslic3r/PrintConfig.cpp:1807 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" -"Różnica temperatur majÄ…ca zastosowanie gdy ekstruder nie jest używany. " -"Włącza druk skirtu o wysokoÅ›ci równej wysokoÅ›ci modelu, dziÄ™ki której dysze " -"bÄ™dÄ… co jakiÅ› czas czyszczone." - -#: src/libslic3r/PrintConfig.cpp:1818 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" -"Ten skrypt jest wykonywany na poczÄ…tku, po tym jak stół roboczy osiÄ…gnie " -"zadanÄ… temperaturÄ™ i ekstruder zacznie podgrzewanie, ale zanim nagrzeje siÄ™ " -"do zadanej temperatury. JeÅ›li Slic3r wykryje komendy typu M104, M109, M140 " -"lub M190, to nie zostanÄ… one wykonane na poczÄ…tku, wiÄ™c możesz okreÅ›lić " -"kolejność komend dot. podgrzewania i innych dodanych akcji. PamiÄ™taj, że " -"możesz używać zmiennych typu placeholder, wiÄ™c np. komendÄ™ \"M109 " -"S[first_layer_temperature]\" (temperatura pierwszej warstwy) możesz umieÅ›cić " -"gdzie chcesz." - -#: src/libslic3r/PrintConfig.cpp:1834 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"Ten skrypt jest wykonywany na samym poczÄ…tku G-code. Może być użyty do " -"nadpisania okreÅ›lonych ustawieÅ„ filamentu. JeÅ›li Slic3r wykryje komendy typu " -"M104, M109, M140 lub M190, to nie zostanÄ… one wykonane na poczÄ…tku, wiÄ™c " -"możesz okreÅ›lić kolejność komend dot. podgrzewania i innych dodanych akcji. " -"PamiÄ™taj, że możesz używać zmiennych typu placeholder, wiÄ™c np. komendÄ™ " -"\"M109 S[first_layer_temperature]\" (temperatura pierwszej warstwy) możesz " -"umieÅ›cić gdzie chcesz. JeÅ›li posiadasz kilka ekstruderów, ten G-code jest " -"wykonywany w ich kolejnoÅ›ci." - -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Single Extruder Multi Material" -msgstr "Multi Material z jednym ekstruderem" - -#: src/libslic3r/PrintConfig.cpp:1851 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "Drukarka przechodzi pomiÄ™dzy filamentami używajÄ…c jednego hotendu." - -#: src/libslic3r/PrintConfig.cpp:1857 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1858 -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1864 -msgid "Generate support material" -msgstr "Generuj materiaÅ‚ podporowy" - -#: src/libslic3r/PrintConfig.cpp:1866 -msgid "Enable support material generation." -msgstr "Włącz generowanie materiaÅ‚u podporowego." - -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1873 -msgid "" -"If checked, supports will be generated automatically based on the overhang " -"threshold value. If unchecked, supports will be generated inside the " -"\"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1880 -msgid "XY separation between an object and its support" -msgstr "OdstÄ™p materiaÅ‚u podporowego od modelu w osiach XY" - -#: src/libslic3r/PrintConfig.cpp:1882 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" -"OdstÄ™p materiaÅ‚u podporowego od modelu w osiach XY. JeÅ›li ustawisz wartość " -"procentowÄ… (np. 15%) to zostanie obliczona z szerokoÅ›ci ekstruzji obrysów " -"zewnÄ™trznych." - -#: src/libslic3r/PrintConfig.cpp:1893 -msgid "Pattern angle" -msgstr "KÄ…t wzoru" - -#: src/libslic3r/PrintConfig.cpp:1895 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "" -"To ustawienie odpowiada za obrót materiaÅ‚u podporowego w pÅ‚aszczyźnie " -"poziomej." - -#: src/libslic3r/PrintConfig.cpp:1906 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "Tworzenie podpór tylko na stole. Nie bÄ™dÄ… tworzone na wydruku." - -#: src/libslic3r/PrintConfig.cpp:1913 -msgid "Contact Z distance" -msgstr "OdstÄ™p w osi Z" - -#: src/libslic3r/PrintConfig.cpp:1915 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"Dystans w pionie miÄ™dzy modelem a warstwÄ… łączÄ…cÄ… materiaÅ‚u podporowego. " -"Ustawienie na 0 wyłączy ustawienie mostu (prÄ™dkoÅ›ci i przepÅ‚ywu) dla " -"pierwszej warstwy modelu nad warstwÄ… łączÄ…cÄ…." - -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1929 -msgid "Enforce support for the first" -msgstr "WymuÅ› podpory dla pierwszych" - -#: src/libslic3r/PrintConfig.cpp:1931 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"Generuj materiaÅ‚ podporowy dla okreÅ›lonej liczby warstw liczÄ…c od doÅ‚u, " -"niezależnie od tego czy normalny materiaÅ‚ podporowy jest włączony i " -"niezależnie od progu kÄ…ta. Przydaje siÄ™ aby uzyskać lepszÄ… przyczepność " -"modelu, które majÄ… bardzo małą powierzchniÄ™ kontaktu z powierzchniÄ… druku." - -#: src/libslic3r/PrintConfig.cpp:1937 -msgid "Enforce support for the first n layers" -msgstr "WymuÅ› podpory dla pierwszych n warstw" - -#: src/libslic3r/PrintConfig.cpp:1943 -msgid "Support material/raft/skirt extruder" -msgstr "Ekstruder dla podpór/tratwy (raft)/skirtu" - -#: src/libslic3r/PrintConfig.cpp:1945 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" -"Ekstruder używany przy druku podpór, tratwy (raft) i skirtu (1+, zero aby " -"użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu)." - -#: src/libslic3r/PrintConfig.cpp:1955 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji materiaÅ‚u podporowego. JeÅ›li ustawisz zero to szerokość bÄ™dzie " -"miaÅ‚a wartość domyÅ›lnÄ…, czyli bÄ™dzie równa Å›rednicy dyszy. JeÅ›li ustawisz " -"wartość procentowÄ… (np. 90%) to zostanie obliczona z wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:1964 -msgid "Interface loops" -msgstr "Warstwy łączÄ…ce" - -#: src/libslic3r/PrintConfig.cpp:1966 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "Pokryj pÄ™tlÄ… górnÄ… warstwÄ™ podpór. DomyÅ›lnie wyłączone." - -#: src/libslic3r/PrintConfig.cpp:1972 -msgid "Support material/raft interface extruder" -msgstr "Ekstruder dla podpór/warstw łączÄ…cych raft z modelem" - -#: src/libslic3r/PrintConfig.cpp:1974 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" -"Ekstruder używany przy druku warstw łączÄ…cych podpory z modelem (1+, zero " -"aby użyć obecnie wybranego ekstrudera i zminimalizować zmiany filamentu). Ma " -"wpÅ‚yw również na druk tratwy (raftu)." - -#: src/libslic3r/PrintConfig.cpp:1982 -msgid "Interface layers" -msgstr "Warstwy łączÄ…ce" - -#: src/libslic3r/PrintConfig.cpp:1984 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "Liczba warstw łączÄ…cych materiaÅ‚ podporowy z modelem wÅ‚aÅ›ciwym." - -#: src/libslic3r/PrintConfig.cpp:1992 -msgid "Interface pattern spacing" -msgstr "Rozmieszczenie wzoru warstw łączÄ…cych" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "" -"Rozmieszczenie linii warstwy łączÄ…cej. Ustaw zero dla zwartej warstwy " -"łączÄ…cej." - -#: src/libslic3r/PrintConfig.cpp:2004 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"PrÄ™dkość druku warstw łączÄ…cych materiaÅ‚u podporowego. JeÅ›li ustawisz " -"wartość procentowÄ… (np. 50%) to zostanie obliczona z prÄ™dkoÅ›ci druku " -"materiaÅ‚u podporowego." - -#: src/libslic3r/PrintConfig.cpp:2013 -msgid "Pattern" -msgstr "Wzór" - -#: src/libslic3r/PrintConfig.cpp:2015 -msgid "Pattern used to generate support material." -msgstr "Wzór podpór." - -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2028 -msgid "Pattern spacing" -msgstr "Rozmieszczenie wzoru" - -#: src/libslic3r/PrintConfig.cpp:2030 -msgid "Spacing between support material lines." -msgstr "Rozmieszczenie linii materiaÅ‚u podporowego." - -#: src/libslic3r/PrintConfig.cpp:2040 -msgid "Speed for printing support material." -msgstr "PrÄ™dkość druku materiaÅ‚u podporowego." - -#: src/libslic3r/PrintConfig.cpp:2047 -msgid "Synchronize with object layers" -msgstr "Synchronizuj z warstwami modelu" - -#: src/libslic3r/PrintConfig.cpp:2049 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" -"Synchronizuj warstwy podporowe z warstwami modelu. Przydaje siÄ™ przy " -"drukarkach typu multi-material gdy zmiana używanego materiaÅ‚u jest kosztowna." - -#: src/libslic3r/PrintConfig.cpp:2056 -msgid "Overhang threshold" -msgstr "Próg zwisu" - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" -"Podpory nie bÄ™dÄ… generowane dla zwisów, których kÄ…t przekracza zadany próg " -"(90° = pion). Inaczej mówiÄ…c, ta wartość okreÅ›la najwiÄ™kszy kÄ…t od poziomu " -"(kÄ…t mierzony od pÅ‚aszczyzny poziomej), który bÄ™dzie drukowany bez podpór." - -#: src/libslic3r/PrintConfig.cpp:2071 -msgid "With sheath around the support" -msgstr "Z osÅ‚onÄ… wokół podpór" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" -"Dodaj osÅ‚onÄ™ (pojedynczÄ… liniÄ™) wokół podpory bazowej. Sprawi to, że podpory " -"bÄ™dÄ… stabilniejsze, ale też trudniejsze do usuniÄ™cia." - -#: src/libslic3r/PrintConfig.cpp:2081 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "" -"Temperatura ekstrudera dla warstw powyżej pierwszej. Ustaw zero aby wyłączyć " -"komendy kontrolujÄ…ce temperaturÄ™ w pliku wyjÅ›ciowym." - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "Temperatura" - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Detect thin walls" -msgstr "Wykrywanie cienkich Å›cian" - -#: src/libslic3r/PrintConfig.cpp:2092 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"Wykrywaj Å›ciany o gruboÅ›ci jednego obrysu (obszary, gdzie 2 obrysy nie " -"zmieszczÄ… siÄ™ i trzeba bÄ™dzie połączyć je w jednÄ… liniÄ™)." - -#: src/libslic3r/PrintConfig.cpp:2099 -msgid "Threads" -msgstr "WÄ…tki" - -#: src/libslic3r/PrintConfig.cpp:2100 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "" -"WÄ…tki sÄ… używane do równolegÅ‚ego przetwarzania zadaÅ„ wymagajÄ…cych używa " -"wielu zasobów. Optymalna liczba wÄ…tków powinna być odrobinÄ™ wiÄ™ksza od " -"dostÄ™pnej liczby rdzeni lub procesorów." - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"Ten kod jest wykonywany przed każdÄ… zmianÄ… ekstrudera/filamentu. PamiÄ™taj, " -"że możesz użyć zmiennych typu placeholder dla wszystkich ustawieÅ„ Slic3r, " -"jak np. [previous_extruder] (poprzedni ekstruder) i [next_extruder] " -"(nastÄ™pny ekstruder)." - -#: src/libslic3r/PrintConfig.cpp:2125 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" -"Ustaw tÄ… wartość jako niezerowÄ… aby pozwolić na rÄ™czne ustawienie szerokoÅ›ci " -"ekstruzji zwartego wypeÅ‚nienia górnych warstw. Możesz ustawić mniejszÄ… " -"szerokość aby wypeÅ‚nić szczeliny i uzyskać gÅ‚adsze wykoÅ„czenie. JeÅ›li " -"ustawisz zero, szerokość bÄ™dzie miaÅ‚a wartość domyÅ›lnÄ…, czyli bÄ™dzie równa " -"Å›rednicy dyszy. JeÅ›li ustawisz wartość procentowÄ… (np. 90%) to zostanie " -"obliczona z wysokoÅ›ci warstwy." - -#: src/libslic3r/PrintConfig.cpp:2137 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" -"PrÄ™dkość druku najwyższych warstw zwartych (dotyczy tylko najwyższych, " -"zewnÄ™trznych warstw i nie obejmuje zwartych warstw umieszczonych niżej). " -"Warto obniżyć tÄ… wartość dla Å‚adniejszego wykoÅ„czenia powierzchni. JeÅ›li " -"ustawisz wartość procentowÄ… (np. 80%) to zosttanie obliczona z prÄ™dkoÅ›ci " -"druku zwartego wypeÅ‚nienia. Ustaw zero dla prÄ™dkoÅ›ci automatycznej." - -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Górne" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "Number of solid layers to generate on top surfaces." -msgstr "Liczba zwartych warstw górnych." - -#: src/libslic3r/PrintConfig.cpp:2153 -msgid "Top solid layers" -msgstr "Zwarte warstwy górne" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "PrÄ™dkość ruchów jaÅ‚owych (przeskoków pomiÄ™dzy punktami ekstruzji)." - -#: src/libslic3r/PrintConfig.cpp:2168 -msgid "Use firmware retraction" -msgstr "Użyj retrakcji z firmware" - -#: src/libslic3r/PrintConfig.cpp:2169 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Ta eksperymentalna funkcja używa komend G10 i G11 aby przerzucić kontrolÄ™ " -"retrakcji na firmware. Jest wspierana jedynie przez najnowsze wersje Marlina." - -#: src/libslic3r/PrintConfig.cpp:2176 -msgid "Use relative E distances" -msgstr "Użyj wzglÄ™dnych wartoÅ›ci E (ekstruzji)" - -#: src/libslic3r/PrintConfig.cpp:2177 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "" -"JeÅ›li Twój firmware wymaga wzglÄ™dnych wartoÅ›ci E, zaznacz to pole. W innym " -"przypadku zostaw puste. WiÄ™kszość ukÅ‚adów obsÅ‚uguje wartoÅ›ci absolutne." - -#: src/libslic3r/PrintConfig.cpp:2184 -msgid "Use volumetric E" -msgstr "Użyj wolumetrycznej wartoÅ›ci E" - -#: src/libslic3r/PrintConfig.cpp:2185 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"Ta eksperymentalna funkcja okreÅ›la wyjÅ›ciowe dane E (ilość ekstruzji) w " -"milimetrach szeÅ›ciennych zamiast dÅ‚ugoÅ›ci. JeÅ›li Å›rednica filamentu nie " -"zostaÅ‚a jeszcze ustawiona w firmware, możesz użyć komendy \"M200 " -"D[filament_diameter_0] T0\" w skrypcie startowym aby włączyć tryb " -"objÄ™toÅ›ciowy i użyć filamentu powiÄ…zanego z ustawionym w Slic3r. Ta funkcja " -"jest wspierana jedynie przez najnowsze wersje Marlina." - -#: src/libslic3r/PrintConfig.cpp:2196 -msgid "Enable variable layer height feature" -msgstr "Włącz funkcjÄ™ zmiennej wysokoÅ›ci warstwy" - -#: src/libslic3r/PrintConfig.cpp:2197 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" -"Niektóre drukarki mogÄ… mieć trudnoÅ›ci z drukiem ze zmiennÄ… wysokoÅ›ciÄ… " -"warstwy. DomyÅ›lnie włączone." - -#: src/libslic3r/PrintConfig.cpp:2204 -msgid "Wipe while retracting" -msgstr "Czyszczenie przy retrakcji" - -#: src/libslic3r/PrintConfig.cpp:2205 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "" -"Ta flaga włączy ruch dyszy przy retrakcji aby zminimalizować formowanie siÄ™ " -"kropli filamentu wokół koÅ„cówki dyszy przy ekstruderach, które majÄ… " -"tendencjÄ™ do wyciekania filamentu." - -#: src/libslic3r/PrintConfig.cpp:2213 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" -"Drukarki pracujÄ…ce z kilkoma filamentami na raz (multi-material) mogÄ… " -"wymagać czyszczenia gÅ‚owicy przy zmianie filamentu. Nadmiar materiaÅ‚u jest " -"wytÅ‚aczany w formie wieży czyszczÄ…cej." - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Purging volumes - load/unload volumes" -msgstr "ObjÄ™tość czyszczenia - objÄ™tość Å‚adowania/rozÅ‚adowania" - -#: src/libslic3r/PrintConfig.cpp:2221 -msgid "" -"This vector saves required volumes to change from/to each tool used on the " -"wipe tower. These values are used to simplify creation of the full purging " -"volumes below. " -msgstr "" -"To ustawienie okreÅ›la wymaganÄ… objÄ™tość wieży czyszczÄ…cej przy zmianie " -"danego narzÄ™dzia. Te wartoÅ›ci używane sÄ… do uproszczenia okreÅ›lenia peÅ‚nych " -"wartoÅ›ci czyszczenia poniżej. " - -#: src/libslic3r/PrintConfig.cpp:2228 -msgid "Purging volumes - matrix" -msgstr "ObjÄ™toÅ›ci czyszczenia - formuÅ‚a" - -#: src/libslic3r/PrintConfig.cpp:2229 -msgid "" -"This matrix describes volumes (in cubic milimetres) required to purge the " -"new filament on the wipe tower for any given pair of tools. " -msgstr "" -"Ta formuÅ‚a okreÅ›la objÄ™tość (w milimetrach szeÅ›ciennych) wymaganÄ… do " -"wyczyszczenia filamentu na wieży czyszczÄ…cej dla danej pary narzÄ™dzi " -"(filamentów). " - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Position X" -msgstr "Pozycja X" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "Koordynata X wieży czyszczÄ…cej od przedniego lewego narożnika" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Position Y" -msgstr "Pozycja Y" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Koordynata wieży czyszczÄ…cej w osi Y od przedniego lewego narożnika" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Width of a wipe tower" -msgstr "Szerokość wieży czyszczÄ…cej" - -#: src/libslic3r/PrintConfig.cpp:2263 -msgid "Wipe tower rotation angle" -msgstr "KÄ…t obrotu wieży czyszczÄ…cej" - -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "Obrót wieży czyszczÄ…cej wzglÄ™dem osi X " - -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "stopni" - -#: src/libslic3r/PrintConfig.cpp:2272 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2273 -msgid "" -"Purging after toolchange will done inside this object's infills. This lowers " -"the amount of waste but may result in longer print time due to additional " -"travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2281 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "" -"Object will be used to purge the nozzle after a toolchange to save material " -"that would otherwise end up in the wipe tower and decrease print time. " -"Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2289 -msgid "Maximal bridging distance" -msgstr "Maksymalna odlegÅ‚ość drukowania mostów" - -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "Minimalny odstÄ™p pomiÄ™dzy podporami w sekcjach rzadkiego wypeÅ‚nienia. " - -#: src/libslic3r/PrintConfig.cpp:2297 -msgid "XY Size Compensation" -msgstr "Korekta wymiarów XY" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"Model zostanie zmniejszony lub zwiÄ™kszony w osiach X i Y o zadanÄ… wartość " -"(ujemna = zmniejszenie, dotatnia = zwiÄ™kszenie). Może być przydatne przy " -"kalibracji Å›rednic otworów." - -#: src/libslic3r/PrintConfig.cpp:2308 -msgid "Z offset" -msgstr "Margines Z" - -#: src/libslic3r/PrintConfig.cpp:2309 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"Wartość tego ustawienia zostanie dodana (lub odjÄ™ta) od wszystkich koordynat " -"w osi Z w pliku wyjÅ›ciowym G-code. Jest używana dla korekcji zÅ‚ego poÅ‚ożenia " -"wyłącznika kraÅ„cowego osi Z. Np. jeÅ›li koÅ„cówka dyszy znajduje siÄ™ 0.3 mm " -"ponad poÅ‚ożeniem zerowym, ustaw tutaj -0.3 (lub napraw kraÅ„cówkÄ™)." - -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2380 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2381 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2387 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2389 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2396 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2402 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "" -"Set the actual LCD display orientation inside the SLA printer. Portrait mode " -"will flip the meaning of display width and height parameters and the output " -"images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2410 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2411 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2489 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2494 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2496 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2512 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2514 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2521 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2523 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2530 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2531 -msgid "" -"Controls the bridge type between two neigboring pillars. Can be zig-zag, " -"cross (double zig-zag) or dynamic which will automatically switch between " -"the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2540 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2542 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2546 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2548 -msgid "" -"Merging bridges or pillars into another pillars can increase the radius. " -"Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2557 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2559 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2566 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2568 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2575 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2577 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2584 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2586 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2593 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2595 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2631 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2636 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2645 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2654 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2663 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 -msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "Mieszane" - -#: src/libslic3r/GCode/PreviewData.cpp:396 -msgid "Height (mm)" -msgstr "Wysokość (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Szerokość (mm)" - -#: src/libslic3r/GCode/PreviewData.cpp:400 -msgid "Speed (mm/s)" -msgstr "PrÄ™dkość (mm/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:402 -msgid "Volumetric flow rate (mm3/s)" -msgstr "ObjÄ™toÅ›ciowy współczynnik przepÅ‚ywu (mm3/s)" - -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" diff --git a/resources/localization/uk/Slic3rPE.mo b/resources/localization/uk/Slic3rPE.mo deleted file mode 100644 index 8c5c5437b..000000000 Binary files a/resources/localization/uk/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/uk/Slic3rPE_uk.po b/resources/localization/uk/Slic3rPE_uk.po deleted file mode 100644 index 3845994bf..000000000 --- a/resources/localization/uk/Slic3rPE_uk.po +++ /dev/null @@ -1,5804 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: 2019-02-26 10:38+0100\n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.8\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: src/slic3r/GUI/AboutDialog.cpp:33 -msgid "About Slic3r" -msgstr "Про Slic3r" - -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 -msgid "Version" -msgstr "ВерÑÑ–Ñ" - -#: src/slic3r/GUI/BedShapeDialog.cpp:43 -msgid "Shape" -msgstr "ВиглÑд (Форма)" - -#: src/slic3r/GUI/BedShapeDialog.cpp:50 -msgid "Rectangular" -msgstr "ПрÑмокутний" - -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 -msgid "Size" -msgstr "Розмір" - -#: src/slic3r/GUI/BedShapeDialog.cpp:55 -msgid "Size in X and Y of the rectangular plate." -msgstr "Розмір прÑмокутної подложки за X та Y." - -#: src/slic3r/GUI/BedShapeDialog.cpp:61 -msgid "Origin" -msgstr "Початок координат" - -#: src/slic3r/GUI/BedShapeDialog.cpp:62 -msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." -msgstr "ВідÑтань координат 0,0 G-коду від нижнього лівого кута прÑмокутника." - -#: src/slic3r/GUI/BedShapeDialog.cpp:66 -msgid "Circular" -msgstr "Круговий" - -msgid "Switch to %s mode" -msgstr "Перейти до режиму %s" - -msgid "Current mode is %s" -msgstr "Поточний режим - %s" - -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 -msgid "mm" -msgstr "мм" - -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 -msgid "Diameter" -msgstr "Діаметр" - -#: src/slic3r/GUI/BedShapeDialog.cpp:71 -msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." -msgstr "Діаметр подложки. ПередбачаєтьÑÑ, що початок координат (0,0) знаходитьÑÑ Ð² центрі." - -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 -#: src/libslic3r/GCode/PreviewData.cpp:175 -msgid "Custom" -msgstr "КориÑтувацький" - -#: src/slic3r/GUI/BedShapeDialog.cpp:79 -msgid "Load shape from STL..." -msgstr "Завантажте форму з STL ..." - -#: src/slic3r/GUI/BedShapeDialog.cpp:125 -msgid "Settings" -msgstr "ÐалаштуваннÑ" - -#: src/slic3r/GUI/BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Виберіть файл, щоб імпортувати форму полотна з (STL/OBJ/AMF/PRUSA):" - -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 -msgid "Error! " -msgstr "Помилка! " - -#: src/slic3r/GUI/BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "Обраний файл не міÑтить геометрії." - -#: src/slic3r/GUI/BedShapeDialog.cpp:328 -msgid "The selected file contains several disjoint areas. This is not supported." -msgstr "Обраний файл міÑтить декілька непереÑічних облаÑтей. Ðе підтримуєтьÑÑ." - -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape" -msgstr "Форма полотна" - -#: src/slic3r/GUI/BonjourDialog.cpp:54 -msgid "Network lookup" -msgstr "" - -#: src/slic3r/GUI/BonjourDialog.cpp:67 -msgid "Address" -msgstr "" - -#: src/slic3r/GUI/BonjourDialog.cpp:68 -msgid "Hostname" -msgstr "" - -#: src/slic3r/GUI/BonjourDialog.cpp:69 -msgid "Service name" -msgstr "" - -#: src/slic3r/GUI/BonjourDialog.cpp:70 -msgid "OctoPrint version" -msgstr "ВерÑÑ–Ñ OctoPrint" - -#: src/slic3r/GUI/BonjourDialog.cpp:188 -msgid "Searching for devices" -msgstr "" - -#: src/slic3r/GUI/BonjourDialog.cpp:195 -msgid "Finished" -msgstr "" - -#: src/slic3r/GUI/ButtonsDescription.cpp:15 -msgid "Buttons And Text Colors Description" -msgstr "" - -#: src/slic3r/GUI/ButtonsDescription.cpp:40 -msgid "Value is the same as the system value" -msgstr "" - -#: src/slic3r/GUI/ButtonsDescription.cpp:57 -msgid "Value was changed and is not equal to the system value or the last saved preset" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 -msgid "Upgrade" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 -msgid "Downgrade" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 -msgid "Before roll back" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 -msgid "User" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 -msgid "Unknown" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 -msgid "Active: " -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 -msgid "slic3r version" -msgstr "верÑÑ–Ñ slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 -msgid "print" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 -msgid "filaments" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 -msgid "printer" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 -msgid "vendor" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 -msgid "version" -msgstr "верÑÑ–Ñ" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 -msgid "min slic3r version" -msgstr "мінімальна верÑÑ–Ñ slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 -msgid "max slic3r version" -msgstr "макÑимальна верÑÑ–Ñ slic3r" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "model" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 -msgid "variants" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 -msgid "Incompatible with this Slic3r" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 -msgid "Activate" -msgstr "" - -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 -msgid "Configuration Snapshots" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:92 -msgid "nozzle" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" -msgstr "за замовчаннÑм" - -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" -msgstr "Вибрати вÑе" - -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" -msgstr "Ðічого" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -#, c-format -msgid "Welcome to the Slic3r %s" -msgstr "ЛаÑкаво проÑимо до Slic3r %s" - -#: src/slic3r/GUI/ConfigWizard.cpp:226 -msgid "Welcome" -msgstr "ЛаÑкаво проÑимо" - -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 -#, c-format -msgid "Run %s" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:234 -#, c-format -msgid "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial configuration; just a few settings and you will be ready to print." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:238 -msgid "Remove user profiles - install from scratch (a snapshot will be taken beforehand)" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Automatic updates" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:289 -msgid "Updates" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 -msgid "Check for application updates" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 -msgid "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 -msgid "Update built-in Presets automatically" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 -msgid "If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:308 -msgid "Updates are never applied without user's consent and never overwrite user's customized settings." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:313 -msgid "Additionally a backup snapshot of the whole configuration is created before an update is applied." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:320 -msgid "Other Vendors" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:322 -msgid "Pick another vendor supported by Slic3r PE:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 -msgid "Firmware Type" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 -msgid "Firmware" -msgstr "Прошивка" - -#: src/slic3r/GUI/ConfigWizard.cpp:385 -msgid "Choose the type of firmware used by your printer." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:419 -msgid "Bed Shape and Size" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:422 -msgid "Set the shape of your printer's bed." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Filament and Nozzle Diameters" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:436 -msgid "Print Diameters" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:452 -msgid "Enter the diameter of your printer's hot end nozzle." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:455 -msgid "Nozzle Diameter:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:465 -msgid "Enter the diameter of your filament." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:466 -msgid "Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:469 -msgid "Filament Diameter:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Extruder and Bed Temperatures" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:487 -msgid "Temperatures" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:503 -msgid "Enter the temperature needed for extruding your filament." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:504 -msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:507 -msgid "Extrusion Temperature:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 -msgid "°C" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:517 -msgid "Enter the bed temperature needed for getting your filament to stick to your heated bed." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:518 -msgid "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed." -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:521 -msgid "Bed Temperature:" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:833 -msgid "< &Back" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:834 -msgid "&Next >" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:835 -msgid "&Finish" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:906 -msgid "Configuration Wizard" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:907 -msgid "Configuration &Wizard" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:909 -msgid "Configuration Assistant" -msgstr "" - -#: src/slic3r/GUI/ConfigWizard.cpp:910 -msgid "Configuration &Assistant" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:109 -msgid "default value" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:112 -msgid "parameter name" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:140 -#, c-format -msgid "%s doesn't support percentage" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:153 -msgid "Input value is out of range" -msgstr "" - -#: src/slic3r/GUI/Field.cpp:176 -#, c-format -msgid "" -"Do you mean %d%% instead of %d %s?\n" -"Select YES if you want to change this value to %d%%, \n" -"or NO if you are sure that %d %s is a correct value." -msgstr "" - -#: src/slic3r/GUI/Field.cpp:179 -msgid "Parameter validation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:133 -msgid "Flash!" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 -msgid "Flashing in progress. Please do not disconnect the printer!" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:245 -msgid "Flashing succeeded!" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:246 -msgid "Flashing failed. Please see the avrdude log below." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:247 -msgid "Flashing cancelled." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 -#, c-format -msgid "" -"This firmware hex file does not match the printer model.\n" -"The hex file is intended for: %s\n" -"Printer reported: %s\n" -"\n" -"Do you want to continue and flash this hex file anyway?\n" -"Please only continue if you are sure this is the right thing to do." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 -msgid "Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at a time for flashing." -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:581 -#, c-format -msgid "Error accessing port at %s: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:690 -msgid "Firmware flasher" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:712 -msgid "Firmware image:" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:716 -msgid "Serial port:" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:718 -msgid "Autodetected" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:719 -msgid "Rescan" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:726 -msgid "Progress:" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:729 -msgid "Status:" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:730 -msgid "Ready" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:809 -msgid "" -"Are you sure you want to cancel firmware flashing?\n" -"This could leave your printer in an unusable state!" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:810 -msgid "Confirmation" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:813 -msgid "Cancelling..." -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 -msgid "Detected object outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 -msgid "Detected toolpath outside print volume" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "Повернути" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "МаÑштаб" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "Ліва кнопка миші - додати точку" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "Права кнопка миші - видалити точку" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "Генерувати точки автоматично" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "Видалити вÑÑ– точки" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "Точки SLA підтримки" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 -msgid "Rotate lower part upwards" -msgstr "Повернути нижню чаÑтину вгору" - -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 -msgid "Perform cut" -msgstr "Виконати розріз" - -#: src/slic3r/GUI/GLGizmo.cpp:2276 -msgid "Cut object:" -msgstr "Розрізати об'єкт:" - -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 -msgid "Cut" -msgstr "Розрізати" - -#: src/slic3r/GUI/GLGizmo.cpp:2466 -msgid "Keep upper part" -msgstr "Залишити верхню чаÑтину" - -#: src/slic3r/GUI/GLGizmo.cpp:2467 -msgid "Keep lower part" -msgstr "Залишити нижню чаÑтину" - -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" -msgstr "ЗауваженнÑ" - -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" -msgstr "" - -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 -msgid "Warning" -msgstr "ЗаÑтереженнÑ" - -#: src/slic3r/GUI/GUI_App.cpp:377 -msgid "Choose one file (3MF):" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:389 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Виберіть один чи кілька файлів (STL/OBJ/AMF/PRUSA):" - -#: src/slic3r/GUI/GUI_App.cpp:451 -msgid "Array of language names and identifiers should have the same size." -msgstr "МаÑив імен мов та Ñ—Ñ… ідентифікаторів має бути однакового розміру." - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Select the language" -msgstr "Оберіть мову" - -#: src/slic3r/GUI/GUI_App.cpp:461 -msgid "Language" -msgstr "Мова" - -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 -msgid "Default" -msgstr "За замовчуваннÑм" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "&Configuration Snapshots" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:609 -msgid "Inspect / activate configuration snapshots" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Take Configuration &Snapshot" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:610 -msgid "Capture a configuration snapshot" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "&Preferences" -msgstr "&Преференції" - -#: src/slic3r/GUI/GUI_App.cpp:613 -msgid "Application preferences" -msgstr "Преференції заÑтоÑуваннÑ" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple" -msgstr "ПроÑтий" - -#: src/slic3r/GUI/GUI_App.cpp:616 -msgid "Simple View Mode" -msgstr "ПроÑтий режим переглÑду" - -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 -msgid "Advanced" -msgstr "Розширений" - -#: src/slic3r/GUI/GUI_App.cpp:617 -msgid "Advanced View Mode" -msgstr "Розширений режим переглÑду" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert" -msgstr "ЕкÑперт" - -#: src/slic3r/GUI/GUI_App.cpp:618 -msgid "Expert View Mode" -msgstr "Режим переглÑду ЕкÑперт" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Mode" -msgstr "Режим" - -#: src/slic3r/GUI/GUI_App.cpp:620 -msgid "Slic3r View Mode" -msgstr "Режим переглÑду Slic3r'у" - -#: src/slic3r/GUI/GUI_App.cpp:622 -msgid "Change Application &Language" -msgstr "Змінити &мову заÑтоÑуваннÑ" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Flash printer &firmware" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:624 -msgid "Upload a firmware image into an Arduino based printer" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Taking configuration snapshot" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:636 -msgid "Snapshot name" -msgstr "" - -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" -msgstr "ЗаÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ перезапущене" - -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" -msgstr "Увага!" - -#: src/slic3r/GUI/GUI_App.cpp:691 -msgid "&Configuration" -msgstr "&КонфігураціÑ" - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid "You have unsaved changes " -msgstr "У Ð²Ð°Ñ Ñ” незбережені зміни " - -#: src/slic3r/GUI/GUI_App.cpp:711 -msgid ". Discard changes and continue anyway?" -msgstr ". Відхилити зміни Ñ– продовжити в будь-Ñкому випадку?" - -#: src/slic3r/GUI/GUI_App.cpp:712 -msgid "Unsaved Presets" -msgstr "Ðезбереженні налаштуваннÑ" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 -msgid "Layers and Perimeters" -msgstr "Шари та периметри" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 -msgid "Infill" -msgstr "ЗаповненнÑ" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 -msgid "Support material" -msgstr "Підтримка" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "ШвидкіÑть" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 -msgid "Extruders" -msgstr "ЕкÑтрудери" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 -msgid "Extrusion Width" -msgstr "Ширина екÑтрузії" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 -msgid "Supports" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 -msgid "Pad" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 -msgid "Name" -msgstr "Ім'Ñ" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 -msgid "Right button click the icon to change the object settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 -#, c-format -msgid "Auto-repaired (%d errors):\n" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 -msgid "degenerate facets" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 -msgid "edges fixed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 -msgid "facets removed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 -msgid "facets added" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 -msgid "facets reversed" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 -msgid "backwards edges" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 -msgid "Right button click the icon to fix STL through Netfabb" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 -msgid "Extruder" -msgstr "ЕкÑтрудер" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 -msgid "Select showing settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 -msgid "Load" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 -msgid "Box" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Cylinder" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Sphere" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 -msgid "Slab" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 -msgid "Add part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 -msgid "Add modifier" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 -msgid "Add support enforcer" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 -msgid "Add support blocker" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 -msgid "Split to parts" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 -msgid "Add settings" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 -msgid "Change type" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 -msgid "You can't delete the last solid part from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 -msgid "You can't delete the last intance from object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 -msgid "The selected object couldn't be split because it contains only one part." -msgstr "Вибраний об'єкт не можна розділити, оÑкільки він міÑтить лише одну чаÑтину." - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 -msgid "Group manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 -msgid "Object manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 -msgid "Object Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 -msgid "Part Settings to modify" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 -msgid "Part manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 -msgid "Instance manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 -msgid "You can't change a type of the last solid part of the object." -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 -msgid "Select type of part" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 -msgid "The supplied name is not valid;" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 -msgid "the following characters are not allowed:" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 -msgid "Object Manipulation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 -msgid "Object name" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 -msgid "Position" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 -msgid "Rotation" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 -msgid "Scale factors" -msgstr "" - -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 -msgid "Translate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:235 -msgid "View" -msgstr "Вид" - -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:394 -msgid "Feature type" -msgstr "Тип ознаки" - -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 -msgid "Height" -msgstr "ВиÑота" - -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 -msgid "Width" -msgstr "Ширина" - -#: src/slic3r/GUI/GUI_Preview.cpp:242 -msgid "Volumetric flow rate" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 -msgid "Tool" -msgstr "ІнÑтрумент" - -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 -#: src/libslic3r/GCode/PreviewData.cpp:406 -msgid "Color Print" -msgstr "" - -#: src/slic3r/GUI/GUI_Preview.cpp:247 -msgid "Show" -msgstr "Показати" - -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 -msgid "Feature types" -msgstr "Типи ознак" - -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 -msgid "Perimeter" -msgstr "Периметр" - -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 -msgid "External perimeter" -msgstr "Зовнішній периметр" - -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 -msgid "Overhang perimeter" -msgstr "ÐавиÑаючий периметр" - -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 -msgid "Internal infill" -msgstr "Внутрішнє наповненнÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 -msgid "Solid infill" -msgstr "Суцільне наповненнÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 -msgid "Top solid infill" -msgstr "Верхнє Ñуцільне наповненнÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 -msgid "Bridge infill" -msgstr "МоÑтове наповненнÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 -#: src/libslic3r/GCode/PreviewData.cpp:170 -msgid "Gap fill" -msgstr "Ð—Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ñƒ" - -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 -#: src/libslic3r/GCode/PreviewData.cpp:171 -msgid "Skirt" -msgstr "ПлінтуÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 -#: src/libslic3r/GCode/PreviewData.cpp:173 -msgid "Support material interface" -msgstr "Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑŽÑ‡Ð¾Ð³Ð¾ матеріалу" - -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 -#: src/libslic3r/GCode/PreviewData.cpp:174 -msgid "Wipe tower" -msgstr "Вежа вичищуваннÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 -msgid "Travel" -msgstr "ПереÑуваннÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:270 -msgid "Retractions" -msgstr "ПерериваннÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:271 -msgid "Unretractions" -msgstr "ÐеперериваннÑ" - -#: src/slic3r/GUI/GUI_Preview.cpp:272 -msgid "Shells" -msgstr "Оболонки" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 -msgid "Slic3r Prusa Edition - Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 -msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 -msgid "Import STL/OBJ/AMF/3MF without config, keep bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 -msgid "Load Config from .ini/amf/3mf/gcode" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 -msgid "Export G-code" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 -msgid "Save project (3MF)" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 -msgid "Load Config from .ini/amf/3mf/gcode and merge" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 -msgid "(Re)slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 -msgid "Quick slice" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat last quick slice" -msgstr "Повторити оÑтаннє швидке нарізаннÑ" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 -msgid "Select Plater Tab" -msgstr "Вибрати вкладку Plater" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 -msgid "Quick slice and Save as" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 -msgid "Select Print Settings Tab" -msgstr "Вибрати вкладку параметрів друку" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 -msgid "Select Filament Settings Tab" -msgstr "Вибрати вкладку параметрів філаменту" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 -msgid "Select Printer Settings Tab" -msgstr "Вибрати вкладку параметрів принтеру" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 -msgid "Switch to 3D" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 -msgid "Switch to Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 -msgid "Preferences" -msgstr "Преференції" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 -msgid "Print host upload queue" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 -msgid "Camera view " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 -msgid "Add Instance to selected object " -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 -msgid "Remove Instance from selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 -msgid "Show keyboard shortcuts list" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 -msgid "Select multiple object/Move multiple object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 -msgid "Arrange" -msgstr "Організувати" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 -msgid "Select All objects" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 -msgid "Delete selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 -msgid "Delete All" -msgstr "Видалити вÑе" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 -msgid "Gizmo move" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 -msgid "Gizmo scale" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 -msgid "Gizmo rotate" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 -msgid "Gizmo cut" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 -msgid "Gizmo Place face on bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 -msgid "Gizmo SLA support points" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:142 -msgid "Zoom to Bed" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:143 -msgid "Zoom to all objects in scene, if none selected" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:144 -msgid "Zoom to selected object" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:145 -msgid "Zoom in" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:146 -msgid "Zoom out" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:147 -msgid "Unselect gizmo, keep object selection" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:149 -msgid "Plater Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Arrow Up" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 -msgid "Upper Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Arrow Down" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 -msgid "Lower Layer" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 -msgid "Preview Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:53 -msgid " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" -msgstr " - Пам'Ñтайте оновлювати з http://github.com/prusa3d/slic3r/releases" - -#: src/slic3r/GUI/MainFrame.cpp:130 -msgid "Plater" -msgstr "Платер" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" -msgstr "&Відкрити" - -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "Open a project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "Save current project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save current project file as" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Import STL/OBJ/AM&F/3MF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:246 -msgid "Load a model" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Import &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:249 -msgid "Load exported configuration file" -msgstr "Завантажити екÑпортований файл конфігурації" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Import Config from &project" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:251 -msgid "Load configuration from project file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Import Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:254 -msgid "Load presets from a bundle" -msgstr "Завантажити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· пакету" - -#: src/slic3r/GUI/MainFrame.cpp:256 -msgid "&Import" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export &G-code" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:259 -msgid "Export current plate as G-code" -msgstr "ЕкÑпорт поточної плаÑтини Ñк G-код" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export plate as &STL" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:262 -msgid "Export current plate as STL" -msgstr "ЕкÑпорт поточної плаÑтини Ñк STL" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export plate as &AMF" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:264 -msgid "Export current plate as AMF" -msgstr "ЕкÑпорт поточної плаÑтини Ñк AMF" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export &Config" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:267 -msgid "Export current configuration to file" -msgstr "ЕкÑпортувати поточну конфігурацію в файл" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export Config &Bundle" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:269 -msgid "Export all presets to file" -msgstr "ЕкÑпортувати вÑÑ– Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ файл" - -#: src/slic3r/GUI/MainFrame.cpp:271 -msgid "&Export" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:277 -msgid "Slice a file into a G-code" -msgstr "Ðарізати файл у G-код" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Quick Slice and Save As" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:283 -msgid "Slice a file into a G-code, save as" -msgstr "Ðарізати файл у G-код, зберегти Ñк" - -#: src/slic3r/GUI/MainFrame.cpp:289 -msgid "Repeat Last Quick Slice" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "(Re)Slice &Now" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:297 -msgid "Start new slicing process" -msgstr "Почати новий Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð°Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "&Repair STL file" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:300 -msgid "Automatically repair an STL file" -msgstr "Ðвтоматично відновити Ñк STL-файл" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "&Quit" -msgstr "Вихід" - -#: src/slic3r/GUI/MainFrame.cpp:303 -msgid "Quit Slic3r" -msgstr "Вийти зі Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "&Select all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:321 -msgid "Selects all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "&Delete selected" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:324 -msgid "Deletes the current selection" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Delete &all" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:326 -msgid "Deletes all objects" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "&Plater Tab" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:339 -msgid "Show the plater" -msgstr "Показати plater" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "P&rint Settings Tab" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:346 -msgid "Show the print settings" -msgstr "Показати параметри друку" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "&Filament Settings Tab" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:348 -msgid "Show the filament settings" -msgstr "Показати параметри філаменту" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Print&er Settings Tab" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:350 -msgid "Show the printer settings" -msgstr "Показати параметри принтеру" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "3&D" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:354 -msgid "Show the 3D editing view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Pre&view" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:356 -msgid "Show the 3D slices preview" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Print &Host Upload Queue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:377 -msgid "Display the Print Host Upload Queue window" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "&Iso" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "Вид Iso" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "З&верху" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "Вид зверху" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "З&низу" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "Вид знизу" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "С&переду" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "Вид Ñпереду" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "З&заду" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "Вид ззаду" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "З &лівого боку" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "Вид з лівого боку" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "З &правого боку" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "Вид з правого боку" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "Відкрити Ñторінку Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ñ–Ð² Prusa3D у Ñвоєму браузері" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "Відкрити Ñторінку релізів Prusa Edition у Ñвоєму браузері" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "Веб-Ñайт Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "Відкрити Ñторінку Slic3r у Ñвоєму браузері" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "ПоÑібник до Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "Відкрити Ñторінку поÑібнику до Slic3r у Ñвоєму браузері" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "Показати інформацію про ÑиÑтему" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "Повідомити про проблему на Slic3r Prusa Edition" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "&Про Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "Показати діалог Про Slic3r" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "Файл" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" -msgstr "Вікно" - -#: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" -msgstr "Вид" - -#: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" -msgstr "Допомога" - -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "Вибрати файл Ð´Ð»Ñ Ð½Ð°Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ (STL/OBJ/AMF/3MF/PRUSA):" - -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." -msgstr "Ðемає попередньо нарізаного файлу." - -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" -msgstr "Помилка" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "Попередньо нарізаний файл (" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." -msgstr ") не знайдено." - -#: src/slic3r/GUI/MainFrame.cpp:493 -msgid "File Not Found" -msgstr "Файл не знайдено" - -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 -msgid "Save " -msgstr "Зберегти " - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "SVG" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid "G-code" -msgstr "G-код" - -#: src/slic3r/GUI/MainFrame.cpp:531 -msgid " file as:" -msgstr " файл Ñк:" - -#: src/slic3r/GUI/MainFrame.cpp:548 -msgid "Save zip file as:" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Slicing" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:560 -msgid "Processing " -msgstr "Обробка " - -#: src/slic3r/GUI/MainFrame.cpp:583 -msgid " was successfully sliced." -msgstr " був уÑпішно нарізаний." - -#: src/slic3r/GUI/MainFrame.cpp:585 -msgid "Slicing Done!" -msgstr "ÐÐ°Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾!" - -#: src/slic3r/GUI/MainFrame.cpp:600 -msgid "Select the STL file to repair:" -msgstr "Вибрати STL-файл Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ:" - -#: src/slic3r/GUI/MainFrame.cpp:614 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "Зберегти OBJ-файл (менш Ñхильний координувати помилки, ніж STL) Ñк:" - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Your file was repaired." -msgstr "Ваш файл було відновлено." - -#: src/slic3r/GUI/MainFrame.cpp:629 -msgid "Repair" -msgstr "Відновити" - -#: src/slic3r/GUI/MainFrame.cpp:643 -msgid "Save configuration as:" -msgstr "Зберегти конфігурацію Ñк:" - -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 -msgid "Select configuration to load:" -msgstr "Вибрати конфігурацію Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ:" - -#: src/slic3r/GUI/MainFrame.cpp:700 -msgid "Save presets bundle as:" -msgstr "Зберегти набір налаштувань Ñк:" - -#: src/slic3r/GUI/MainFrame.cpp:751 -#, c-format -msgid "%d presets successfully imported." -msgstr "%d налаштувань уÑпішно імпортовано." - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r error" -msgstr "" - -#: src/slic3r/GUI/MsgDialog.cpp:66 -msgid "Slic3r has encountered an error" -msgstr "" - -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "Інфо" - -#: src/slic3r/GUI/Plater.cpp:126 -msgid "Volume" -msgstr "ОбÑÑг" - -#: src/slic3r/GUI/Plater.cpp:127 -msgid "Facets" -msgstr "Грані" - -#: src/slic3r/GUI/Plater.cpp:128 -msgid "Materials" -msgstr "Матеріали" - -#: src/slic3r/GUI/Plater.cpp:131 -msgid "Manifold" -msgstr "РізноманіттÑ" - -#: src/slic3r/GUI/Plater.cpp:174 -msgid "Sliced Info" -msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð· нарізаннÑ" - -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 -msgid "Used Filament (m)" -msgstr "ВикориÑтано філаметну (м)" - -#: src/slic3r/GUI/Plater.cpp:194 -msgid "Used Filament (mm³)" -msgstr "ВикориÑтано філаметну (мм³)" - -#: src/slic3r/GUI/Plater.cpp:195 -msgid "Used Filament (g)" -msgstr "ВикориÑтано філаметну (г)" - -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 -msgid "Cost" -msgstr "ВартіÑть" - -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 -msgid "Estimated printing time" -msgstr "Приблизний Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ" - -#: src/slic3r/GUI/Plater.cpp:198 -msgid "Number of tool changes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:364 -msgid "Select what kind of support do you need" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "Жодне" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 -msgid "Support on build plate only" -msgstr "Підтримка тільки на збірній плаÑтині" - -#: src/slic3r/GUI/Plater.cpp:367 -msgid "Everywhere" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 -msgid "Brim" -msgstr "Край" - -#: src/slic3r/GUI/Plater.cpp:381 -msgid "This flag enables the brim that will be printed around each object on the first layer." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:390 -msgid "Purging volumes" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:556 -msgid "Print settings" -msgstr "Параметри друку" - -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 -msgid "Filament" -msgstr "Філамент" - -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 -msgid "SLA print" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 -msgid "SLA material" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:560 -msgid "Printer" -msgstr "Принтер" - -#: src/slic3r/GUI/Plater.cpp:588 -msgid "Send to printer" -msgstr "ÐадіÑлати на принтер" - -#: src/slic3r/GUI/Plater.cpp:607 -msgid "Slice now" -msgstr "Ðарізати зараз" - -#: src/slic3r/GUI/Plater.cpp:787 -#, c-format -msgid "%d (%d shells)" -msgstr "%d (%d оболонок)" - -#: src/slic3r/GUI/Plater.cpp:792 -#, c-format -msgid "Auto-repaired (%d errors)" -msgstr "Ðвтоматичне Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ (%d помилок)" - -#: src/slic3r/GUI/Plater.cpp:795 -#, c-format -msgid "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d facets reversed, %d backwards edges" -msgstr "вироджено %d грані, виправлено %d країв, вилучено %d грані, додано %d грані, змінено %d грані, повернуто %d країв" - -#: src/slic3r/GUI/Plater.cpp:805 -msgid "Yes" -msgstr "Так" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 -msgid "wipe tower" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:855 -msgid "normal mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:859 -msgid "silent mode" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1304 -msgid "Loading" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1314 -#, c-format -msgid "Processing input file %s\n" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1366 -msgid "" -"This file contains several objects positioned at multiple heights. Instead of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" -"Цей файл міÑтить кілька об'єктів, розташованих на декількох виÑотах. ЗаміÑть того, щоб розглÑдати Ñ—Ñ… Ñк кілька об'єктів, чи потрібно розглÑнути\n" -"цей файл Ñк єдиний об'єкт, що має декілька чаÑтин?\n" - -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 -msgid "Multi-part object detected" -msgstr "ВиÑвлено об'єкт, що ÑкладаєтьÑÑ Ð· кількох чаÑтин" - -#: src/slic3r/GUI/Plater.cpp:1388 -#, c-format -msgid "You can't to add the object(s) from %s because of one or some of them is(are) multi-part" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1408 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" -"До мульти-матеріального принтеру завантажено кілька об'єктів.\n" -"ЗаміÑть того, щоб розглÑдати Ñ—Ñ… Ñк кілька об'єктів, чи потрібно розглÑнути\n" -"ці файл Ñк єдиний об'єкт, що має декілька чаÑтин?\n" - -#: src/slic3r/GUI/Plater.cpp:1424 -msgid "Loaded" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1492 -msgid "Your object appears to be too large, so it was automatically scaled down to fit your print bed." -msgstr "Ваш об'єкт видавÑÑ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ великим, тому він автоматично зменшивÑÑ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾ до вашої полотна друку." - -#: src/slic3r/GUI/Plater.cpp:1493 -msgid "Object too large?" -msgstr "Об'єкт занадто великий?" - -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1538 -msgid "Save file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1702 -msgid "Arranging canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1705 -msgid "Arranging" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1736 -msgid "Could not arrange model objects! Some geometries may be invalid." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1740 -msgid "Arranging done." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1782 -msgid "Orientation search canceled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1787 -msgid "Searching for optimal orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1797 -msgid "Orientation found." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1818 -msgid "The selected object can't be split because it contains more than one volume/material." -msgstr "Вибраний об'єкт не можна розділити, оÑкільки міÑтить більше одного об'єму/матеріалу." - -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "Ðа даний Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑÑ Ñ–Ð½ÑˆÐ¸Ð¹ екÑпорт." - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "ЕкÑпортувати не вдалоÑÑ" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" -msgstr "Видалити" - -#: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" -msgstr "Видалити вибраний об'єкт" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Increase copies" -msgstr "Збільшити копії" - -#: src/slic3r/GUI/Plater.cpp:2349 -msgid "Place one more copy of the selected object" -msgstr "Розташувати ще одну копію обраного об'єкта" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Decrease copies" -msgstr "Зменшити копії" - -#: src/slic3r/GUI/Plater.cpp:2351 -msgid "Remove one copy of the selected object" -msgstr "Вилучіть одну копію обраного об'єкта" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Set number of copies" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2353 -msgid "Change the number of copies of the selected object" -msgstr "Змінити кількіÑть копій обраного об'єкта" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload from Disk" -msgstr "Перезавантажити з диÑка" - -#: src/slic3r/GUI/Plater.cpp:2363 -msgid "Reload the selected file from Disk" -msgstr "Перезавантажити вибраний файл із диÑка" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "ЕкÑпортувати цей окремий об'єкт Ñк STL-файл" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Along X axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2375 -msgid "Mirror the selected object along the X axis" -msgstr "Віддзеркалити виділений об'єкт уздовж оÑÑ– Ð¥" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Along Y axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2377 -msgid "Mirror the selected object along the Y axis" -msgstr "Віддзеркалити виділений об'єкт уздовж оÑÑ– Y" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Along Z axis" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2379 -msgid "Mirror the selected object along the Z axis" -msgstr "Віддзеркалити виділений об'єкт уздовж оÑÑ– Z" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror" -msgstr "Віддзеркалити" - -#: src/slic3r/GUI/Plater.cpp:2382 -msgid "Mirror the selected object" -msgstr "Віддзеркалити виділений об'єкт" - -#: src/slic3r/GUI/Plater.cpp:2400 -msgid "To objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 -msgid "Split the selected object into individual objects" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 -msgid "To parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 -msgid "Split the selected object into individual sub-parts" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 -msgid "Split" -msgstr "Розділити" - -#: src/slic3r/GUI/Plater.cpp:2405 -msgid "Split the selected object" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize orientation" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2435 -msgid "Optimize the rotation of the object for better print results." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save G-code file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2845 -#, c-format -msgid "STL file exported to %s" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2861 -#, c-format -msgid "AMF file exported to %s" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2864 -#, c-format -msgid "Error exporting AMF file %s" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2891 -#, c-format -msgid "3MF file exported to %s" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2894 -#, c-format -msgid "Error exporting 3MF file %s" -msgstr "" - -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 -msgid "General" -msgstr "Загальне" - -#: src/slic3r/GUI/Preferences.cpp:34 -msgid "Remember output directory" -msgstr "Пам'Ñтати вихідний каталог" - -#: src/slic3r/GUI/Preferences.cpp:36 -msgid "If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files." -msgstr "Якщо вибрано, Slic3r запропонує оÑтанню вихідну директорію заміÑть тої, що вказана у вхідному файлі." - -#: src/slic3r/GUI/Preferences.cpp:42 -msgid "Auto-center parts" -msgstr "Ðвтоцентрувати чаÑтини" - -#: src/slic3r/GUI/Preferences.cpp:44 -msgid "If this is enabled, Slic3r will auto-center objects around the print bed center." -msgstr "Якщо вибрано, Slic3r автоматично орієнтує об'єкти навколо центру друку." - -#: src/slic3r/GUI/Preferences.cpp:50 -msgid "Background processing" -msgstr "Фонова обробка" - -#: src/slic3r/GUI/Preferences.cpp:52 -msgid "If this is enabled, Slic3r will pre-process objects as soon as they're loaded in order to save time when exporting G-code." -msgstr "Якщо вибрано, Slic3r буде попередньо оброблÑти об'єкти, Ñк тільки вони будуть завантажені, щоб заощадити Ñ‡Ð°Ñ Ð¿Ñ€Ð¸ екÑпорті G-коду." - -#: src/slic3r/GUI/Preferences.cpp:74 -msgid "Suppress \" - default - \" presets" -msgstr "Заборонити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ \"- за замовчуваннÑм -\"" - -#: src/slic3r/GUI/Preferences.cpp:76 -msgid "Suppress \" - default - \" presets in the Print / Filament / Printer selections once there are any other valid presets available." -msgstr "Заборонити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ \"- за замовчуваннÑм -\" у параметрах Друк / Філамент / Принтер, Ñкщо доÑтупні інші діючі налаштуваннÑ." - -#: src/slic3r/GUI/Preferences.cpp:82 -msgid "Show incompatible print and filament presets" -msgstr "Показувати неÑуміÑні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ€ÑƒÐºÑƒ та філаменту" - -#: src/slic3r/GUI/Preferences.cpp:84 -msgid "When checked, the print and filament presets are shown in the preset editor even if they are marked as incompatible with the active printer" -msgstr "Якщо вибрано, Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ€ÑƒÐºÑƒ та філаменту відображаютьÑÑ Ñƒ ÑпиÑку налаштувань, навіть Ñкщо вони позначені Ñк неÑуміÑні з активним принтером" - -#: src/slic3r/GUI/Preferences.cpp:90 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "ВикориÑтовувати заÑтарілий OpenGL 1.1 рендеринг" - -#: src/slic3r/GUI/Preferences.cpp:92 -msgid "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may try to check this checkbox. This will disable the layer height editing and anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "Якщо у Ð²Ð°Ñ Ð²Ð¸Ð½Ð¸ÐºÐ°ÑŽÑ‚ÑŒ проблеми з візуалізацією, Ñпричинені помилковим драйвером OpenGL 2.0, Ñпробуйте вибрати цю опцію. Це призведе до Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñоти шару та згладжуваннÑ, тому краще оновити графічний драйвер." - -#: src/slic3r/GUI/Preferences.cpp:115 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "З метою ефективноÑті зміни, Вам потрібно буде перезапуÑтити Slic3r." - -#: src/slic3r/GUI/Preset.cpp:170 -msgid "modified" -msgstr "модифікований" - -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 -msgid "System presets" -msgstr "СиÑтемні налаштуваннÑ" - -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 -msgid "User presets" -msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" - -#: src/slic3r/GUI/Preset.cpp:1157 -msgid "filament" -msgstr "" - -#: src/slic3r/GUI/PresetHints.cpp:28 -#, c-format -msgid "If estimated layer time is below ~%ds, fan will run at %d%% and print speed will be reduced so that no less than %ds are spent on that layer (however, speed will never be reduced below %dmm/s)." -msgstr "Якщо запланований Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ шару нижче ~%dÑ, вентилÑтор буде працювати на%d%%, Ñ– швидкіÑть друку буде зменшена, так що на цей шар витрачаєтьÑÑ Ð½Ðµ менше %dÑ (однак швидкіÑть ніколи не зменшитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ %d mm/s) ." - -#: src/slic3r/GUI/PresetHints.cpp:32 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a proportionally decreasing speed between %d%% and %d%%." -msgstr "" -"\n" -"Якщо запланований Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ шару більше, але вÑе ще нижче ~%dÑ, вентилÑтор буде працювати з пропорційно зменшуваною швидкіÑтю між %d%% та %d%%." - -#: src/slic3r/GUI/PresetHints.cpp:36 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" -"\n" -"Під Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ інших шарів вентилÑтор " - -#: src/slic3r/GUI/PresetHints.cpp:38 -msgid "Fan " -msgstr "ВентилÑтор " - -#: src/slic3r/GUI/PresetHints.cpp:43 -#, c-format -msgid "will always run at %d%% " -msgstr "буде завжди працювати на %d%% " - -#: src/slic3r/GUI/PresetHints.cpp:46 -#, c-format -msgid "except for the first %d layers" -msgstr "за винÑтком перших %d шарів" - -#: src/slic3r/GUI/PresetHints.cpp:50 -msgid "except for the first layer" -msgstr "за винÑтком першого шару" - -#: src/slic3r/GUI/PresetHints.cpp:52 -msgid "will be turned off." -msgstr "буде вимкнено." - -#: src/slic3r/GUI/PresetHints.cpp:153 -msgid "external perimeters" -msgstr "зовнішні периметри" - -#: src/slic3r/GUI/PresetHints.cpp:162 -msgid "perimeters" -msgstr "периметри" - -#: src/slic3r/GUI/PresetHints.cpp:171 -msgid "infill" -msgstr "наповненнÑ" - -#: src/slic3r/GUI/PresetHints.cpp:181 -msgid "solid infill" -msgstr "Ñуцільне наповненнÑ" - -#: src/slic3r/GUI/PresetHints.cpp:189 -msgid "top solid infill" -msgstr "верхній Ñуцільне наповненнÑ" - -#: src/slic3r/GUI/PresetHints.cpp:200 -msgid "support" -msgstr "підтримка" - -#: src/slic3r/GUI/PresetHints.cpp:210 -msgid "support interface" -msgstr "Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "First layer volumetric" -msgstr "Об'єм першого шару" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Bridging volumetric" -msgstr "Об'єм моÑтів" - -#: src/slic3r/GUI/PresetHints.cpp:216 -msgid "Volumetric" -msgstr "Об'ємний" - -#: src/slic3r/GUI/PresetHints.cpp:217 -msgid " flow rate is maximized " -msgstr " швидкіÑть потоку макÑимізуєтьÑÑ " - -#: src/slic3r/GUI/PresetHints.cpp:220 -msgid "by the print profile maximum" -msgstr "за профілем друку макÑимум" - -#: src/slic3r/GUI/PresetHints.cpp:221 -msgid "when printing " -msgstr "коли друкуємо " - -#: src/slic3r/GUI/PresetHints.cpp:222 -msgid " with a volumetric rate " -msgstr " з об'ємною швидкіÑтю " - -#: src/slic3r/GUI/PresetHints.cpp:226 -#, c-format -msgid "%3.2f mm³/s" -msgstr "%3.2f мм³/Ñ" - -#: src/slic3r/GUI/PresetHints.cpp:228 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr " при швидкоÑті філаменту %3.2f мм/Ñ." - -#: src/slic3r/GUI/PresetHints.cpp:247 -msgid "Recommended object thin wall thickness: Not available due to invalid layer height." -msgstr "Рекомендований об'єкт товщиною тонкої Ñтінки: ÐедоÑтупний через невірне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñоти шару." - -#: src/slic3r/GUI/PresetHints.cpp:264 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "Рекомендована товщина Ñтінки Ð´Ð»Ñ Ð²Ð¸Ñоти шару %.2f та " - -#: src/slic3r/GUI/PresetHints.cpp:271 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "%d Ñ€Ñдків: %.2lf мм" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Send G-Code to printer host" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 -msgid "Upload to Printer Host with the following filename:" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 -msgid "Start printing after upload" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 -msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 -msgid "Cancel selected" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 -msgid "Show error message" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 -msgid "Enqueued" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 -msgid "Uploading" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 -msgid "Completed" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 -msgid "Error uploading to print host:" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:23 -msgid "NO RAMMING AT ALL" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:76 -msgid "Time" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 -msgid "s" -msgstr "" - -#: src/slic3r/GUI/RammingChart.cpp:81 -msgid "Volumetric speed" -msgstr "" - -#: src/slic3r/GUI/SysInfoDialog.cpp:40 -msgid "Slic3r Prusa Edition - System Information" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 -msgid "Compatible printers" -msgstr "СуміÑні принтери" - -#: src/slic3r/GUI/Tab.cpp:50 -msgid "Select the printers this profile is compatible with." -msgstr "Оберіть принтери, ÑуміÑні з цим профілем." - -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 -msgid "Compatible print profiles" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:56 -msgid "Select the print profiles this profile is compatible with." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:118 -msgid "Save current " -msgstr "Зберегти поточний " - -#: src/slic3r/GUI/Tab.cpp:119 -msgid "Delete this preset" -msgstr "Видалити це налаштуваннÑ" - -#: src/slic3r/GUI/Tab.cpp:131 -msgid "" -"Hover the cursor over buttons to find more information \n" -"or click this button." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:824 -msgid "It's a default preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:825 -msgid "It's a system preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:826 -msgid "Current preset is inherited from " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:831 -msgid "It can't be deleted or modified. " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:832 -msgid "Any modifications should be saved as a new preset inherited from this one. " -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:833 -msgid "To do that please specify a new name for the preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:837 -msgid "Additional information:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:843 -msgid "printer model" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:851 -msgid "default print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:854 -msgid "default filament profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:868 -msgid "default SLA material profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:872 -msgid "default SLA print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 -msgid "Layers and perimeters" -msgstr "Шари та периметри" - -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 -msgid "Layer height" -msgstr "ВиÑота шару" - -#: src/slic3r/GUI/Tab.cpp:924 -msgid "Vertical shells" -msgstr "Вертикальні оболонки" - -#: src/slic3r/GUI/Tab.cpp:935 -msgid "Horizontal shells" -msgstr "Горизонтальні оболонки" - -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 -msgid "Solid layers" -msgstr "Суцільні шари" - -#: src/slic3r/GUI/Tab.cpp:941 -msgid "Quality (slower slicing)" -msgstr "ЯкіÑть (повільне нарізаннÑ)" - -#: src/slic3r/GUI/Tab.cpp:958 -msgid "Reducing printing time" -msgstr "Ð—Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу друку" - -#: src/slic3r/GUI/Tab.cpp:970 -msgid "Skirt and brim" -msgstr "ÐŸÐ»Ñ–Ð½Ñ‚ÑƒÑ Ñ‚Ð° край" - -#: src/slic3r/GUI/Tab.cpp:987 -msgid "Raft" -msgstr "Пліт" - -#: src/slic3r/GUI/Tab.cpp:991 -msgid "Options for support material and raft" -msgstr "Варіанти Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ матеріалу та плоту" - -#: src/slic3r/GUI/Tab.cpp:1006 -msgid "Speed for print moves" -msgstr "ШвидкіÑть друкарÑьких рухів" - -#: src/slic3r/GUI/Tab.cpp:1018 -msgid "Speed for non-print moves" -msgstr "ШвидкіÑть недрукарÑьких рухів" - -#: src/slic3r/GUI/Tab.cpp:1021 -msgid "Modifiers" -msgstr "Модифікатори" - -#: src/slic3r/GUI/Tab.cpp:1024 -msgid "Acceleration control (advanced)" -msgstr "Контроль приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ (розширений)" - -#: src/slic3r/GUI/Tab.cpp:1031 -msgid "Autospeed (advanced)" -msgstr "Ðвтоматична швидкіÑть (розширена)" - -#: src/slic3r/GUI/Tab.cpp:1037 -msgid "Multiple Extruders" -msgstr "Кілька екÑтрудерів" - -#: src/slic3r/GUI/Tab.cpp:1045 -msgid "Ooze prevention" -msgstr "Профілактика проÑочуваннÑ" - -#: src/slic3r/GUI/Tab.cpp:1062 -msgid "Extrusion width" -msgstr "Ширина екÑтрузії" - -#: src/slic3r/GUI/Tab.cpp:1072 -msgid "Overlap" -msgstr "ПерекриттÑ" - -#: src/slic3r/GUI/Tab.cpp:1075 -msgid "Flow" -msgstr "Потік" - -#: src/slic3r/GUI/Tab.cpp:1078 -msgid "Other" -msgstr "Інше" - -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 -msgid "Output options" -msgstr "Параметри виводу" - -#: src/slic3r/GUI/Tab.cpp:1086 -msgid "Sequential printing" -msgstr "ПоÑлідовне друкуваннÑ" - -#: src/slic3r/GUI/Tab.cpp:1088 -msgid "Extruder clearance (mm)" -msgstr "Розмір екÑтрудера (мм)" - -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 -msgid "Output file" -msgstr "Вихідний файл" - -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 -msgid "Post-processing scripts" -msgstr "Скрипти поÑÑ‚-обробки" - -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 -msgid "Notes" -msgstr "Примітки" - -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 -msgid "Dependencies" -msgstr "ЗалежноÑті" - -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 -msgid "Profile dependencies" -msgstr "ЗалежноÑті профілю" - -#: src/slic3r/GUI/Tab.cpp:1161 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" -"Режим Ñпіральної вази вимагає:\n" -"- один периметр\n" -"- немає верхніх щільних шарів\n" -"- 0% щільніÑть заповненнÑ\n" -"- немає підтримуючого матеріалу\n" -"- не забезпечує товщини вертикальної оболонки\n" -"\n" -"Чи потрібно змінити ці налаштуваннÑ, щоб увімкнути режим Спіральної вази?" - -#: src/slic3r/GUI/Tab.cpp:1168 -msgid "Spiral Vase" -msgstr "Спіральна ваза" - -#: src/slic3r/GUI/Tab.cpp:1191 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool change.\n" -"(both support_material_extruder and support_material_interface_extruder need to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" -"Вичіщуюча веж в даний Ñ‡Ð°Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ” лише нерозчинну підтримку\n" -"Ñкщо вони друкуютьÑÑ Ð· поточним екÑтрудером, не запуÑкаючи зміну інÑтрументу.\n" -"(обидва Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ support_material_extruder Ñ– support_material_interface_extruder повинні бути вÑтановлені на 0).\n" -"\n" -"Чи потрібно коригувати ці налаштуваннÑ, щоб увімкнути вичіщуючу веж?" - -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 -msgid "Wipe Tower" -msgstr "Вичіщуюча веж" - -#: src/slic3r/GUI/Tab.cpp:1209 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" -"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб Вичіщуюча веж працювала з розчинними підтримками, шари підтримки\n" -"повинні бути Ñинхронізовані з шаром об'єкта.\n" -"\n" -"Чи потрібно Ñинхронізувати шари підтримки, щоб увімкнути вичіщуючу веж?" - -#: src/slic3r/GUI/Tab.cpp:1227 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" -"Підтримка працює краще, Ñкщо ввімкнено таку функцію:\n" -"- ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ð¸ÑÑчих периметрів(перемичок)\n" -"\n" -"Чи потрібно змінити ці Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸?" - -#: src/slic3r/GUI/Tab.cpp:1230 -msgid "Support Generator" -msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸" - -#: src/slic3r/GUI/Tab.cpp:1272 -msgid "The " -msgstr "Шаблон Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ " - -#: src/slic3r/GUI/Tab.cpp:1272 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" -" не підтримуєтьÑÑ Ð½Ð° 100% щільноÑті.\n" -"\n" -"Чи потрібно змінити його на Rectilinear шаблон заповненнÑ?" - -#: src/slic3r/GUI/Tab.cpp:1388 -msgid "Temperature " -msgstr "Температура " - -#: src/slic3r/GUI/Tab.cpp:1394 -msgid "Bed" -msgstr "Полотно" - -#: src/slic3r/GUI/Tab.cpp:1399 -msgid "Cooling" -msgstr "ОхолодженнÑ" - -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 -msgid "Enable" -msgstr "Увімкнути" - -#: src/slic3r/GUI/Tab.cpp:1411 -msgid "Fan settings" -msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÐ½Ñ‚Ð¸Ð»Ñтора" - -#: src/slic3r/GUI/Tab.cpp:1412 -msgid "Fan speed" -msgstr "ШвидкіÑть вентилÑтора" - -#: src/slic3r/GUI/Tab.cpp:1420 -msgid "Cooling thresholds" -msgstr "Пороги охолодженнÑ" - -#: src/slic3r/GUI/Tab.cpp:1426 -msgid "Filament properties" -msgstr "ВлаÑтивоÑті філаменту" - -#: src/slic3r/GUI/Tab.cpp:1430 -msgid "Print speed override" -msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті друку" - -#: src/slic3r/GUI/Tab.cpp:1440 -msgid "Toolchange parameters with single extruder MM printers" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1455 -msgid "Ramming settings" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 -msgid "Custom G-code" -msgstr "КориÑтувацький G-код" - -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 -msgid "Start G-code" -msgstr "Початок G-коду" - -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 -msgid "End G-code" -msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ G-коду" - -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 -msgid " Browse " -msgstr " ПереглÑнути " - -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 -msgid "Test" -msgstr "Перевірити" - -#: src/slic3r/GUI/Tab.cpp:1615 -msgid "Could not get a valid Printer Host reference" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 -msgid "Success!" -msgstr "УÑпіх!" - -#: src/slic3r/GUI/Tab.cpp:1636 -msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1648 -msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1649 -msgid "Open CA certificate file" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1676 -msgid "" -"HTTPS CA File:\n" -"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate Store or Keychain.\n" -"\tTo use a custom CA file, please import your CA file into Certificate Store / Keychain." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 -msgid "Size and coordinates" -msgstr "Розмір Ñ– координати" - -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 -msgid " Set " -msgstr " Ð’Ñтановити " - -#: src/slic3r/GUI/Tab.cpp:1740 -msgid "Capabilities" -msgstr "МожливоÑті" - -#: src/slic3r/GUI/Tab.cpp:1745 -msgid "Number of extruders of the printer." -msgstr "КількіÑть екÑтрудерів у принтері." - -#: src/slic3r/GUI/Tab.cpp:1773 -msgid "USB/Serial connection" -msgstr "USB/поÑлідовне з'єднаннÑ" - -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 -msgid "Serial port" -msgstr "ПоÑлідовний порт" - -#: src/slic3r/GUI/Tab.cpp:1779 -msgid "Rescan serial ports" -msgstr "Сканувати ще раз поÑлідовні порти" - -#: src/slic3r/GUI/Tab.cpp:1801 -msgid "Connection to printer works correctly." -msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ принтера працює коректно." - -#: src/slic3r/GUI/Tab.cpp:1804 -msgid "Connection failed." -msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ." - -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 -msgid "Print Host upload" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 -msgid "Before layer change G-code" -msgstr "G-код перед зміною шару" - -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 -msgid "After layer change G-code" -msgstr "G-код піÑÐ»Ñ Ð·Ð¼Ñ–Ð½Ð¸ шару" - -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 -msgid "Tool change G-code" -msgstr "G-код зміни інÑтрументу" - -#: src/slic3r/GUI/Tab.cpp:1877 -msgid "Between objects G-code (for sequential printing)" -msgstr "G-код між об'єктами (Ð´Ð»Ñ Ð¿Ð¾Ñлідовного друку)" - -#: src/slic3r/GUI/Tab.cpp:1938 -msgid "Display" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 -msgid "Corrections" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 -msgid "Machine limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2025 -msgid "Values in this column are for Full Power mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2026 -msgid "Full Power" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2031 -msgid "Values in this column are for Silent mode" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2032 -msgid "Silent" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2040 -msgid "Maximum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2045 -msgid "Maximum accelerations" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2052 -msgid "Jerk limits" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2057 -msgid "Minimum feedrates" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 -msgid "Single extruder MM setup" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2104 -msgid "Single extruder multimaterial parameters" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 -#, c-format -msgid "Extruder %d" -msgstr "ЕкÑтрудер %d" - -#: src/slic3r/GUI/Tab.cpp:2125 -msgid "Layer height limits" -msgstr "Межі виÑоти шару" - -#: src/slic3r/GUI/Tab.cpp:2130 -msgid "Position (for multi-extruder printers)" -msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ (Ð´Ð»Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸-екÑтрудерних принтерів)" - -#: src/slic3r/GUI/Tab.cpp:2133 -msgid "Retraction" -msgstr "ПерериваннÑ" - -#: src/slic3r/GUI/Tab.cpp:2136 -msgid "Only lift Z" -msgstr "Межі піднÑÑ‚Ñ‚Ñ Z" - -#: src/slic3r/GUI/Tab.cpp:2149 -msgid "Retraction when tool is disabled (advanced settings for multi-extruder setups)" -msgstr "ÐŸÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ відключенні інÑтрумента (додаткові Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸-екÑтрудерів)" - -#: src/slic3r/GUI/Tab.cpp:2153 -msgid "Preview" -msgstr "Попередній переглÑд" - -#: src/slic3r/GUI/Tab.cpp:2284 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" -"Параметр «ОчиÑтити» недоÑтупний при викориÑтанні режиму програмного перериваннÑ.\n" -"\n" -"Відключити його Ð´Ð»Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ перериваннÑ?" - -#: src/slic3r/GUI/Tab.cpp:2286 -msgid "Firmware Retraction" -msgstr "Програмне перериваннÑ" - -#: src/slic3r/GUI/Tab.cpp:2565 -#, c-format -msgid "Default preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2566 -#, c-format -msgid "Preset (%s)" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2583 -msgid "has the following unsaved changes:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2586 -msgid "is not compatible with printer" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2587 -msgid "is not compatible with print profile" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2589 -msgid "and it has the following unsaved changes:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2592 -msgid "Discard changes and continue anyway?" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2593 -msgid "Unsaved Changes" -msgstr "Ðезбережені зміни" - -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 -msgid "Please check your object list before preset changing." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2699 -msgid "The supplied name is empty. It can't be saved." -msgstr "Ðадане ім'Ñ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ”. Ðе вдаєтьÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸." - -#: src/slic3r/GUI/Tab.cpp:2704 -msgid "Cannot overwrite a system profile." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2708 -msgid "Cannot overwrite an external profile." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "remove" -msgstr "переміÑтити" - -#: src/slic3r/GUI/Tab.cpp:2734 -msgid "delete" -msgstr "видалити" - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid "Are you sure you want to " -msgstr "Ви впевнені, що хочете " - -#: src/slic3r/GUI/Tab.cpp:2735 -msgid " the selected preset?" -msgstr " вибране налаштуваннÑ?" - -#: src/slic3r/GUI/Tab.cpp:2736 -msgid "Remove" -msgstr "ПереміÑтити" - -#: src/slic3r/GUI/Tab.cpp:2737 -msgid " Preset" -msgstr " ÐалаштуваннÑ" - -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "Ð’ÑÑ–" - -#: src/slic3r/GUI/Tab.cpp:2869 -msgid "LOCKED LOCK;indicates that the settings are the same as the system values for the current option group" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2872 -msgid "" -"UNLOCKED LOCK;indicates that some settings were changed and are not equal to the system values for the current option group.\n" -"Click the UNLOCKED LOCK icon to reset all settings for current option group to the system values." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2878 -msgid "" -"WHITE BULLET;for the left button: \tindicates a non-system preset,\n" -"for the right button: \tindicates that the settings hasn't been modified." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2882 -msgid "" -"BACK ARROW;indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" -"Click the BACK ARROW icon to reset all settings for the current option group to the last saved preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2908 -msgid "LOCKED LOCK icon indicates that the settings are the same as the system values for the current option group" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2910 -msgid "" -"UNLOCKED LOCK icon indicates that some settings were changed and are not equal to the system values for the current option group.\n" -"Click to reset all settings for current option group to the system values." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2913 -msgid "WHITE BULLET icon indicates a non system preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2916 -msgid "WHITE BULLET icon indicates that the settings are the same as in the last saved preset for the current option group." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2918 -msgid "" -"BACK ARROW icon indicates that the settings were changed and are not equal to the last saved preset for the current option group.\n" -"Click to reset all settings for the current option group to the last saved preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2924 -msgid "LOCKED LOCK icon indicates that the value is the same as the system value." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2925 -msgid "" -"UNLOCKED LOCK icon indicates that the value was changed and is not equal to the system value.\n" -"Click to reset current value to the system value." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2931 -msgid "WHITE BULLET icon indicates that the value is the same as in the last saved preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2932 -msgid "" -"BACK ARROW icon indicates that the value was changed and is not equal to the last saved preset.\n" -"Click to reset current value to the last saved preset." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3031 -msgid " as:" -msgstr " Ñк:" - -#: src/slic3r/GUI/Tab.cpp:3075 -msgid "the following postfix are not allowed:" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3079 -msgid "The supplied name is not available." -msgstr "Ðадане ім'Ñ Ð½ÐµÐ´Ñ–Ð¹Ñне." - -#: src/slic3r/GUI/Tab.cpp:3092 -msgid "Material" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 -msgid "Layers" -msgstr "Шари" - -#: src/slic3r/GUI/Tab.cpp:3098 -msgid "Exposure" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3183 -msgid "Support head" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3188 -msgid "Support pillar" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3196 -msgid "Connection of the support sticks and junctions" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:3200 -msgid "Automatic generation" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 -msgid "Print Settings" -msgstr "Параметри друку" - -#: src/slic3r/GUI/Tab.hpp:311 -msgid "Filament Settings" -msgstr "Параметри філаменту" - -#: src/slic3r/GUI/Tab.hpp:344 -msgid "Printer Settings" -msgstr "Параметри принтеру" - -#: src/slic3r/GUI/Tab.hpp:367 -msgid "Material Settings" -msgstr "" - -#: src/slic3r/GUI/Tab.hpp:393 -msgid "Save preset" -msgstr "Зберегти налаштуваннÑ" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "Update available" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:28 -msgid "New version of Slic3r PE is available" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:35 -msgid "To download, follow the link below." -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:42 -msgid "Current version:" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:44 -msgid "New version:" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:52 -msgid "Don't notify about new releases any more" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 -msgid "Configuration update" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:70 -msgid "Configuration update is available" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:73 -msgid "" -"Would you like to install it?\n" -"\n" -"Note that a full configuration snapshot will be created first. It can then be restored at any time should there be a problem with the new version.\n" -"\n" -"Updated configuration bundles:" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r incompatibility" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:109 -msgid "Slic3r configuration is incompatible" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:112 -msgid "" -"This version of Slic3r PE is not compatible with currently installed configuration bundles.\n" -"This probably happened as a result of running an older Slic3r PE after using a newer one.\n" -"\n" -"You may either exit Slic3r and try again with a newer version, or you may re-run the initial configuration. Doing so will create a backup snapshot of the existing configuration before installing files compatible with this Slic3r.\n" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:121 -#, c-format -msgid "This Slic3r PE version: %s" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:126 -msgid "Incompatible bundles:" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:142 -msgid "Exit Slic3r" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:145 -msgid "Re-configure" -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:166 -#, c-format -msgid "" -"Slic3r PE now uses an updated configuration structure.\n" -"\n" -"So called 'System presets' have been introduced, which hold the built-in default settings for various printers. These System presets cannot be modified, instead, users now may create their own presets inheriting settings from one of the System presets.\n" -"An inheriting preset may either inherit a particular value from its parent or override it with a customized value.\n" -"\n" -"Please proceed with the %s that follows to set up the new presets and to choose whether to enable automatic preset updates." -msgstr "" - -#: src/slic3r/GUI/UpdateDialogs.cpp:182 -msgid "For more information please visit our wiki page:" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 -msgid "Ramming customization" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 -msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n" -"\n" -"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 -msgid "Total ramming time" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 -msgid "Total rammed volume" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 -msgid "Ramming line width" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 -msgid "Ramming line spacing" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 -msgid "Wipe tower - Purging volume adjustment" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 -msgid "Here you can adjust required purging volume (mm³) for any given pair of tools." -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 -msgid "Extruder changed to" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 -msgid "unloaded" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 -msgid "loaded" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 -msgid "Tool #" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 -msgid "Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded." -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 -msgid "Volume to purge (mm³) when the filament is being" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 -msgid "From" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 -msgid "" -"Switching to simple settings will discard changes done in the advanced mode!\n" -"\n" -"Do you want to proceed?" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show simplified settings" -msgstr "" - -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 -msgid "Show advanced settings" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:65 -#, c-format -msgid "Mismatched type of print host: %s" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:80 -msgid "Connection to OctoPrint works correctly." -msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ OctoPrint працює правильно." - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Could not connect to OctoPrint" -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:86 -msgid "Note: OctoPrint version at least 1.1.0 is required." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:181 -msgid "Connection to Prusa SLA works correctly." -msgstr "" - -#: src/slic3r/Utils/OctoPrint.cpp:186 -msgid "Could not connect to Prusa SLA" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:571 -#, c-format -msgid "requires min. %s and max. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:576 -#, c-format -msgid "requires min. %s" -msgstr "" - -#: src/slic3r/Utils/PresetUpdater.cpp:578 -#, c-format -msgid "requires max. %s" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:235 -msgid "Failed loading the input model." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:248 -msgid "Mesh repair failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:263 -#: src/slic3r/Utils/FixModelByWin10.cpp:270 -#: src/slic3r/Utils/FixModelByWin10.cpp:302 -msgid "Saving mesh into the 3MF container failed." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:334 -msgid "Model fixing" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:335 -msgid "Exporting model..." -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:357 -msgid "Export of a temporary 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:372 -msgid "Import of the repaired 3mf file failed" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:375 -msgid "Model repair finished" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:379 -msgid "Model repair canceled" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -msgid "Model repaired successfully" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model Repair by the Netfabb service" -msgstr "" - -#: src/slic3r/Utils/FixModelByWin10.cpp:399 -msgid "Model repair failed: \n" -msgstr "" - -#: src/libslic3r/Print.cpp:1175 -msgid "All objects are outside of the print volume." -msgstr "" - -#: src/libslic3r/Print.cpp:1201 -msgid "Some objects are too close; your extruder will collide with them." -msgstr "" - -#: src/libslic3r/Print.cpp:1216 -msgid "Some objects are too tall and cannot be printed without extruder collisions." -msgstr "" - -#: src/libslic3r/Print.cpp:1226 -msgid "The Spiral Vase option can only be used when printing a single object." -msgstr "" - -#: src/libslic3r/Print.cpp:1228 -msgid "The Spiral Vase option can only be used when printing single material objects." -msgstr "" - -#: src/libslic3r/Print.cpp:1234 -msgid "All extruders must have the same diameter for single extruder multimaterial printer." -msgstr "" - -#: src/libslic3r/Print.cpp:1239 -msgid "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors." -msgstr "" - -#: src/libslic3r/Print.cpp:1241 -msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." -msgstr "" - -#: src/libslic3r/Print.cpp:1253 -msgid "The Wipe Tower is only supported for multiple objects if they have equal layer heigths" -msgstr "" - -#: src/libslic3r/Print.cpp:1255 -msgid "The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers" -msgstr "" - -#: src/libslic3r/Print.cpp:1257 -msgid "The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance" -msgstr "" - -#: src/libslic3r/Print.cpp:1259 -msgid "The Wipe Tower is only supported for multiple objects if they are sliced equally." -msgstr "" - -#: src/libslic3r/Print.cpp:1281 -msgid "The Wipe tower is only supported if all objects have the same layer height profile" -msgstr "" - -#: src/libslic3r/Print.cpp:1290 -msgid "The supplied settings will cause an empty print." -msgstr "" - -#: src/libslic3r/Print.cpp:1307 -msgid "One or more object were assigned an extruder that the printer does not have." -msgstr "" - -#: src/libslic3r/Print.cpp:1316 -msgid "Printing with multiple extruders of differing nozzle diameters. If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), all nozzles have to be of the same diameter." -msgstr "" - -#: src/libslic3r/Print.cpp:1324 -msgid "For the Wipe Tower to work with the soluble supports, the support layers need to be synchronized with the object layers." -msgstr "" - -#: src/libslic3r/Print.cpp:1328 -msgid "The Wipe Tower currently supports the non-soluble supports only if they are printed with the current extruder without triggering a tool change. (both support_material_extruder and support_material_interface_extruder need to be set to 0)." -msgstr "" - -#: src/libslic3r/Print.cpp:1335 -msgid "first_layer_height" -msgstr "" - -#: src/libslic3r/Print.cpp:1350 -msgid "First layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/Print.cpp:1354 -msgid "Layer height can't be greater than nozzle diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 -msgid "Printer technology" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:41 -msgid "Bed shape" -msgstr "Форма полотна" - -#: src/libslic3r/PrintConfig.cpp:48 -msgid "This setting controls the height (and thus the total number) of the slices/layers. Thinner layers give better accuracy but take more time to print." -msgstr "Цей параметр визначає виÑоту (Ñ–, таким чином, загальну кількіÑть) шарів. Тонкі шари забезпечують більшу точніÑть, але Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ потрібно більше чаÑу." - -#: src/libslic3r/PrintConfig.cpp:56 -msgid "Max print height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:57 -msgid "Set this to the maximum height that can be reached by your extruder while printing." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:73 -msgid "Avoid crossing perimeters" -msgstr "Уникати Ð¿ÐµÑ€ÐµÑ‚Ð¸Ð½Ð°Ð½Ð½Ñ Ð¿ÐµÑ€Ð¸Ð¼ÐµÑ‚Ñ€Ñ–Ð²" - -#: src/libslic3r/PrintConfig.cpp:74 -msgid "Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation." -msgstr "Оптимізуйте рухи переÑувань, щоб мінімізувати перетин периметрів. Ð’ оÑновному це кориÑно Ð´Ð»Ñ ÐµÐºÑтрудерів Bowden, Ñкі Ñтраждають від протіканнÑ. Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ ÑƒÐ¿Ð¾Ð²Ñ–Ð»ÑŒÐ½ÑŽÑ” Ñк друк, так Ñ– генерацію G-коду." - -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 -msgid "Other layers" -msgstr "Інші шари" - -#: src/libslic3r/PrintConfig.cpp:83 -msgid "Bed temperature for layers after the first one. Set this to zero to disable bed temperature control commands in the output." -msgstr "Температура полотна Ð´Ð»Ñ Ð¾Ñтанніх шарів піÑÐ»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾. УÑтановіть 0, щоб відключити команди ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¾ÑŽ полотна на виході." - -#: src/libslic3r/PrintConfig.cpp:86 -msgid "Bed temperature" -msgstr "Температура полотна" - -#: src/libslic3r/PrintConfig.cpp:93 -msgid "This custom code is inserted at every layer change, right before the Z move. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." -msgstr "Цей кориÑтувацький код вÑтавлÑєтьÑÑ Ð¿Ñ€Ð¸ кожній зміні шару перед початком Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Z. Зауважте, що ви можете викориÑтовувати змінні-заповнювачі Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r, а також [layer_num] Ñ– [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:104 -msgid "Between objects G-code" -msgstr "G-код між об'єктами" - -#: src/libslic3r/PrintConfig.cpp:105 -msgid "This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "Цей код вÑтавлÑєтьÑÑ Ð¼Ñ–Ð¶ об'єктами при викориÑтанні поÑлідовного друку. За замовчуваннÑм екÑтрудер Ñ– температура полотна ÑкидаютьÑÑ Ð·Ð° допомогою команди non-wait; однак, Ñкщо в цьому кориÑтувальному коді виÑвлÑютьÑÑ M104, M109, M140 або M190, Slic3r не додаватиме команди температури. Зверніть увагу, що ви можете викориÑтовувати змінні-заповнювачі Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r, то ж ви можете вÑтавити команду \"M109 S [first_layer_temperature]\" де завгодно." - -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "Ðижні" - -#: src/libslic3r/PrintConfig.cpp:116 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "КількіÑть Ñуцільних шарів, генерованих на нижніх поверхнÑÑ…." - -#: src/libslic3r/PrintConfig.cpp:118 -msgid "Bottom solid layers" -msgstr "Ðижні Ñуцільні шари" - -#: src/libslic3r/PrintConfig.cpp:123 -msgid "Bridge" -msgstr "МіÑÑ‚" - -#: src/libslic3r/PrintConfig.cpp:124 -msgid "This is the acceleration your printer will use for bridges. Set zero to disable acceleration control for bridges." -msgstr "Це приÑкореннÑ, Ñке ваш принтер викориÑтовуватиме Ð´Ð»Ñ Ð¼Ð¾Ñтів. Ð’Ñтановити 0, щоб відключити ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð¸ÑкореннÑм Ð´Ð»Ñ Ð¼Ð¾Ñтів." - -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 -msgid "mm/s²" -msgstr "мм/Ѳ" - -#: src/libslic3r/PrintConfig.cpp:133 -msgid "Bridging angle" -msgstr "Кут моÑта" - -#: src/libslic3r/PrintConfig.cpp:135 -msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for all bridges. Use 180° for zero angle." -msgstr "Зміна кута моÑту. Якщо вÑтановити на 0, кут моÑтів буде розрахований автоматично. Інакше передбачений кут буде викориÑтаний Ð´Ð»Ñ Ð²ÑÑ–Ñ… моÑтів. ВикориÑтовуйте 180° Ð´Ð»Ñ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ кута." - -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 -msgid "°" -msgstr "°" - -#: src/libslic3r/PrintConfig.cpp:145 -msgid "Bridges fan speed" -msgstr "ШвидкіÑть вентилÑтора Ð´Ð»Ñ Ð¼Ð¾Ñтів" - -#: src/libslic3r/PrintConfig.cpp:146 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "Ð¦Ñ ÑˆÐ²Ð¸Ð´ÐºÑ–Ñть вентилÑтора виконуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ–Ñ… моÑтів Ñ– виÑтупів." - -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 -msgid "%" -msgstr "%" - -#: src/libslic3r/PrintConfig.cpp:155 -msgid "Bridge flow ratio" -msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ð¼Ð¾Ñтового потоку" - -#: src/libslic3r/PrintConfig.cpp:157 -msgid "This factor affects the amount of plastic for bridging. You can decrease it slightly to pull the extrudates and prevent sagging, although default settings are usually good and you should experiment with cooling (use a fan) before tweaking this." -msgstr "Цей фактор впливає на кількіÑть плаÑтику Ð´Ð»Ñ Ð¼Ð¾Ñтів. Ви можете трохи зменшити його, щоб витÑгнути екÑтрудати та не допуÑтити провиÑаннÑ, хоча Ñтандартні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð²Ð¸Ñ‡Ð°Ð¹ добрі, тому ви маете по-екÑпериментувати з охолодженнÑм (викориÑтовуйте вентилÑтор), перш ніж Ñ—Ñ… налаштувати." - -#: src/libslic3r/PrintConfig.cpp:168 -msgid "Bridges" -msgstr "МоÑти" - -#: src/libslic3r/PrintConfig.cpp:170 -msgid "Speed for printing bridges." -msgstr "ШвидкіÑть друку моÑтів." - -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 -msgid "mm/s" -msgstr "мм/Ñ" - -#: src/libslic3r/PrintConfig.cpp:178 -msgid "Brim width" -msgstr "Ширина краю" - -#: src/libslic3r/PrintConfig.cpp:179 -msgid "Horizontal width of the brim that will be printed around each object on the first layer." -msgstr "Горизонтальна ширина краю, Ñка буде надрукована навколо кожного об'єкта на першому шарі." - -#: src/libslic3r/PrintConfig.cpp:187 -msgid "Clip multi-part objects" -msgstr "Обрізати об'єкти, що ÑкладаютьÑÑ Ð· кількох чаÑтин" - -#: src/libslic3r/PrintConfig.cpp:188 -msgid "When printing multi-material objects, this settings will make slic3r to clip the overlapping object parts one by the other (2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "Під Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ багатоматеріальних об'єктів ці Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼ÑƒÑˆÑƒÑŽÑ‚ÑŒ slic3r обрізати чаÑтини, що перекриваютьÑÑ Ð¾Ð´Ð¸Ð½ одною (друга чаÑтина буде обрізана першою, Ñ‚Ñ€ÐµÑ‚Ñ - першою та другою, тощо)." - -#: src/libslic3r/PrintConfig.cpp:196 -msgid "Colorprint height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:197 -msgid "Heights at which a filament change is to occur. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:207 -msgid "Compatible printers condition" -msgstr "Стан ÑуміÑних принтерів" - -#: src/libslic3r/PrintConfig.cpp:208 -msgid "A boolean expression using the configuration values of an active printer profile. If this expression evaluates to true, this profile is considered compatible with the active printer profile." -msgstr "Логічний вираз, що викориÑтовує Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ— активного профілю принтера. Якщо цей вираз оцінюєтьÑÑ Ñк Правда, цей профіль вважаєтьÑÑ ÑуміÑним з активним профілем принтера." - -#: src/libslic3r/PrintConfig.cpp:220 -msgid "Compatible print profiles condition" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:221 -msgid "A boolean expression using the configuration values of an active print profile. If this expression evaluates to true, this profile is considered compatible with the active print profile." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:235 -msgid "Complete individual objects" -msgstr "Закінчити окремі об'єкти" - -#: src/libslic3r/PrintConfig.cpp:236 -msgid "When printing multiple objects or copies, this feature will complete each object before moving onto next one (and starting it from its bottom layer). This feature is useful to avoid the risk of ruined prints. Slic3r should warn and prevent you from extruder collisions, but beware." -msgstr "Під Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ декількох об'єктів або копій Ñ†Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡Ð¸Ñ‚ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ об'єкту, перш ніж переходити до наÑтупного (Ñ– почине його з нижнього шару). Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ ÐºÐ¾Ñ€Ð¸Ñна Ð´Ð»Ñ ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ñ€Ð¸Ð·Ð¸ÐºÑƒ зіпÑованих відбитків. Slic3r має попередити та запобігти зіткненню екÑтрудера, але будьте обережні." - -#: src/libslic3r/PrintConfig.cpp:245 -msgid "Enable auto cooling" -msgstr "Увімкнути автоматичне охолодженнÑ" - -#: src/libslic3r/PrintConfig.cpp:246 -msgid "This flag enables the automatic cooling logic that adjusts print speed and fan speed according to layer printing time." -msgstr "Цей прапорець дозволÑÑ” автоматичну логіку охолодженнÑ, Ñка регулює швидкіÑть друку та швидкіÑть вентилÑції відповідно до чаÑу друку шару." - -#: src/libslic3r/PrintConfig.cpp:252 -msgid "Cooling tube position" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:253 -msgid "Distance of the center-point of the cooling tube from the extruder tip " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:261 -msgid "Cooling tube length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:262 -msgid "Length of the cooling tube to limit space for cooling moves inside it " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:271 -msgid "This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all." -msgstr "Це приÑкореннÑ, на Ñке переключитьÑÑ Ð²Ð°Ñˆ принтер піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк будуть викориÑтані конкретні визначені приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ (периметру / заповненнÑ). Ð’Ñтановити 0, щоб запобігти ÑкиданнÑм приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð·Ð°Ð³Ð°Ð»Ñ–." - -#: src/libslic3r/PrintConfig.cpp:281 -msgid "Default filament profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:282 -msgid "Default filament profile associated with the current printer profile. On selection of the current printer profile, this filament profile will be activated." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:287 -msgid "Default print profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 -msgid "Default print profile associated with the current printer profile. On selection of the current printer profile, this print profile will be activated." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:293 -msgid "Disable fan for the first" -msgstr "Вимкнути вентилÑтор Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾(их)" - -#: src/libslic3r/PrintConfig.cpp:294 -msgid "You can set this to a positive value to disable fan at all during the first layers, so that it does not make adhesion worse." -msgstr "Ви можете вÑтановити це позитивне значеннÑ, щоб взагалі вимкнути вентилÑтор протÑгом друку декількох перших шарів, щоб це не призвело до гіршого зчепленнÑ." - -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 -msgid "layers" -msgstr "шару(ів)" - -#: src/libslic3r/PrintConfig.cpp:304 -msgid "Don't support bridges" -msgstr "Ðе підтримувати моÑти" - -#: src/libslic3r/PrintConfig.cpp:306 -msgid "Experimental option for preventing support material from being generated under bridged areas." -msgstr "ЕкÑпериментальний варіант Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ ÑƒÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ допоміжного матеріалу в облаÑÑ‚ÑÑ… під моÑтами." - -#: src/libslic3r/PrintConfig.cpp:313 -msgid "Distance between copies" -msgstr "ВідÑтань між копіÑми" - -#: src/libslic3r/PrintConfig.cpp:314 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "ВідÑтань викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ñ‚ÐµÑ€Ñƒ." - -#: src/libslic3r/PrintConfig.cpp:322 -msgid "Elephant foot compensation" -msgstr "Ð—Ñ€Ñ–Ð²Ð½Ð¾Ð²Ð°Ð¶ÐµÐ½Ð½Ñ Ð¡Ñ‚Ð¾Ð¿Ð¸ Ñлона" - -#: src/libslic3r/PrintConfig.cpp:324 -msgid "The first layer will be shrunk in the XY plane by the configured value to compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "Перший шар буде зменшено в площині XY завдÑки налаштованому значенню, щоб компенÑувати ефект Ðоги Слона Ð´Ð»Ñ 1-го шару." - -#: src/libslic3r/PrintConfig.cpp:334 -msgid "This end procedure is inserted at the end of the output file. Note that you can use placeholder variables for all Slic3r settings." -msgstr "Ð¦Ñ ÐºÑ–Ð½Ñ†ÐµÐ²Ð° процедура вÑтавлÑєтьÑÑ Ð² кінці вихідного файлу. Зауважте, що ви можете викориÑтовувати заповнювачі змінних Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r." - -#: src/libslic3r/PrintConfig.cpp:345 -msgid "This end procedure is inserted at the end of the output file, before the printer end gcode. Note that you can use placeholder variables for all Slic3r settings. If you have multiple extruders, the gcode is processed in extruder order." -msgstr "Ð¦Ñ ÐºÑ–Ð½Ñ†ÐµÐ²Ð° процедура вÑтавлÑєтьÑÑ Ð² кінці вихідного файлу перед кінцевим кодом принтера. Зауважте, що ви можете викориÑтовувати заповнювачі змінних Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r. Якщо у Ð²Ð°Ñ Ñ” кілька екÑтрудерів, G-code оброблÑєтьÑÑ Ð² порÑдку екÑтрудерів." - -#: src/libslic3r/PrintConfig.cpp:356 -msgid "Ensure vertical shell thickness" -msgstr "Перевірте товщину вертикальної оболонки" - -#: src/libslic3r/PrintConfig.cpp:358 -msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)." -msgstr "Додайте Ñуцільні наповнювачі Ð±Ñ–Ð»Ñ Ð½Ð°Ñ…Ð¸Ð»ÐµÐ½Ð¸Ñ… поверхонь, щоб гарантувати товщину вертикальної оболонки (верхній Ñ– нижній Ñуцільні шари)." - -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "Верхній/нижній шаблон наповненнÑ" - -#: src/libslic3r/PrintConfig.cpp:367 -msgid "Fill pattern for top/bottom infill. This only affects the external visible layer, and not its adjacent solid shells." -msgstr "Шаблон Ð´Ð»Ñ Ð²ÐµÑ€Ñ…Ð½ÑŒÐ¾Ð³Ð¾/нижнього наповненнÑ. Це впливає лише на зовнішній видимий шар, а не на ÑуÑідні Ñуцільні оболонки." - -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 -msgid "Rectilinear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 -msgid "Concentric" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 -msgid "Hilbert Curve" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 -msgid "Archimedean Chords" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 -msgid "Octagram Spiral" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 -msgid "External perimeters" -msgstr "Зовнішні периметри" - -#: src/libslic3r/PrintConfig.cpp:388 -msgid "Set this to a non-zero value to set a manual extrusion width for external perimeters. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%), it will be computed over layer height." -msgstr "Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼, щоб вÑтановити ручну ширину екÑтрузії Ð´Ð»Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… периметрів. Якщо залишити 0, ширина екÑтрузії за замовчуваннÑм буде викориÑтана, Ñкщо вÑтановлено, інакше буде викориÑтано 1,125 x діаметр Ñопла. Якщо він виражений у відÑотках (наприклад, 200%), він буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 -msgid "mm or % (leave 0 for default)" -msgstr "мм або % (залиште 0 за замовчаннÑм)" - -#: src/libslic3r/PrintConfig.cpp:399 -msgid "This separate setting will affect the speed of external perimeters (the visible ones). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "Цей окремий параметр впливає на швидкіÑть зовнішніх периметрів (видимих). Якщо вона виражена у відÑотках (наприклад: 80%), вона буде розрахована на Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті периметра вище. Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ викориÑтаннÑ." - -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 -msgid "mm/s or %" -msgstr "мм/Ñ Ð°Ð±Ð¾ %" - -#: src/libslic3r/PrintConfig.cpp:409 -msgid "External perimeters first" -msgstr "Спочатку зовнішні периметри" - -#: src/libslic3r/PrintConfig.cpp:411 -msgid "Print contour perimeters from the outermost one to the innermost one instead of the default inverse order." -msgstr "Друкувати контури периметра від найзовнішнього до найвнутрішнього, заміÑть інверÑного порÑдку за замовчаннÑм." - -#: src/libslic3r/PrintConfig.cpp:418 -msgid "Extra perimeters if needed" -msgstr "Додаткові периметри, Ñкщо необхідно" - -#: src/libslic3r/PrintConfig.cpp:420 -#, no-c-format -msgid "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps adding perimeters, until more than 70% of the loop immediately above is supported." -msgstr "За необхідноÑті додайте периметри, щоб уникнути прогалин у похилих Ñтінах. Slic3r продовжує додавати периметри, поки підтримуєтьÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ 70% петель безпоÑередньо вище." - -#: src/libslic3r/PrintConfig.cpp:431 -msgid "The extruder to use (unless more specific extruder settings are specified). This value overrides perimeter and infill extruders, but not the support extruders." -msgstr "ВикориÑтовуваний екÑтрудер (Ñкщо не вказано більш конкретні параметри екÑтрудера). Це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” екÑтрудери периметра та наповнювача, але не екÑтрудери підтримки." - -#: src/libslic3r/PrintConfig.cpp:444 -msgid "Set this to the vertical distance between your nozzle tip and (usually) the X carriage rods. In other words, this is the height of the clearance cylinder around your extruder, and it represents the maximum depth the extruder can peek before colliding with other printed objects." -msgstr "УÑтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñк вертикальну відÑтань між наконечником Ñопла та (звичайно) шатунами X каретки. Іншими Ñловами, це виÑота циліндра Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð½Ð°Ð²ÐºÐ¾Ð»Ð¾ вашого екÑтрудера, Ñ– це ÑвлÑÑ” Ñобою макÑимальну глибину, Ñку екÑтрудер може розглÑдати до Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½Ð½Ñ Ð· іншими друкованими предметами." - -#: src/libslic3r/PrintConfig.cpp:455 -msgid "Radius" -msgstr "РадіуÑ" - -#: src/libslic3r/PrintConfig.cpp:456 -msgid "Set this to the clearance radius around your extruder. If the extruder is not centered, choose the largest value for safety. This setting is used to check for collisions and to display the graphical preview in the plater." -msgstr "УÑтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñк Ñ€Ð°Ð´Ñ–ÑƒÑ Ð·Ð°Ð·Ð¾Ñ€Ñ–Ð² навколо вашої екÑтрудера. Якщо екÑтрудер не центрований, Ð´Ð»Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ виберіть найбільше Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ . Цей параметр викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ зіткнень та Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ попереднього переглÑду в панелі." - -#: src/libslic3r/PrintConfig.cpp:467 -msgid "Extruder Color" -msgstr "Колір екÑтрудера" - -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "Ð¦Ñ Ð¾Ð¿Ñ†Ñ–Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ у інтерфейÑÑ– Slic3r Ñк візуальна допомога." - -#: src/libslic3r/PrintConfig.cpp:475 -msgid "Extruder offset" -msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐµÐºÑтрудеру" - -#: src/libslic3r/PrintConfig.cpp:476 -msgid "If your firmware doesn't handle the extruder displacement you need the G-code to take it into account. This option lets you specify the displacement of each extruder with respect to the first one. It expects positive coordinates (they will be subtracted from the XY coordinate)." -msgstr "Якщо ваша прошивка не ÑправлÑєтьÑÑ Ð· витіÑненнÑм екÑтрудера, вам потрібен G-код, щоб врахувати це. Ð¦Ñ Ð¾Ð¿Ñ†Ñ–Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑ” вказати Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ екÑтрудера відноÑно першого. Він очікує позитивних координат (вони будуть віднімані від координати XY)." - -#: src/libslic3r/PrintConfig.cpp:486 -msgid "Extrusion axis" -msgstr "ОÑÑŒ екÑтрузії" - -#: src/libslic3r/PrintConfig.cpp:487 -msgid "Use this option to set the axis letter associated to your printer's extruder (usually E but some printers use A)." -msgstr "ВикориÑтовуйте цю опцію, щоб вÑтановити букву оÑей, пов'Ñзану з екÑтрудером принтера (зазвичай E, але деÑкі принтери викориÑтовують A)." - -#: src/libslic3r/PrintConfig.cpp:493 -msgid "Extrusion multiplier" -msgstr "Коефіцієнт екÑтрузії" - -#: src/libslic3r/PrintConfig.cpp:494 -msgid "This factor changes the amount of flow proportionally. You may need to tweak this setting to get nice surface finish and correct single wall widths. Usual values are between 0.9 and 1.1. If you think you need to change this more, check filament diameter and your firmware E steps." -msgstr "Цей фактор пропорційно змінює величину потоку. Вам може знадобитиÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ цей параметр, щоб отримати хорошу обробку поверхні та правильно визначити ширину однієї Ñтіни. Звичайні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ - від 0,9 до 1,1. Якщо ви вважаєте, що його потрібно більше змінити, перевірте діаметр нитки та E кроки прошивки ." - -#: src/libslic3r/PrintConfig.cpp:503 -msgid "Default extrusion width" -msgstr "Ширина екÑтрузії за замовчаннÑм" - -#: src/libslic3r/PrintConfig.cpp:505 -msgid "Set this to a non-zero value to allow a manual extrusion width. If left to zero, Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for perimeter extrusion width, infill extrusion width etc). If expressed as percentage (for example: 230%), it will be computed over layer height." -msgstr "УÑтановіть ненульове значеннÑ, щоб дозволити ручне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð¸ екÑтрузії. Якщо залишити Ñк 0, Slic3r отримує ширину екÑтрузії від діаметра Ñопла (див. Підказки Ð´Ð»Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð¸ екÑтрузії периметру, ширини екÑтрузії наповнювача тощо). Якщо Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð°Ð¶ÐµÐ½Ðµ у відÑотках (наприклад: 230%), воно буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:509 -msgid "mm or % (leave 0 for auto)" -msgstr "мм або % (залиште 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ð±Ñ‡Ð¸ÑленнÑ)" - -#: src/libslic3r/PrintConfig.cpp:515 -msgid "Keep fan always on" -msgstr "Тримайте вентилÑтор завжди" - -#: src/libslic3r/PrintConfig.cpp:516 -msgid "If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "Якщо Ñ†Ñ Ð¾Ð¿Ñ†Ñ–Ñ Ð²Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð°, вентилÑтор ніколи не буде відключений Ñ– буде триматиÑÑ, Ñк мінімум, на мінімальній швидкоÑті. КориÑно Ð´Ð»Ñ PLA, шкідливо Ð´Ð»Ñ ABS." - -#: src/libslic3r/PrintConfig.cpp:522 -msgid "Enable fan if layer print time is below" -msgstr "Увімкнути вентилÑтор, Ñкщо Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ шару нижче" - -#: src/libslic3r/PrintConfig.cpp:523 -msgid "If layer print time is estimated below this number of seconds, fan will be enabled and its speed will be calculated by interpolating the minimum and maximum speeds." -msgstr "Якщо Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ шару оцінюєтьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ цієї кількоÑті Ñекунд, вентилÑтор буде активований, а його швидкіÑть буде розрахована шлÑхом інтерполÑції мінімальної та макÑимальної швидкоÑті." - -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 -msgid "approximate seconds" -msgstr "приблизні Ñекунди" - -#: src/libslic3r/PrintConfig.cpp:534 -msgid "Color" -msgstr "Колір" - -#: src/libslic3r/PrintConfig.cpp:541 -msgid "Filament notes" -msgstr "Примітки до філаменту" - -#: src/libslic3r/PrintConfig.cpp:542 -msgid "You can put your notes regarding the filament here." -msgstr "Тут ви можете поміÑтити Ñвої нотатки щодо філаменту." - -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 -msgid "Max volumetric speed" -msgstr "МакÑимальна об'ємна швидкіÑть" - -#: src/libslic3r/PrintConfig.cpp:552 -msgid "Maximum volumetric speed allowed for this filament. Limits the maximum volumetric speed of a print to the minimum of print and filament volumetric speed. Set to zero for no limit." -msgstr "МакÑимальна об'ємна швидкіÑть, припуÑтима Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ філаметну. Обмежує макÑимальну об'ємну швидкіÑть друку до мінімуму об'ємної швидкоÑті друку та філаметну. Ð’Ñтановити 0 Ð´Ð»Ñ Ð²Ñ–Ð´ÑутноÑті обмежень." - -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 -msgid "mm³/s" -msgstr "мм³/Ñ" - -#: src/libslic3r/PrintConfig.cpp:562 -msgid "Loading speed" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:563 -msgid "Speed used for loading the filament on the wipe tower. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:571 -msgid "Loading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:572 -msgid "Speed used at the very beginning of loading phase. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:580 -msgid "Unloading speed" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:581 -msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming). " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:590 -msgid "Unloading speed at the start" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:591 -msgid "Speed used for unloading the tip of the filament immediately after ramming. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:599 -msgid "Delay after unloading" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:600 -msgid "Time to wait after the filament is unloaded. May help to get reliable toolchanges with flexible materials that may need more time to shrink to original dimensions. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:610 -msgid "Number of cooling moves" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:611 -msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:620 -msgid "Speed of the first cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:621 -msgid "Cooling moves are gradually accelerating beginning at this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:629 -msgid "Minimal purge on wipe tower" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:630 -msgid "After a tool change, the exact position of the newly loaded filament inside the nozzle may not be known, and the filament pressure is likely not yet stable. Before purging the print head into an infill or a sacrificial object, Slic3r will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:635 -msgid "mm³" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:641 -msgid "Speed of the last cooling move" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:642 -msgid "Cooling moves are gradually accelerating towards this speed. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:650 -msgid "Filament load time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:651 -msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:659 -msgid "Ramming parameters" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:660 -msgid "This string is edited by RammingDialog and contains ramming specific parameters " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:667 -msgid "Filament unload time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:668 -msgid "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:677 -msgid "Enter your filament diameter here. Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average." -msgstr "Введіть тут діаметр Ñвого філаменту. Ðеобхідна виÑока точніÑть, тому викориÑтовуйте Ñуматор Ñ– виконайте декілька вимірювань вздовж нитки, потім обчиÑліть Ñереднє значеннÑ." - -#: src/libslic3r/PrintConfig.cpp:685 -msgid "Density" -msgstr "ЩільніÑть" - -#: src/libslic3r/PrintConfig.cpp:686 -msgid "Enter your filament density here. This is only for statistical information. A decent way is to weigh a known length of filament and compute the ratio of the length to volume. Better is to calculate the volume directly through displacement." -msgstr "Введіть тут щільніÑть Ñвого філаменту. Це тільки Ð´Ð»Ñ ÑтатиÑтичної інформації. ПриÑтойним ÑпоÑобом Ñ” Ð·Ð²Ð°Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ— довжини нитки та обчиÑÐ»ÐµÐ½Ð½Ñ ÑÐ¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ до обÑÑгу. Краще обчиÑлити об'єм безпоÑередньо через зміщеннÑ." - -#: src/libslic3r/PrintConfig.cpp:689 -msgid "g/cm³" -msgstr "г/Ñм³" - -#: src/libslic3r/PrintConfig.cpp:695 -msgid "Filament type" -msgstr "Тип філаменту" - -#: src/libslic3r/PrintConfig.cpp:696 -msgid "The filament material type for use in custom G-codes." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:712 -msgid "Soluble material" -msgstr "Розчинний матеріал" - -#: src/libslic3r/PrintConfig.cpp:713 -msgid "Soluble material is most likely used for a soluble support." -msgstr "Розчинний матеріал переважно викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ‡Ð¸Ð½Ð½Ð¾Ñ— підтримки." - -#: src/libslic3r/PrintConfig.cpp:719 -msgid "Enter your filament cost per kg here. This is only for statistical information." -msgstr "Введіть тут Ñвою вартіÑть філаменту на кг. Це тільки Ð´Ð»Ñ ÑтатиÑтичної інформації." - -#: src/libslic3r/PrintConfig.cpp:720 -msgid "money/kg" -msgstr "грошових одиниць/кг" - -#: src/libslic3r/PrintConfig.cpp:729 -msgid "Fill angle" -msgstr "Кут наповненнÑ" - -#: src/libslic3r/PrintConfig.cpp:731 -msgid "Default base angle for infill orientation. Cross-hatching will be applied to this. Bridges will be infilled using the best direction Slic3r can detect, so this setting does not affect them." -msgstr "ОÑновний кут орієнтації Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ буде заÑтоÑовуватиÑÑ ÐºÑ€Ð¾Ñ-штрих. МоÑти будуть заповнені, викориÑтовуючи найкращий напрÑм, Ñкий може виÑвити Slic3r, тому цей параметр на них не впливає." - -#: src/libslic3r/PrintConfig.cpp:744 -msgid "Fill density" -msgstr "ЩільніÑть заповненнÑ" - -#: src/libslic3r/PrintConfig.cpp:746 -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "ЩільніÑть внутрішнього заповненнÑ, виражена в діапазоні 0% - 100%." - -#: src/libslic3r/PrintConfig.cpp:782 -msgid "Fill pattern" -msgstr "Шаблон заповненнÑ" - -#: src/libslic3r/PrintConfig.cpp:784 -msgid "Fill pattern for general low-density infill." -msgstr "Шаблон Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ низько-швидкіÑного наповненнÑ." - -#: src/libslic3r/PrintConfig.cpp:801 -msgid "Grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:802 -msgid "Triangles" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:803 -msgid "Stars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:804 -msgid "Cubic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:805 -msgid "Line" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 -msgid "Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:808 -msgid "3D Honeycomb" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:809 -msgid "Gyroid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 -msgid "First layer" -msgstr "Перший шар" - -#: src/libslic3r/PrintConfig.cpp:817 -msgid "This is the acceleration your printer will use for first layer. Set zero to disable acceleration control for first layer." -msgstr "Це приÑкореннÑ, Ñке ваш принтер викориÑтовуватиме Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ шару. Ð’Ñтановити 0, щоб вимкнути ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ÑкореннÑм Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ шару." - -#: src/libslic3r/PrintConfig.cpp:827 -msgid "Heated build plate temperature for the first layer. Set this to zero to disable bed temperature control commands in the output." -msgstr "Температура підігрітої збірної плаÑтини Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ шару. УÑтановіть 0, щоб відключити команди ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¾ÑŽ полотна на виході." - -#: src/libslic3r/PrintConfig.cpp:837 -msgid "Set this to a non-zero value to set a manual extrusion width for first layer. You can use this to force fatter extrudates for better adhesion. If expressed as percentage (for example 120%) it will be computed over first layer height. If set to zero, it will use the default extrusion width." -msgstr "Ð’Ñтановіть ненульове значеннÑ, щоб вÑтановити ручну ширину екÑтрузії Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ шару. Ви можете викориÑтовувати цю опцію з метою навмиÑного пом'ÑÐºÑˆÐµÐ½Ð½Ñ ÐµÐºÑтрудату Ð´Ð»Ñ ÐºÑ€Ð°Ñ‰Ð¾Ñ— адгезії. Якщо вона виражена у відÑотках (наприклад, 120%), вона буде обчиÑлена за виÑотою першого шару. Якщо вÑтановлено на 0 - викориÑтовуватиме Ñтандартну ширину екÑтрузії." - -#: src/libslic3r/PrintConfig.cpp:848 -msgid "First layer height" -msgstr "ВиÑота першого шару" - -#: src/libslic3r/PrintConfig.cpp:850 -msgid "When printing with very low layer heights, you might still want to print a thicker bottom layer to improve adhesion and tolerance for non perfect build plates. This can be expressed as an absolute value or as a percentage (for example: 150%) over the default layer height." -msgstr "Під Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ з дуже низькими виÑотами шару ви, можливо, вÑе-таки захочете надрукувати більш товÑтий нижній шар, щоб поліпшити адгезію та толерантніÑть до невідповідних збірних плаÑтин. Можна виразити Ñк абÑолютне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñк відÑоток (наприклад: 150%) по виÑоті шару за замовчуваннÑм." - -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 -msgid "mm or %" -msgstr "мм або %" - -#: src/libslic3r/PrintConfig.cpp:860 -msgid "First layer speed" -msgstr "ШвидкіÑть першого шару" - -#: src/libslic3r/PrintConfig.cpp:861 -msgid "If expressed as absolute value in mm/s, this speed will be applied to all the print moves of the first layer, regardless of their type. If expressed as a percentage (for example: 40%) it will scale the default speeds." -msgstr "Якщо вона виражена в абÑолютному значенні в мм/Ñ, Ñ†Ñ ÑˆÐ²Ð¸Ð´ÐºÑ–Ñть буде заÑтоÑована до вÑÑ–Ñ… рухів друку першого шару незалежно від Ñ—Ñ… типу. Якщо вона виражена у відÑотках (наприклад: 40%), вона буде маÑштабувати швидкіÑть за замовчуваннÑм." - -#: src/libslic3r/PrintConfig.cpp:872 -msgid "Extruder temperature for first layer. If you want to control temperature manually during print, set this to zero to disable temperature control commands in the output file." -msgstr "Температура екÑтрудеру Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ шару. Якщо ви хочете контролювати температуру вручну під Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ, вÑтановіть 0, щоб вимкнути команди ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¾ÑŽ у вихідному файлі." - -#: src/libslic3r/PrintConfig.cpp:882 -msgid "Speed for filling small gaps using short zigzag moves. Keep this reasonably low to avoid too much shaking and resonance issues. Set zero to disable gaps filling." -msgstr "ШвидкіÑть Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½ÐµÐ²ÐµÐ»Ð¸ÐºÐ¸Ñ… розривів за допомогою коротких зигзагоподібних рухів. ДотримуйтеÑÑŒ доÑтатньо низьких значень, щоб уникнути надмірних потрÑÑінь та резонанÑних проблем. Ð’Ñтановити 0, щоб вимкнути Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ñ–Ð²." - -#: src/libslic3r/PrintConfig.cpp:890 -msgid "Verbose G-code" -msgstr "Докладний G-код" - -#: src/libslic3r/PrintConfig.cpp:891 -msgid "Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down." -msgstr "Увімкніть Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ файлу G-коду, причому кожен Ñ€Ñдок поÑÑнюєтьÑÑ Ð¾Ð¿Ð¸Ñовим текÑтом. Якщо ви друкуєте з SD-карти, додаткова вага файлу може призвеÑти до ÑƒÐ¿Ð¾Ð²Ñ–Ð»ÑŒÐ½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸." - -#: src/libslic3r/PrintConfig.cpp:899 -msgid "G-code flavor" -msgstr "ОÑобливіÑть G-коду" - -#: src/libslic3r/PrintConfig.cpp:900 -msgid "Some G/M-code commands, including temperature control and others, are not universal. Set this option to your printer's firmware to get a compatible output. The \"No extrusion\" flavor prevents Slic3r from exporting any extrusion value at all." -msgstr "ДеÑкі команди G/M-коду, включаючи контроль температури тощо, не Ñ” універÑальними. УÑтановіть цей параметр на прошивку принтера, щоб отримати ÑуміÑний вихід. \"ВідÑутніÑть екÑтрузії\" не дозволÑÑ” Slic3r екÑпортувати будь-Ñке Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐºÑтрузії." - -#: src/libslic3r/PrintConfig.cpp:924 -msgid "No extrusion" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:929 -msgid "High extruder current on filament swap" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:930 -msgid "It may be beneficial to increase the extruder motor current during the filament exchange sequence to allow for rapid ramming feed rates and to overcome resistance when loading a filament with an ugly shaped tip." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:939 -msgid "This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill." -msgstr "Це приÑкореннÑ, Ñке ваш принтер викориÑтовуватиме Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ. Ð’Ñтановити 0, щоб вимкнути регулÑтор приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ." - -#: src/libslic3r/PrintConfig.cpp:948 -msgid "Combine infill every" -msgstr "Об'єднати Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ñ–" - -#: src/libslic3r/PrintConfig.cpp:950 -msgid "This feature allows to combine infill and speed up your print by extruding thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑ” поєднувати Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° приÑкорити друк, екÑтрудуючи більш товÑті шари наповненнÑ, зберігаючи тонкі периметри, а отже, Ñ– точніÑтю." - -#: src/libslic3r/PrintConfig.cpp:954 -msgid "Combine infill every n layers" -msgstr "Об'єднати Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ñ– n шарів" - -#: src/libslic3r/PrintConfig.cpp:960 -msgid "Infill extruder" -msgstr "Ðаповнювач екÑтрудера" - -#: src/libslic3r/PrintConfig.cpp:962 -msgid "The extruder to use when printing infill." -msgstr "ЕкÑтрудер, викориÑтовуваний під Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ наповненнÑ." - -#: src/libslic3r/PrintConfig.cpp:971 -msgid "Set this to a non-zero value to set a manual extrusion width for infill. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. You may want to use fatter extrudates to speed up the infill and make your parts stronger. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñк ненульове, щоб вÑтановити ручну ширину екÑтрузії Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ. Якщо залишити 0, ширина екÑтрузії за замовчуваннÑм буде викориÑтана, Ñкщо вÑтановлено, інакше буде викориÑтано 1,125 x діаметр Ñопла. Можливо, ви захочете викориÑтовувати більш товÑті екÑтруди, щоб приÑкорити Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° зміцнити Ñвої деталі. Якщо він виражений у відÑотках (наприклад, 90%), він буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:981 -msgid "Infill before perimeters" -msgstr "Ð—Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ периметрами" - -#: src/libslic3r/PrintConfig.cpp:982 -msgid "This option will switch the print order of perimeters and infill, making the latter first." -msgstr "За допомогою цього параметра можна буде змінити порÑдок друку периметрів та наповнювачів, зробивши оÑтаннє першим." - -#: src/libslic3r/PrintConfig.cpp:988 -msgid "Only infill where needed" -msgstr "Заповнити тільки там, де потрібно" - -#: src/libslic3r/PrintConfig.cpp:990 -msgid "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material). If enabled, slows down the G-code generation due to the multiple checks involved." -msgstr "Ð¦Ñ Ð¾Ð¿Ñ†Ñ–Ñ Ð¾Ð±Ð¼ÐµÐ¶Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð°Ñтей, фактично необхідних Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñтель (це буде діÑти Ñк внутрішній матеріал підтримки). Якщо це ввімкнено, ÑповільнюєтьÑÑ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ G-коду через декілька перевірок." - -#: src/libslic3r/PrintConfig.cpp:998 -msgid "Infill/perimeters overlap" -msgstr "ÐŸÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ/периметрів" - -#: src/libslic3r/PrintConfig.cpp:1000 -msgid "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width." -msgstr "Цей параметр заÑтоÑовує додаткове Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¼Ñ–Ð¶ заповненнÑм та периметрами Ð´Ð»Ñ ÐºÑ€Ð°Ñ‰Ð¾Ð³Ð¾ зчепленнÑ. Теоретично це не повинно бути необхідним, але люфт може Ñпричинити розриви. Якщо він виражений у відÑотках (приклад: 15%), його розраховують за шириною екÑтрузії по периметру." - -#: src/libslic3r/PrintConfig.cpp:1012 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "ШвидкіÑть друку внутрішнього заповненнÑ. Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ обчиÑленнÑ." - -#: src/libslic3r/PrintConfig.cpp:1020 -msgid "Inherits profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1021 -msgid "Name of the profile, from which this profile inherits." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1032 -msgid "Interface shells" -msgstr "ІнтерфейÑні оболонки" - -#: src/libslic3r/PrintConfig.cpp:1033 -msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material." -msgstr "ПримуÑове ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñуцільної оболонки між Ñуміжними матеріалами/обÑÑгами. КориÑно Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ з багатьма екÑтрудерами з напівпрозорими матеріалами або ручним розчинним матеріалом Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸." - -#: src/libslic3r/PrintConfig.cpp:1043 -msgid "This custom code is inserted at every layer change, right after the Z move and before the extruder moves to the first layer point. Note that you can use placeholder variables for all Slic3r settings as well as [layer_num] and [layer_z]." -msgstr "Цей кориÑтувацький код вÑтавлÑєтьÑÑ Ð¿Ñ€Ð¸ кожній зміні шару відразу піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Z Ñ– перед тим, Ñк екÑтрудер переміÑтитьÑÑ Ð´Ð¾ точки першого шару. Зауважте, що ви можете викориÑтовувати змінні-заповнювачі Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r, а також [layer_num] Ñ– [layer_z]." - -#: src/libslic3r/PrintConfig.cpp:1054 -msgid "Supports remaining times" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1055 -msgid "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals into the G-code to let the firmware show accurate remaining time. As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1063 -msgid "Supports silent mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1064 -msgid "Set silent mode for the G-code flavor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1087 -msgid "Maximum feedrate %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1089 -msgid "Maximum feedrate of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1097 -msgid "Maximum acceleration %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1099 -msgid "Maximum acceleration of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1107 -msgid "Maximum jerk %1%" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1109 -msgid "Maximum jerk of the %1% axis" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 -msgid "Minimum feedrate when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 -msgid "Minimum travel feedrate" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 -msgid "Maximum acceleration when extruding" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 -msgid "Maximum acceleration when retracting" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 -msgid "Max" -msgstr "МакÑимально" - -#: src/libslic3r/PrintConfig.cpp:1164 -msgid "This setting represents the maximum speed of your fan." -msgstr "Цей параметр відображає макÑимальну швидкіÑть вашого вентилÑтора." - -#: src/libslic3r/PrintConfig.cpp:1174 -#, no-c-format -msgid "This is the highest printable layer height for this extruder, used to cap the variable layer height and support layer height. Maximum recommended layer height is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "Це найбільша виÑота друкованого шару Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ екÑтрудера, що викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñоти змінного шару та виÑоти підтримуючого шару. МакÑимальна рекомендована виÑота шару Ñтановить 75% ширини екÑтрузії Ð´Ð»Ñ Ð´Ð¾ÑÑÐ³Ð½ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·ÑƒÐ¼Ð½Ð¾Ñ— міжшарової адгезії. Якщо вÑтановлено 0, виÑота шару обмежена 75% діаметра Ñопла." - -#: src/libslic3r/PrintConfig.cpp:1185 -msgid "Max print speed" -msgstr "МакÑимальна швидкіÑть друку" - -#: src/libslic3r/PrintConfig.cpp:1186 -msgid "When setting other speed settings to 0 Slic3r will autocalculate the optimal speed in order to keep constant extruder pressure. This experimental setting is used to set the highest print speed you want to allow." -msgstr "При вÑтановленні інших параметрів швидкоÑті до 0, Slic3r буде автоматично обчиÑлювати оптимальну швидкіÑть, щоб підтримувати поÑтійний тиÑк екÑтрудера. Цей екÑпериментальний параметр викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑимальної швидкоÑті друку, Ñку ви хочете дозволити." - -#: src/libslic3r/PrintConfig.cpp:1197 -msgid "This experimental setting is used to set the maximum volumetric speed your extruder supports." -msgstr "Цей екÑпериментальний параметр викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑимальної об'ємної швидкоÑті, Ñку підтримує екÑтрудер." - -#: src/libslic3r/PrintConfig.cpp:1206 -msgid "Max volumetric slope positive" -msgstr "МакÑимальний об'ємний нахил позитивний" - -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 -msgid "This experimental setting is used to limit the speed of change in extrusion rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "Цей екÑпериментальний параметр викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті зміни швидкоÑті екÑтрузії. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 1,8 мм³/Ѳ гарантує, що зміна швидкоÑті екÑтрузії 1,8 мм³/Ñ (ширина екÑтрузії 0,45 мм, виÑота екÑтрузії 0,2 мм, швидкіÑть подачі 20 мм/Ñ) до 5,4 мм³/Ñ (подача 60 мм/Ñ) займе принаймні 2 Ñекунди." - -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 -msgid "mm³/s²" -msgstr "мм³/Ѳ" - -#: src/libslic3r/PrintConfig.cpp:1218 -msgid "Max volumetric slope negative" -msgstr "МакÑимальний об'ємний Ñхил негативний" - -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 -msgid "Min" -msgstr "Мінімально" - -#: src/libslic3r/PrintConfig.cpp:1231 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "Цей параметр відповідає мінімальній ШІМ, на Ñкій повинен працювати ваш вентилÑтор." - -#: src/libslic3r/PrintConfig.cpp:1241 -msgid "This is the lowest printable layer height for this extruder and limits the resolution for variable layer height. Typical values are between 0.05 mm and 0.1 mm." -msgstr "Це найменша виÑота друкованого шару Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ екÑтрудера та обмежує роздільну здатніÑть Ð´Ð»Ñ Ð²Ð¸Ñоти змінного шару. Типові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ - від 0,05 мм до 0,1 мм." - -#: src/libslic3r/PrintConfig.cpp:1250 -msgid "Min print speed" -msgstr "Мінімальна швидкіÑть друку" - -#: src/libslic3r/PrintConfig.cpp:1251 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3r не буде маÑштабувати швидкіÑть нижче цієї швидкоÑті." - -#: src/libslic3r/PrintConfig.cpp:1259 -msgid "Minimal filament extrusion length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1260 -msgid "Generate no less than the number of skirt loops required to consume the specified amount of filament on the bottom layer. For multi-extruder machines, this minimum applies to each extruder." -msgstr "Створити не менше кількоÑті петель плінтуÑу, необхідних Ð´Ð»Ñ ÑÐ¿Ð¾Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— кількоÑті філаменту на нижньому шарі. Ð”Ð»Ñ Ð¼Ð°ÑˆÐ¸Ð½ із декількома екÑтрудерами цей мінімум заÑтоÑовуєтьÑÑ Ð´Ð¾ кожного екÑтрудера." - -#: src/libslic3r/PrintConfig.cpp:1270 -msgid "Configuration notes" -msgstr "Примітки до конфігурації" - -#: src/libslic3r/PrintConfig.cpp:1271 -msgid "You can put here your personal notes. This text will be added to the G-code header comments." -msgstr "Ви можете додати тут Ñвої оÑобиÑті примітки. Цей текÑÑ‚ буде додано до коментарів заголовка G-коду." - -#: src/libslic3r/PrintConfig.cpp:1281 -msgid "Nozzle diameter" -msgstr "Діаметр Ñопла" - -#: src/libslic3r/PrintConfig.cpp:1282 -msgid "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "Це діаметр Ñопла вашого екÑтрудера (наприклад: 0.5, 0.35 тощо)" - -#: src/libslic3r/PrintConfig.cpp:1288 -msgid "Host Type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1289 -msgid "Slic3r can upload G-code files to a printer host. This field must contain the kind of the host." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "Slic3r can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "Slic3r can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 -msgid "Only retract when crossing perimeters" -msgstr "Перервати тільки у разі перетину периметрів" - -#: src/libslic3r/PrintConfig.cpp:1326 -msgid "Disables retraction when the travel path does not exceed the upper layer's perimeters (and thus any ooze will be probably invisible)." -msgstr "Вимикає перериваннÑ, коли шлÑÑ… не перевищує периметри верхніх шарів (Ñ–, таким чином, будь-Ñкий розрÑдник буде, мабуть, невидимим)." - -#: src/libslic3r/PrintConfig.cpp:1334 -msgid "This option will drop the temperature of the inactive extruders to prevent oozing. It will enable a tall skirt automatically and move extruders outside such skirt when changing temperatures." -msgstr "Цей параметр знизить температуру неактивних екÑтрудерів, щоб запобігти протіканню. Це дозволить автоматично ввімкнути виÑокий Ð¿Ð»Ñ–Ð½Ñ‚ÑƒÑ Ñ‚Ð° переміÑтить екÑтрудери за межі такого плінтуÑа у разі зміни температури." - -#: src/libslic3r/PrintConfig.cpp:1342 -msgid "Output filename format" -msgstr "Формат вихідного файлу" - -#: src/libslic3r/PrintConfig.cpp:1343 -msgid "You can use all configuration options as variables inside this template. For example: [layer_height], [fill_density] etc. You can also use [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename], [input_filename_base]." -msgstr "Ви можете викориÑтовувати вÑÑ– параметри конфігурації Ñк змінні вÑередині цього шаблону. Ðаприклад: [layer_height], [fill_density] тощо. Ви також можете викориÑтовувати [timestamp], [year], [month], [day], [hour], [minute], [second], [version], [input_filename] ], [input_filename_base]." - -#: src/libslic3r/PrintConfig.cpp:1353 -msgid "Detect bridging perimeters" -msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ð¸ÑÑчих периметрів" - -#: src/libslic3r/PrintConfig.cpp:1355 -msgid "Experimental option to adjust flow for overhangs (bridge flow will be used), to apply bridge speed to them and enable fan." -msgstr "ЕкÑпериментальний параметр Ð´Ð»Ñ Ñ€ÐµÐ³ÑƒÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð´Ð»Ñ Ð²Ð¸Ñтупів (буде викориÑтано моÑтовий потік), щоб заÑтоÑувати до них швидкіÑть моÑту та увімкнути вентилÑтор." - -#: src/libslic3r/PrintConfig.cpp:1362 -msgid "Filament parking position" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1363 -msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1372 -msgid "Extra loading distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1373 -msgid "When set to zero, the distance the filament is moved from parking position during load is exactly the same as it was moved back during unload. When positive, it is loaded further, if negative, the loading move is shorter than unloading. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 -msgid "Perimeters" -msgstr "Периметри" - -#: src/libslic3r/PrintConfig.cpp:1383 -msgid "This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters." -msgstr "Це приÑкореннÑ, Ñке ваш принтер викориÑтовуватиме Ð´Ð»Ñ Ð¿ÐµÑ€Ð¸Ð¼ÐµÑ‚Ñ€Ñ–Ð². ВиÑока значеннÑ, таке Ñк 9000, зазвичай дає хороші результати, Ñкщо ваше апаратне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” завданню. Ð’Ñтановити 0, щоб вимкнути регулÑтор приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€Ð¸Ð¼ÐµÑ‚Ñ€Ñ–Ð²." - -#: src/libslic3r/PrintConfig.cpp:1392 -msgid "Perimeter extruder" -msgstr "ЕкÑтрудер периметру" - -#: src/libslic3r/PrintConfig.cpp:1394 -msgid "The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "ЕкÑтрудер, що викориÑтовуєтьÑÑ Ð¿Ñ€Ð¸ друці периметрів Ñ– краю. Перший екÑтрудер - 1." - -#: src/libslic3r/PrintConfig.cpp:1404 -msgid "Set this to a non-zero value to set a manual extrusion width for perimeters. You may want to use thinner extrudates to get more accurate surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 200%) it will be computed over layer height." -msgstr "УÑтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼, щоб вÑтановити ручну ширину екÑтрузії Ð´Ð»Ñ Ð¿ÐµÑ€Ð¸Ð¼ÐµÑ‚Ñ€Ñ–Ð². Ви можете викориÑтовувати більш тонкі екÑтруди, щоб отримати більш точні поверхні. Якщо залишити 0, буде викориÑтана ширина екÑтрузії за замовчуваннÑм, в іншому випадку викориÑтовуватиметьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 1,125 Ñ… діаметр Ñопла. Якщо він виражений у відÑотках (наприклад, 200%), він буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:1417 -msgid "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "ШвидкіÑть Ð´Ð»Ñ Ð¿ÐµÑ€Ð¸Ð¼ÐµÑ‚Ñ€Ñ–Ð² (контури, вертикальні оболонки). Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ викориÑтаннÑ." - -#: src/libslic3r/PrintConfig.cpp:1427 -msgid "This option sets the number of perimeters to generate for each layer. Note that Slic3r may increase this number automatically when it detects sloping surfaces which benefit from a higher number of perimeters if the Extra Perimeters option is enabled." -msgstr "Ð¦Ñ Ð¾Ð¿Ñ†Ñ–Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” кількіÑть периметрів Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ шару. Зверніть увагу, що Slic3r може автоматично збільшувати це чиÑло, коли виÑвлÑÑ” похилі поверхні, Ñкі отримують вигоду від більшої кількоÑті периметрів, Ñкщо Ð¾Ð¿Ñ†Ñ–Ñ Â«Ð”Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ– периметри» увімкнена." - -#: src/libslic3r/PrintConfig.cpp:1431 -msgid "(minimum)" -msgstr "(мінімум)" - -#: src/libslic3r/PrintConfig.cpp:1439 -msgid "If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables." -msgstr "Якщо ви хочете оброблÑти вихідний G-код через влаÑні Ñценарії, проÑто перелічіть тут Ñ—Ñ… абÑолютні шлÑхи. Кілька Ñкриптів відокремте крапкою з комою. Сценарії буде передано абÑолютним шлÑхам до файлу G-коду Ñк перший аргумент, Ñ– вони можуть отримати доÑтуп до параметрів конфігурації Slic3r, прочитавши змінні Ñередовища." - -#: src/libslic3r/PrintConfig.cpp:1452 -msgid "Printer type" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1453 -msgid "Type of the printer." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1457 -msgid "Printer notes" -msgstr "Примітки принтера" - -#: src/libslic3r/PrintConfig.cpp:1458 -msgid "You can put your notes regarding the printer here." -msgstr "Тут ви можете поміÑтити Ñвої нотатки щодо принтера." - -#: src/libslic3r/PrintConfig.cpp:1467 -msgid "Printer vendor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1468 -msgid "Name of the printer vendor." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1472 -msgid "Printer variant" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1473 -msgid "Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1483 -msgid "Raft layers" -msgstr "ПлоÑкі шари" - -#: src/libslic3r/PrintConfig.cpp:1485 -msgid "The object will be raised by this number of layers, and support material will be generated under it." -msgstr "Об'єкт буде піднÑтий цією кількіÑтю шарів, Ñ– під ним буде згенерований матеріал підтримки." - -#: src/libslic3r/PrintConfig.cpp:1494 -msgid "Resolution" -msgstr "Роздільна здатніÑть" - -#: src/libslic3r/PrintConfig.cpp:1495 -msgid "Minimum detail resolution, used to simplify the input file for speeding up the slicing job and reducing memory usage. High-resolution models often carry more detail than printers can render. Set to zero to disable any simplification and use full resolution from input." -msgstr "Мінімальна роздільна здатніÑть деталі, що викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ файлу Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ над розрізаннÑм та Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ð¼'Ñті. Моделі з виÑокою роздільною здатніÑтю чаÑто неÑуть більш детальну інформацію, ніж можуть зробити принтери. Ð’Ñтановіть 0, щоб вимкнути будь-Ñке ÑÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° викориÑтовувати повну роздільну здатніÑть від введеннÑ." - -#: src/libslic3r/PrintConfig.cpp:1506 -msgid "Minimum travel after retraction" -msgstr "Мінімальне Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ–ÑÐ»Ñ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ" - -#: src/libslic3r/PrintConfig.cpp:1507 -msgid "Retraction is not triggered when travel moves are shorter than this length." -msgstr "ÐŸÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð½Ðµ Ñпрацьовує, коли Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¾Ñ‚ÑˆÐµ за цю довжину." - -#: src/libslic3r/PrintConfig.cpp:1514 -msgid "Retract amount before wipe" -msgstr "КількіÑть переривань перед чищеннÑм" - -#: src/libslic3r/PrintConfig.cpp:1515 -msgid "With bowden extruders, it may be wise to do some amount of quick retract before doing the wipe movement." -msgstr "ЗавдÑки екÑтрудерам з бандами, має зміÑÑ‚ зробити певну кількіÑть переривань перед рухами очищеннÑ." - -#: src/libslic3r/PrintConfig.cpp:1523 -msgid "Retract on layer change" -msgstr "ÐŸÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð½Ð° зміну шарів" - -#: src/libslic3r/PrintConfig.cpp:1524 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "Цей прапор забезпечує Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ разу, коли виконуєтьÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Z." - -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 -msgid "Length" -msgstr "Довжина" - -#: src/libslic3r/PrintConfig.cpp:1531 -msgid "Retraction Length" -msgstr "Довжина перериваннÑ" - -#: src/libslic3r/PrintConfig.cpp:1532 -msgid "When retraction is triggered, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." -msgstr "Коли Ñпрацьовує перериваннÑ, філамент відтÑгуєтьÑÑ Ð½Ð°Ð·Ð°Ð´ до вказаної кількоÑті (довжина вимірюєтьÑÑ Ð½Ð° Ñирого філаменту перед тим, Ñк вона надходить у екÑтрудер)." - -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 -msgid "mm (zero to disable)" -msgstr "мм (0, щоб вимкнути)" - -#: src/libslic3r/PrintConfig.cpp:1540 -msgid "Retraction Length (Toolchange)" -msgstr "Довжина Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (зміна інÑтрумента)" - -#: src/libslic3r/PrintConfig.cpp:1541 -msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." -msgstr "Коли Ñпрацьовує Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð½Ð° зміну інÑтрумента, філамент відтÑгуєтьÑÑ Ð½Ð°Ð·Ð°Ð´ до вказаної кількоÑті (довжина вимірюєтьÑÑ Ð½Ð° Ñирого філаменту перед тим, Ñк вона надходить у екÑтрудер)." - -#: src/libslic3r/PrintConfig.cpp:1550 -msgid "Lift Z" -msgstr "ПіднÑти Z" - -#: src/libslic3r/PrintConfig.cpp:1551 -msgid "If you set this to a positive value, Z is quickly raised every time a retraction is triggered. When using multiple extruders, only the setting for the first extruder will be considered." -msgstr "Якщо ви вÑтановите це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð¸Ñ‚Ð¸Ð²Ð½Ð¸Ð¼, Z швидко піднімаєтьÑÑ Ñ‰Ð¾Ñ€Ð°Ð·Ñƒ, коли Ñпрацьовує перериваннÑ. При викориÑтанні декількох екÑтрудерів буде розглÑнуто Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ першого екÑтрудера." - -#: src/libslic3r/PrintConfig.cpp:1559 -msgid "Above Z" -msgstr "Вище Z" - -#: src/libslic3r/PrintConfig.cpp:1560 -msgid "Only lift Z above" -msgstr "Тільки піднімати Z" - -#: src/libslic3r/PrintConfig.cpp:1561 -msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z. You can tune this setting for skipping lift on the first layers." -msgstr "Якщо ви вÑтановите це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð¸Ñ‚Ð¸Ð²Ð½Ð¸Ð¼, Z буде лише підніматиÑÑ Ð½Ð°Ð» вказаним абÑолютним Z. Ви можете налаштувати цей параметр так, що піднÑÑ‚Ñ‚Ñ Ð±ÑƒÐ´Ðµ пропуÑкатиÑÑ Ð½Ð° перших шарах." - -#: src/libslic3r/PrintConfig.cpp:1569 -msgid "Below Z" -msgstr "Ðижче Z" - -#: src/libslic3r/PrintConfig.cpp:1570 -msgid "Only lift Z below" -msgstr "Тільки опуÑкати Z" - -#: src/libslic3r/PrintConfig.cpp:1571 -msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z. You can tune this setting for limiting lift to the first layers." -msgstr "Якщо ви вÑтановите це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð¸Ñ‚Ð¸Ð²Ð½Ð¸Ð¼, Z буде лише опуÑкатиÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ вказаного абÑолютного Z. Ви можете налаштувати цей параметр так, що піднÑÑ‚Ñ‚Ñ Ð±ÑƒÐ´Ðµ обмежене на перших шарах." - -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 -msgid "Extra length on restart" -msgstr "Додаткова довжина при перезапуÑку" - -#: src/libslic3r/PrintConfig.cpp:1581 -msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." -msgstr "Коли Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿ÐµÐ½ÑуєтьÑÑ Ð¿Ñ–ÑÐ»Ñ Ñ€ÑƒÑ…Ñƒ переміщеннÑ, екÑтрудер буде проштовхувати цю додаткову кількіÑть філамента. Цей параметр рідко потрібний." - -#: src/libslic3r/PrintConfig.cpp:1590 -msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." -msgstr "Коли Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿ÐµÐ½ÑуєтьÑÑ Ð¿Ñ–ÑÐ»Ñ Ð·Ð¼Ñ–Ð½Ð¸ інÑтрумента, екÑтрудер буде проштовхувати цю додаткову кількіÑть філамента." - -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 -msgid "Retraction Speed" -msgstr "ШвидкіÑть перериваннÑ" - -#: src/libslic3r/PrintConfig.cpp:1600 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "ШвидкіÑть Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (це ÑтоÑуєтьÑÑ Ð»Ð¸ÑˆÐµ двигуна екÑтрудера)." - -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 -msgid "Deretraction Speed" -msgstr "ШвидкіÑть піÑлÑ-перериваннÑ" - -#: src/libslic3r/PrintConfig.cpp:1609 -msgid "The speed for loading of a filament into extruder after retraction (it only applies to the extruder motor). If left to zero, the retraction speed is used." -msgstr "ШвидкіÑть Ð·Ð°Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ„Ñ–Ð»Ð°Ð¼ÐµÐ½Ñ‚Ð° в екÑтрудер піÑÐ»Ñ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (це ÑтоÑуєтьÑÑ Ð»Ð¸ÑˆÐµ двигуна екÑтрудера ). Якщо залишити 0, викориÑтовуєтьÑÑ ÑˆÐ²Ð¸Ð´ÐºÑ–Ñть Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ ." - -#: src/libslic3r/PrintConfig.cpp:1617 -msgid "Seam position" -msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ ÑˆÐ²Ð°" - -#: src/libslic3r/PrintConfig.cpp:1619 -msgid "Position of perimeters starting points." -msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñтартових точок периметра." - -#: src/libslic3r/PrintConfig.cpp:1626 -msgid "Random" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1627 -msgid "Nearest" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1628 -msgid "Aligned" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "Ззаду" - -#: src/libslic3r/PrintConfig.cpp:1636 -msgid "Direction" -msgstr "ÐапрÑмок" - -#: src/libslic3r/PrintConfig.cpp:1638 -msgid "Preferred direction of the seam" -msgstr "Бажаний напрÑмок шва" - -#: src/libslic3r/PrintConfig.cpp:1639 -msgid "Seam preferred direction" -msgstr "Бажаний напрÑмок шва" - -#: src/libslic3r/PrintConfig.cpp:1647 -msgid "Jitter" -msgstr "Джиттер" - -#: src/libslic3r/PrintConfig.cpp:1649 -msgid "Seam preferred direction jitter" -msgstr "Бажаний напрÑмок шва джитера" - -#: src/libslic3r/PrintConfig.cpp:1650 -msgid "Preferred direction of the seam - jitter" -msgstr "Бажаний напрÑмок шва - джитера" - -#: src/libslic3r/PrintConfig.cpp:1661 -msgid "USB/serial port for printer connection." -msgstr "USB / поÑлідовний порт Ð´Ð»Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð°." - -#: src/libslic3r/PrintConfig.cpp:1669 -msgid "Serial port speed" -msgstr "ШвидкіÑть поÑлідовного порту" - -#: src/libslic3r/PrintConfig.cpp:1670 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "ШвидкіÑть (бод) USB / поÑлідовного порту Ð´Ð»Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð°." - -#: src/libslic3r/PrintConfig.cpp:1679 -msgid "Distance from object" -msgstr "ВідÑтань від об'єкту" - -#: src/libslic3r/PrintConfig.cpp:1680 -msgid "Distance between skirt and object(s). Set this to zero to attach the skirt to the object(s) and get a brim for better adhesion." -msgstr "ВідÑтань між плінтуÑом та об'єктом (-ами). УÑтановіть 0, щоб прикріпити Ð¿Ð»Ñ–Ð½Ñ‚ÑƒÑ Ð´Ð¾ об'єкта (-ів) Ñ– отримати край Ð´Ð»Ñ ÐºÑ€Ð°Ñ‰Ð¾Ñ— адгезії." - -#: src/libslic3r/PrintConfig.cpp:1688 -msgid "Skirt height" -msgstr "ВиÑота плінтуÑу" - -#: src/libslic3r/PrintConfig.cpp:1689 -msgid "Height of skirt expressed in layers. Set this to a tall value to use skirt as a shield against drafts." -msgstr "ВиÑота плінтуÑу виражена в шарах. Ð’Ñтановіть це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð° виÑоке, щоб викориÑтовувати Ð¿Ð»Ñ–Ð½Ñ‚ÑƒÑ Ñк щит проти протÑгів." - -#: src/libslic3r/PrintConfig.cpp:1697 -msgid "Loops (minimum)" -msgstr "Петлі (мінімум)" - -#: src/libslic3r/PrintConfig.cpp:1698 -msgid "Skirt Loops" -msgstr "Петлі плінтуÑу" - -#: src/libslic3r/PrintConfig.cpp:1699 -msgid "Number of loops for the skirt. If the Minimum Extrusion Length option is set, the number of loops might be greater than the one configured here. Set this to zero to disable skirt completely." -msgstr "КількіÑть петель Ð´Ð»Ñ Ð¿Ð»Ñ–Ð½Ñ‚ÑƒÑу. Якщо вÑтановлено параметр \"Мінімальна довжина екÑтрузії\", кількіÑть петель може бути більшою, ніж налаштована тут. УÑтановіть 0, щоб повніÑтю вимкнути плінтуÑ." - -#: src/libslic3r/PrintConfig.cpp:1708 -msgid "Slow down if layer print time is below" -msgstr "УповільненнÑ, Ñкщо Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ шару нижче" - -#: src/libslic3r/PrintConfig.cpp:1709 -msgid "If layer print time is estimated below this number of seconds, print moves speed will be scaled down to extend duration to this value." -msgstr "Якщо Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ шару оцінюєтьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ цієї кількоÑті Ñекунд, швидкіÑть друку рухів зменшуватиметьÑÑ, щоб збільшити триваліÑть до цього значеннÑ." - -#: src/libslic3r/PrintConfig.cpp:1720 -msgid "Small perimeters" -msgstr "Маленькі периметри" - -#: src/libslic3r/PrintConfig.cpp:1722 -msgid "This separate setting will affect the speed of perimeters having radius <= 6.5mm (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "Цей окремий параметр впливає на швидкіÑть периметрів, що мають Ñ€Ð°Ð´Ñ–ÑƒÑ <= 6,5 мм (Ñк правило, дірки). Якщо вона виражена у відÑотках (наприклад: 80%), вона буде розрахована за наведеним вище параметром швидкоÑті. Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ викориÑтаннÑ." - -#: src/libslic3r/PrintConfig.cpp:1732 -msgid "Solid infill threshold area" -msgstr "Порогова площа Ñуцільного наповненнÑ" - -#: src/libslic3r/PrintConfig.cpp:1734 -msgid "Force solid infill for regions having a smaller area than the specified threshold." -msgstr "Ð’Ñтановити Ñуцільне Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ€ÐµÐ³Ñ–Ð¾Ð½Ñ–Ð², що мають площу, меншу зазначеного порогу." - -#: src/libslic3r/PrintConfig.cpp:1735 -msgid "mm²" -msgstr "мм²" - -#: src/libslic3r/PrintConfig.cpp:1742 -msgid "Solid infill extruder" -msgstr "ЕкÑтрудер Ñуцільних наповнень" - -#: src/libslic3r/PrintConfig.cpp:1744 -msgid "The extruder to use when printing solid infill." -msgstr "ЕкÑтрудер Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ Ñуцільних наповнень." - -#: src/libslic3r/PrintConfig.cpp:1751 -msgid "Solid infill every" -msgstr "Суцільне Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ñ–" - -#: src/libslic3r/PrintConfig.cpp:1753 -msgid "This feature allows to force a solid layer every given number of layers. Zero to disable. You can set this to any value (for example 9999); Slic3r will automatically choose the maximum possible number of layers to combine according to nozzle diameter and layer height." -msgstr "Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑ” закріпити Ñуцільні шари на задану кількіÑть шарів. 0 - щоб відключити. Ви можете вÑтановити будь-Ñке Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (наприклад, 9999); Slic3r автоматично вибере макÑимально можливу кількіÑть шарів Ð´Ð»Ñ ÐºÐ¾Ð¼Ð±Ñ–Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾ до діаметра Ñопла та виÑоти шару." - -#: src/libslic3r/PrintConfig.cpp:1766 -msgid "Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼, щоб вÑтановити ручну ширину екÑтрузії Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ‚Ð²ÐµÑ€Ð´Ð¸Ñ… поверхонь. Якщо залишити 0, буде викориÑтана ширина екÑтрузії за замовчуваннÑм, в іншому випадку викориÑтовуватиметьÑÑ 1,125 Ñ… діаметр Ñопла. Якщо він виражений у відÑотках (наприклад, 90%), він буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:1777 -msgid "Speed for printing solid regions (top/bottom/internal horizontal shells). This can be expressed as a percentage (for example: 80%) over the default infill speed above. Set to zero for auto." -msgstr "ШвидкіÑть друку твердих облаÑтей (Ð²ÐµÑ€Ñ…Ð½Ñ / Ð½Ð¸Ð¶Ð½Ñ / Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð° оболонка). Може бути виражено у відÑотках (наприклад: 80%) від вказаної вище швидкоÑті Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм. Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ викориÑтаннÑ." - -#: src/libslic3r/PrintConfig.cpp:1789 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "КількіÑть Ñуцільних шарів Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° верхній Ñ– нижній поверхні." - -#: src/libslic3r/PrintConfig.cpp:1796 -msgid "Spiral vase" -msgstr "Спіральна ваза" - -#: src/libslic3r/PrintConfig.cpp:1797 -msgid "This feature will raise Z gradually while printing a single-walled object in order to remove any visible seam. This option requires a single perimeter, no infill, no top solid layers and no support material. You can still set any number of bottom solid layers as well as skirt/brim loops. It won't work when printing more than an object." -msgstr "Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð±ÑƒÐ´Ðµ поÑтупово підвищувати Z протÑгом друку одного-Ñтінного об'єкта Ð´Ð»Ñ ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ð±ÑƒÐ´ÑŒ-Ñкого видимого шву. Цей параметр вимагає одношарового периметру, відÑутнє наповненнÑ, відÑутніÑть верхніх Ñуцільних шарів Ñ– відÑутніÑть матеріалу підтримки. Ви вÑе ще можете вÑтановити будь-Ñку кількіÑть нижніх Ñуцільних шарів, а також петель плінтуÑу/краю. Це не Ñпрацює при друку більше, ніж одного об'єкта." - -#: src/libslic3r/PrintConfig.cpp:1806 -msgid "Temperature variation" -msgstr "Ð’Ð°Ñ€Ñ–Ð°Ñ†Ñ–Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸" - -#: src/libslic3r/PrintConfig.cpp:1807 -msgid "Temperature difference to be applied when an extruder is not active. Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped." -msgstr "Відмітка температури, Ñка заÑтоÑовуєтьÑÑ, коли екÑтрудер не активний. Вмикає \"жертовний\" Ð¿Ð»Ñ–Ð½Ñ‚ÑƒÑ Ð½Ð° повній виÑоті, на Ñкі періодично очищуютьÑÑ Ñопла." - -#: src/libslic3r/PrintConfig.cpp:1818 -msgid "This start procedure is inserted at the beginning, after bed has reached the target temperature and extruder just started heating, and before extruder has finished heating. If Slic3r detects M104 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "Ð¦Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° процедура вÑтавлÑєтьÑÑ Ð½Ð° початку, піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк полотно доÑÑгне цільової температури, а екÑтрудер тільки починає нагріватиÑÑ, Ñ– перед тим, Ñк екÑтрудер закінчить нагріваннÑ. Якщо Slic3r виÑвлÑÑ” M104 або M190 у ваших кориÑтувацьких кодах, такі команди не будуть додаватиÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾, щоб ви могли вільно налаштовувати порÑдок команд нагріву та інших Ñпеціальних дій. Зверніть увагу, що ви можете викориÑтовувати змінні-заповнювачі Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r, щоб ви могли поÑтавити команду \"M109 S [first_layer_temperature]\" де завгодно." - -#: src/libslic3r/PrintConfig.cpp:1834 -msgid "This start procedure is inserted at the beginning, after any printer start gcode. This is used to override settings for a specific filament. If Slic3r detects M104, M109, M140 or M190 in your custom codes, such commands will not be prepended automatically so you're free to customize the order of heating commands and other custom actions. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want. If you have multiple extruders, the gcode is processed in extruder order." -msgstr "Ð¦Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° процедура вÑтавлÑєтьÑÑ Ð½Ð° початку, піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк будь-Ñкий принтер запуÑкає G-code. Це викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— нитки. Якщо Slic3r виÑвлÑÑ” M104, M109, M140 або M190 у ваших кориÑтувацьких кодах, такі команди не будуть автоматично додаватиÑÑ, тому ви можете налаштувати порÑдок команд нагріву та інших Ñпеціальних дій. Зверніть увагу, що ви можете викориÑтовувати змінні-заповнювачі Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r, щоб ви могли поÑтавити команду \"M109 S [first_layer_temperature]\" де завгодно. Якщо у Ð²Ð°Ñ Ñ” кілька екÑтрудерів, G-code оброблÑєтьÑÑ Ð² порÑдку екÑтрудерів." - -#: src/libslic3r/PrintConfig.cpp:1850 -msgid "Single Extruder Multi Material" -msgstr "Одиночний екÑтрудер кількох матеріалів" - -#: src/libslic3r/PrintConfig.cpp:1851 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "Принтер мультиплекÑує нитки в єдиний гарÑчий кінець." - -#: src/libslic3r/PrintConfig.cpp:1857 -msgid "Prime all printing extruders" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1858 -msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1864 -msgid "Generate support material" -msgstr "Створити підтримуючий матеріал" - -#: src/libslic3r/PrintConfig.cpp:1866 -msgid "Enable support material generation." -msgstr "Увімкнути генерацію матеріалів підтримки." - -#: src/libslic3r/PrintConfig.cpp:1871 -msgid "Auto generated supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1873 -msgid "If checked, supports will be generated automatically based on the overhang threshold value. If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1880 -msgid "XY separation between an object and its support" -msgstr "Розподіл XY між об'єктом та його підтримкою" - -#: src/libslic3r/PrintConfig.cpp:1882 -msgid "XY separation between an object and its support. If expressed as percentage (for example 50%), it will be calculated over external perimeter width." -msgstr "Розподіл XY між об'єктом та його підтримкою. Якщо вона виражена у відÑотках (наприклад, 50%), вона буде розрахована за зовнішньою шириною периметру." - -#: src/libslic3r/PrintConfig.cpp:1893 -msgid "Pattern angle" -msgstr "Кут шаблону" - -#: src/libslic3r/PrintConfig.cpp:1895 -msgid "Use this setting to rotate the support material pattern on the horizontal plane." -msgstr "ВикориÑтовуйте цей параметр, щоб повернути шаблон підтримуючого матеріалу на горизонтальній площині." - -#: src/libslic3r/PrintConfig.cpp:1906 -msgid "Only create support if it lies on a build plate. Don't create support on a print." -msgstr "Створити підтримку лише, Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, що лежить на збірній плаÑтині. Ðе Ñтворювати підтримку на друк." - -#: src/libslic3r/PrintConfig.cpp:1913 -msgid "Contact Z distance" -msgstr "Контактна відÑтань по оÑÑ– Z" - -#: src/libslic3r/PrintConfig.cpp:1915 -msgid "The vertical distance between object and support material interface. Setting this to 0 will also prevent Slic3r from using bridge flow and speed for the first object layer." -msgstr "Вертикальна відÑтань між об'єктом та інтерфейÑом матеріалу підтримки. Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0 також захиÑтить Slic3r від викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ моÑтів та швидкоÑті Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ шару об'єктну." - -#: src/libslic3r/PrintConfig.cpp:1923 -msgid "soluble" -msgstr "розчинний" - -#: src/libslic3r/PrintConfig.cpp:1924 -msgid "detachable" -msgstr "відривний" - -#: src/libslic3r/PrintConfig.cpp:1929 -msgid "Enforce support for the first" -msgstr "Забезпечити підтримку першого(их)" - -#: src/libslic3r/PrintConfig.cpp:1931 -msgid "Generate support material for the specified number of layers counting from bottom, regardless of whether normal support material is enabled or not and regardless of any angle threshold. This is useful for getting more adhesion of objects having a very thin or poor footprint on the build plate." -msgstr "Генерувати допоміжний матеріал Ð´Ð»Ñ Ð·Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— кількоÑті шарів, що підраховують знизу, незалежно від того, включено чи ні нормальний матеріал підтримки, Ñ– незалежно від будь-Ñкого порогу кута. Це кориÑно Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð±Ñ–Ð»ÑŒÑˆÐ¾Ñ— адгезії об'єктів, що мають дуже тонкий або поганий Ñлід на збірній плаÑтині." - -#: src/libslic3r/PrintConfig.cpp:1937 -msgid "Enforce support for the first n layers" -msgstr "Забезпечити підтримку перших n шарів" - -#: src/libslic3r/PrintConfig.cpp:1943 -msgid "Support material/raft/skirt extruder" -msgstr "Підтримуючий матеріал / пліт / Ð¿Ð»Ñ–Ð½Ñ‚ÑƒÑ ÐµÐºÑтрудеру" - -#: src/libslic3r/PrintConfig.cpp:1945 -msgid "The extruder to use when printing support material, raft and skirt (1+, 0 to use the current extruder to minimize tool changes)." -msgstr "ЕкÑтрудер Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ підтримуючого матеріалу, плоту та плінтуÑу (1+, 0 Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ екÑтрудера, щоб мінімізувати зміни інÑтрументу)." - -#: src/libslic3r/PrintConfig.cpp:1955 -msgid "Set this to a non-zero value to set a manual extrusion width for support material. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼, щоб вÑтановити ручну ширину екÑтрузії матеріалу Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸. Якщо залишити 0, буде викориÑтана ширина екÑтрузії, вÑтановлена за замовчуваннÑм, інакше викориÑтовуватиметьÑÑ Ð´Ñ–Ð°Ð¼ÐµÑ‚Ñ€ Ñопла. Якщо він виражений у відÑотках (наприклад, 90%), він буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:1964 -msgid "Interface loops" -msgstr "ІнтерфейÑні петлі" - -#: src/libslic3r/PrintConfig.cpp:1966 -msgid "Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "Закрити петлÑми верхній контактний шар підтримки. За замовчаннÑм вимкнено." - -#: src/libslic3r/PrintConfig.cpp:1972 -msgid "Support material/raft interface extruder" -msgstr "ЕкÑтрудер інтерфейÑу підтримуючого матеріалу / плоту" - -#: src/libslic3r/PrintConfig.cpp:1974 -msgid "The extruder to use when printing support material interface (1+, 0 to use the current extruder to minimize tool changes). This affects raft too." -msgstr "ЕкÑтрудер, що викориÑтовуєтьÑÑ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð´Ñ€ÑƒÐºÑƒ інтерфейÑу матеріалу підтримки (1+, 0 Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ екÑтрудера, щоб звеÑти до мінімуму зміни інÑтрументу). Це також впливає на плот." - -#: src/libslic3r/PrintConfig.cpp:1982 -msgid "Interface layers" -msgstr "ІнтерфейÑні шари" - -#: src/libslic3r/PrintConfig.cpp:1984 -msgid "Number of interface layers to insert between the object(s) and support material." -msgstr "КількіÑть шарів інтерфейÑу Ð´Ð»Ñ Ð²Ñтавки між об'єктом(ами) та підтримуючим матеріалом." - -#: src/libslic3r/PrintConfig.cpp:1992 -msgid "Interface pattern spacing" -msgstr "ВідÑтань між шаблонами інтерфейÑу" - -#: src/libslic3r/PrintConfig.cpp:1994 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "ВідÑтань між інтерфейÑними лініÑми. Ð’Ñтановити 0, щоб отримати надійний інтерфейÑ." - -#: src/libslic3r/PrintConfig.cpp:2004 -msgid "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed." -msgstr "ШвидкіÑть друку інтерфейÑних шарів підтримуючого матеріалу. Якщо вона виражена у відÑотках (наприклад, 50%), вона буде розрахована за швидкіÑтю матеріалу підтримки." - -#: src/libslic3r/PrintConfig.cpp:2013 -msgid "Pattern" -msgstr "Шаблон" - -#: src/libslic3r/PrintConfig.cpp:2015 -msgid "Pattern used to generate support material." -msgstr "Шаблон, що викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼Ð°Ñ‚ÐµÑ€Ñ–Ð°Ð»Ñƒ підтримки." - -#: src/libslic3r/PrintConfig.cpp:2022 -msgid "Rectilinear grid" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2028 -msgid "Pattern spacing" -msgstr "ВідÑтань між шаблонами" - -#: src/libslic3r/PrintConfig.cpp:2030 -msgid "Spacing between support material lines." -msgstr "ВідÑтань між лініÑми підтримуючого матеріалу." - -#: src/libslic3r/PrintConfig.cpp:2040 -msgid "Speed for printing support material." -msgstr "ШвидкіÑть друку підтримуючого матеріалу." - -#: src/libslic3r/PrintConfig.cpp:2047 -msgid "Synchronize with object layers" -msgstr "Синхронізувати з шарами об'єкту" - -#: src/libslic3r/PrintConfig.cpp:2049 -msgid "Synchronize support layers with the object print layers. This is useful with multi-material printers, where the extruder switch is expensive." -msgstr "Синхронізувати шари підтримки з шарами друку об'єкта. Це кориÑно викориÑтовувати з багато-матеріальними принтерами, де Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ ÐµÐºÑтрудерів -затратна процедура." - -#: src/libslic3r/PrintConfig.cpp:2056 -msgid "Overhang threshold" -msgstr "Порог навиÑаннÑ" - -#: src/libslic3r/PrintConfig.cpp:2058 -msgid "Support material will not be generated for overhangs whose slope angle (90° = vertical) is above the given threshold. In other words, this value represent the most horizontal slope (measured from the horizontal plane) that you can print without support material. Set to zero for automatic detection (recommended)." -msgstr "Матеріал підтримки не буде Ñформований Ð´Ð»Ñ Ð²Ð¸Ñтупів, кут нахилу (90° = вертикальний) Ñких перевищує заданий порог. Іншими Ñловами, це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€ÐµÐ´ÑтавлÑÑ” найбільш горизонтальний Ñхил (вимірюваний з горизонтальної площини), Ñкий ви можете надрукувати без підтримуючого матеріалу. Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (рекомендовано)." - -#: src/libslic3r/PrintConfig.cpp:2071 -msgid "With sheath around the support" -msgstr "З оболонкою навколо підтримки" - -#: src/libslic3r/PrintConfig.cpp:2073 -msgid "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove." -msgstr "Додати оболонку (одну лінію периметра) навколо базової підтримки. Це робить підтримку більш надійною, але Ñ—Ñ— важче видалити." - -#: src/libslic3r/PrintConfig.cpp:2081 -msgid "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output." -msgstr "Температура екÑтрудеру Ð´Ð»Ñ ÑˆÐ°Ñ€Ñ–Ð² піÑÐ»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾. УÑтановіть 0, щоб вимкнути команди ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¾ÑŽ на виході." - -#: src/libslic3r/PrintConfig.cpp:2084 -msgid "Temperature" -msgstr "Температура" - -#: src/libslic3r/PrintConfig.cpp:2090 -msgid "Detect thin walls" -msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñ‚Ð¾Ð½ÐºÐ¸Ñ… Ñтін" - -#: src/libslic3r/PrintConfig.cpp:2092 -msgid "Detect single-width walls (parts where two extrusions don't fit and we need to collapse them into a single trace)." -msgstr "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾ÑˆÐ°Ñ€Ð¾Ð²Ð¾Ñ— Ñтінки (чаÑтини, де два екÑтрузії не підходÑть, Ñ– нам потрібно згорнути Ñ—Ñ… у єдиний Ñлід)." - -#: src/libslic3r/PrintConfig.cpp:2099 -msgid "Threads" -msgstr "Ðитки" - -#: src/libslic3r/PrintConfig.cpp:2100 -msgid "Threads are used to parallelize long-running tasks. Optimal threads number is slightly above the number of available cores/processors." -msgstr "Ðитки викориÑтовуютьÑÑ Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð»ÐµÐ»Ñ–Ð·Ð°Ñ†Ñ–Ñ— довготривалих завдань. Оптимальна кількіÑть ниток трохи перевищує кількіÑть доÑтупних Ñдер / процеÑорів." - -#: src/libslic3r/PrintConfig.cpp:2112 -msgid "This custom code is inserted right before every extruder change. Note that you can use placeholder variables for all Slic3r settings as well as [previous_extruder] and [next_extruder]." -msgstr "Цей Ñпеціальний код вÑтавлÑєтьÑÑ Ð±ÐµÐ·Ð¿Ð¾Ñередньо перед кожною зміненою екÑтрудера. Зверніть увагу, що ви можете викориÑтовувати змінні-заповнювачі Ð´Ð»Ñ Ð²ÑÑ–Ñ… параметрів Slic3r, а також [previous_extruder] Ñ– [next_extruder]." - -#: src/libslic3r/PrintConfig.cpp:2125 -msgid "Set this to a non-zero value to set a manual extrusion width for infill for top surfaces. You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. If expressed as percentage (for example 90%) it will be computed over layer height." -msgstr "УÑтановіть ненульове значеннÑ, щоб вÑтановити ручну ширину екÑтрузії Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²ÐµÑ€Ñ…Ð½ÑŒÐ¾Ñ— поверхні. Ви можете викориÑтовувати більш тонкі екÑтрудати, щоб заповнити вÑÑ– вузькі облаÑті Ñ– отримати більш гладкий результат. Якщо залишити 0, буде викориÑтана ширина екÑтрузії, вÑтановлена за замовчуваннÑм, інакше викориÑтовуватиметьÑÑ Ð´Ñ–Ð°Ð¼ÐµÑ‚Ñ€ Ñопла. Якщо вона виражена у відÑотках (наприклад, 90%), вона буде обчиÑлюватиÑÑ Ð·Ð° виÑотою шару." - -#: src/libslic3r/PrintConfig.cpp:2137 -msgid "Speed for printing top solid layers (it only applies to the uppermost external layers and not to their internal solid layers). You may want to slow down this to get a nicer surface finish. This can be expressed as a percentage (for example: 80%) over the solid infill speed above. Set to zero for auto." -msgstr "ШвидкіÑть друку верхніх Ñуцільних шарів (це ÑтоÑуєтьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ найвищих зовнішніх шарів, а не їхніх внутрішніх Ñуцільних шарів). Ви можете захотіти ÑповільненнÑ, щоб отримати більш гарну обробку поверхні. Це можна виразити відÑотком (наприклад, 80%) Ð·Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті щільного Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ . Ð’Ñтановити 0 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ обчиÑленнÑ." - -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "Верхні" - -#: src/libslic3r/PrintConfig.cpp:2151 -msgid "Number of solid layers to generate on top surfaces." -msgstr "КількіÑть Ñуцільних шарів, генерованих на верхніх поверхнÑÑ…." - -#: src/libslic3r/PrintConfig.cpp:2153 -msgid "Top solid layers" -msgstr "Верхні Ñуцільні шари" - -#: src/libslic3r/PrintConfig.cpp:2159 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "ШвидкіÑть рухів переÑÑƒÐ²Ð°Ð½Ð½Ñ (Ñтрибки між далекими точками екÑтрузії)." - -#: src/libslic3r/PrintConfig.cpp:2168 -msgid "Use firmware retraction" -msgstr "ВикориÑтовувати відмову прошивки" - -#: src/libslic3r/PrintConfig.cpp:2169 -msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." -msgstr "Цей екÑпериментальний параметр викориÑтовує команди G10 Ñ– G11 Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ відмови прошивки. ОÑтаннім чаÑом це підтримуєтьÑÑ Ð»Ð¸ÑˆÐµ Marlin-ом." - -#: src/libslic3r/PrintConfig.cpp:2176 -msgid "Use relative E distances" -msgstr "ВикориÑтовувати відноÑні E відÑтані" - -#: src/libslic3r/PrintConfig.cpp:2177 -msgid "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." -msgstr "Якщо ваша прошивка потребує відноÑне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ E, зазначте це, інакше залиште його незазначеним. БільшіÑть прошивок викориÑтовують абÑолютні значеннÑ." - -#: src/libslic3r/PrintConfig.cpp:2184 -msgid "Use volumetric E" -msgstr "ВикориÑтовувати об'ємний Е" - -#: src/libslic3r/PrintConfig.cpp:2185 -msgid "This experimental setting uses outputs the E values in cubic millimeters instead of linear millimeters. If your firmware doesn't already know filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your start G-code in order to turn volumetric mode on and use the filament diameter associated to the filament selected in Slic3r. This is only supported in recent Marlin." -msgstr "Цей екÑпериментальний параметр викориÑтовує виводи Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ E в кубічних міліметрах заміÑть лінійних міліметрів. Якщо ваша прошивку ще не знає діаметр ниток, ви можете вÑтановити такі команди, Ñк \"M200 D [filament_diameter_0] T0\" у вашому Ñтарті G-коду, щоб включити об'ємний режим Ñ– викориÑтовувати діаметр нитки, пов'Ñзаний з вибраною ниткою в Slic3r. ОÑтаннім чаÑом це підтримуєтьÑÑ Ð»Ð¸ÑˆÐµ Marlin-ом." - -#: src/libslic3r/PrintConfig.cpp:2196 -msgid "Enable variable layer height feature" -msgstr "Увімкнути функцію шарів змінної виÑоти" - -#: src/libslic3r/PrintConfig.cpp:2197 -msgid "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default." -msgstr "ДеÑкі принтери або Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð° можуть мати труднощі з друкуваннÑм шарів змінної виÑоти. Увімкнено за умовчаннÑм." - -#: src/libslic3r/PrintConfig.cpp:2204 -msgid "Wipe while retracting" -msgstr "Вичіщувати при відмові" - -#: src/libslic3r/PrintConfig.cpp:2205 -msgid "This flag will move the nozzle while retracting to minimize the possible blob on leaky extruders." -msgstr "Цей прапорець переміÑтить Ñопло під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¸, щоб мінімізувати можливіÑть ÑƒÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÑ€Ð°Ð¿Ð»Ñ– на витікаючих екÑтрудерах." - -#: src/libslic3r/PrintConfig.cpp:2213 -msgid "Multi material printers may need to prime or purge extruders on tool changes. Extrude the excess material into the wipe tower." -msgstr "Мульти-матеріальні принтери можуть потребувати заправки або Ð²Ð¸Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐµÐºÑтрудерів при зміні інÑтрумента. ЕкÑтрудуйте надлишок матеріалу до вичищуючої вежі." - -#: src/libslic3r/PrintConfig.cpp:2220 -msgid "Purging volumes - load/unload volumes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2221 -msgid "This vector saves required volumes to change from/to each tool used on the wipe tower. These values are used to simplify creation of the full purging volumes below. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2228 -msgid "Purging volumes - matrix" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2229 -msgid "This matrix describes volumes (in cubic milimetres) required to purge the new filament on the wipe tower for any given pair of tools. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2239 -msgid "Position X" -msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ X" - -#: src/libslic3r/PrintConfig.cpp:2240 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "X координата лівого переднього кута вичищуючої вежі" - -#: src/libslic3r/PrintConfig.cpp:2247 -msgid "Position Y" -msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Y" - -#: src/libslic3r/PrintConfig.cpp:2248 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "Y координата лівого переднього кута вичищуючої вежі" - -#: src/libslic3r/PrintConfig.cpp:2256 -msgid "Width of a wipe tower" -msgstr "Ширина вичищуючої вежі" - -#: src/libslic3r/PrintConfig.cpp:2263 -msgid "Wipe tower rotation angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2264 -msgid "Wipe tower rotation angle with respect to x-axis " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2265 -msgid "degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2272 -msgid "Wipe into this object's infill" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2273 -msgid "Purging after toolchange will done inside this object's infills. This lowers the amount of waste but may result in longer print time due to additional travel moves." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2281 -msgid "Wipe into this object" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2282 -msgid "Object will be used to purge the nozzle after a toolchange to save material that would otherwise end up in the wipe tower and decrease print time. Colours of the objects will be mixed as a result." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2289 -msgid "Maximal bridging distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2290 -msgid "Maximal distance between supports on sparse infill sections. " -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2297 -msgid "XY Size Compensation" -msgstr "Ð—Ñ€Ñ–Ð²Ð½Ð¾Ð²Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ за XY" - -#: src/libslic3r/PrintConfig.cpp:2299 -msgid "The object will be grown/shrunk in the XY plane by the configured value (negative = inwards, positive = outwards). This might be useful for fine-tuning hole sizes." -msgstr "Об'єкт буде збільшений / зменшений у площині XY за заданим значеннÑм (негативний - внутрішній, позитивний - ззовнішній). Це може бути кориÑним Ð´Ð»Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² отворів." - -#: src/libslic3r/PrintConfig.cpp:2308 -msgid "Z offset" -msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Z" - -#: src/libslic3r/PrintConfig.cpp:2309 -msgid "This value will be added (or subtracted) from all the Z coordinates in the output G-code. It is used to compensate for bad Z endstop position: for example, if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, set this to -0.3 (or fix your endstop)." -msgstr "Це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ додано/вилучено до/з уÑÑ–Ñ… координат Z у вихідному G-коді. Воно викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð·Ñ€Ñ–Ð²Ð½Ð¾Ð²Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð³Ð°Ð½Ð¾Ñ— кінцевої позиції Z: наприклад, Ñкщо ваш кінцевий нуль фактично залишає Ñопло на 0,3 мм від полотна друку, вÑтановіть його на Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ -0,3 (або виправте ваш endstop)." - -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 -msgid "Display width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2374 -msgid "Width of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2380 -msgid "Display height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2381 -msgid "Height of the display" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2387 -msgid "Number of pixels in" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2389 -msgid "Number of pixels in X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2396 -msgid "Number of pixels in Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2402 -msgid "Display orientation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2403 -msgid "Set the actual LCD display orientation inside the SLA printer. Portrait mode will flip the meaning of display width and height parameters and the output images will be rotated by 90 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2410 -msgid "Landscape" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2411 -msgid "Portrait" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 -msgid "Printer scaling correction" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 -msgid "Initial layer height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 -msgid "Initial exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 -msgid "SLA print material notes" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2459 -msgid "You can put your notes regarding the SLA print material here." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 -msgid "Default SLA material profile" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2487 -msgid "Generate supports" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2489 -msgid "Generate supports for the models" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2494 -msgid "Support head front diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2496 -msgid "Diameter of the pointing side of the head" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2503 -msgid "Support head penetration" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2505 -msgid "How much the pinhead has to penetrate the model surface" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2512 -msgid "Support head width" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2514 -msgid "Width from the back sphere center to the front sphere center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2521 -msgid "Support pillar diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2523 -msgid "Diameter in mm of the support pillars" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2530 -msgid "Support pillar connection mode" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2531 -msgid "Controls the bridge type between two neigboring pillars. Can be zig-zag, cross (double zig-zag) or dynamic which will automatically switch between the first two depending on the distance of the two pillars." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2540 -msgid "Zig-Zag" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2541 -msgid "Cross" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2542 -msgid "Dynamic" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2546 -msgid "Pillar widening factor" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2548 -msgid "Merging bridges or pillars into another pillars can increase the radius. Zero means no increase, one means full increase." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2557 -msgid "Support base diameter" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2559 -msgid "Diameter in mm of the pillar base" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2566 -msgid "Support base height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2568 -msgid "The height of the pillar base cone" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2575 -msgid "Critical angle" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2577 -msgid "The default angle for connecting support sticks and junctions." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2584 -msgid "Max bridge length" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2586 -msgid "The max length of a bridge" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2593 -msgid "Object elevation" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2595 -msgid "How much the supports should lift up the supported object." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "How many support points (approximately) should be placed on horizontal surface." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "How many support points (approximately) should be placed on surface sloping at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 -msgid "Use pad" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2631 -msgid "Add a pad underneath the supported model" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2636 -msgid "Pad wall thickness" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2645 -msgid "Pad wall height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2654 -msgid "Max merge distance" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2663 -msgid "Pad edge radius" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3017 -msgid "Cut model at the given Z." -msgstr "Розрізати модель за заданим Z." - -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3023 -msgid "Don't arrange the objects on the build plate. The model coordinates define the absolute positions on the build plate. The option --center will be ignored." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3031 -msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "Допомога" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "Forces the GUI launch instead of command line slicing (if you supply a model file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "Load configuration from the specified file. It can be used more than once to load options from multiple files." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "Forces the command line slicing instead of gui. This takes precedence over --gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "The file where the output will be written (if not specified, it will be based on the input file)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:176 -msgid "Mixed" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:396 -msgid "Height (mm)" -msgstr "ВиÑота (мм)" - -#: src/libslic3r/GCode/PreviewData.cpp:398 -msgid "Width (mm)" -msgstr "Ширина (мм)" - -#: src/libslic3r/GCode/PreviewData.cpp:400 -msgid "Speed (mm/s)" -msgstr "ШвидкіÑть (мм/Ñ)" - -#: src/libslic3r/GCode/PreviewData.cpp:402 -msgid "Volumetric flow rate (mm3/s)" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:491 -msgid "Default print color" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:495 -#, c-format -msgid "up to %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:499 -#, c-format -msgid "above %.2f mm" -msgstr "" - -#: src/libslic3r/GCode/PreviewData.cpp:504 -#, c-format -msgid "%.2f - %.2f mm" -msgstr "" diff --git a/resources/localization/zh_CN/Slic3rPE_zh_new.po b/resources/localization/zh_CN/PrusaSlicer_zh.po similarity index 63% rename from resources/localization/zh_CN/Slic3rPE_zh_new.po rename to resources/localization/zh_CN/PrusaSlicer_zh.po index cdb0e4baa..5bd8871e4 100644 --- a/resources/localization/zh_CN/Slic3rPE_zh_new.po +++ b/resources/localization/zh_CN/PrusaSlicer_zh.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-17 13:39+0100\n" -"PO-Revision-Date: 2019-01-21 12:21+0100\n" +"POT-Creation-Date: 2019-04-09 14:34+0200\n" +"PO-Revision-Date: 2019-04-09 16:44+0200\n" "Last-Translator: Oleksandra Iushchenko \n" "Language-Team: \n" "Language: zh_CN\n" @@ -19,11 +19,11 @@ msgstr "" "X-Poedit-SearchPath-1: xs/xrc/slic3r/GUI\n" "X-Poedit-SearchPath-2: xs/xrc/slic3r\n" -#: src/slic3r/GUI/AboutDialog.cpp:33 +#: src/slic3r/GUI/AboutDialog.cpp:35 msgid "About Slic3r" msgstr "" -#: src/slic3r/GUI/AboutDialog.cpp:68 src/slic3r/GUI/MainFrame.cpp:51 +#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52 msgid "Version" msgstr "" @@ -31,135 +31,135 @@ msgstr "" msgid "Shape" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:50 +#: src/slic3r/GUI/BedShapeDialog.cpp:51 msgid "Rectangular" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:54 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:207 src/slic3r/GUI/Plater.cpp:125 -#: src/slic3r/GUI/Tab.cpp:2122 +#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136 +#: src/slic3r/GUI/Tab.cpp:2185 msgid "Size" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:55 +#: src/slic3r/GUI/BedShapeDialog.cpp:56 msgid "Size in X and Y of the rectangular plate." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:61 +#: src/slic3r/GUI/BedShapeDialog.cpp:62 msgid "Origin" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:62 +#: src/slic3r/GUI/BedShapeDialog.cpp:63 msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:66 +#: src/slic3r/GUI/BedShapeDialog.cpp:67 msgid "Circular" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:69 src/slic3r/GUI/ConfigWizard.cpp:92 -#: src/slic3r/GUI/ConfigWizard.cpp:456 src/slic3r/GUI/ConfigWizard.cpp:470 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:80 -#: src/libslic3r/PrintConfig.cpp:50 src/libslic3r/PrintConfig.cpp:58 -#: src/libslic3r/PrintConfig.cpp:180 src/libslic3r/PrintConfig.cpp:254 -#: src/libslic3r/PrintConfig.cpp:263 src/libslic3r/PrintConfig.cpp:315 -#: src/libslic3r/PrintConfig.cpp:326 src/libslic3r/PrintConfig.cpp:448 -#: src/libslic3r/PrintConfig.cpp:460 src/libslic3r/PrintConfig.cpp:480 -#: src/libslic3r/PrintConfig.cpp:679 src/libslic3r/PrintConfig.cpp:1178 -#: src/libslic3r/PrintConfig.cpp:1243 src/libslic3r/PrintConfig.cpp:1263 -#: src/libslic3r/PrintConfig.cpp:1283 src/libslic3r/PrintConfig.cpp:1365 -#: src/libslic3r/PrintConfig.cpp:1376 src/libslic3r/PrintConfig.cpp:1499 -#: src/libslic3r/PrintConfig.cpp:1508 src/libslic3r/PrintConfig.cpp:1554 -#: src/libslic3r/PrintConfig.cpp:1563 src/libslic3r/PrintConfig.cpp:1574 -#: src/libslic3r/PrintConfig.cpp:1583 src/libslic3r/PrintConfig.cpp:1592 -#: src/libslic3r/PrintConfig.cpp:1682 src/libslic3r/PrintConfig.cpp:1918 -#: src/libslic3r/PrintConfig.cpp:1995 src/libslic3r/PrintConfig.cpp:2031 -#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2249 -#: src/libslic3r/PrintConfig.cpp:2257 src/libslic3r/PrintConfig.cpp:2291 -#: src/libslic3r/PrintConfig.cpp:2302 src/libslic3r/PrintConfig.cpp:2313 -#: src/libslic3r/PrintConfig.cpp:2321 src/libslic3r/PrintConfig.cpp:2328 -#: src/libslic3r/PrintConfig.cpp:2424 src/libslic3r/PrintConfig.cpp:2497 -#: src/libslic3r/PrintConfig.cpp:2506 src/libslic3r/PrintConfig.cpp:2515 -#: src/libslic3r/PrintConfig.cpp:2524 src/libslic3r/PrintConfig.cpp:2560 -#: src/libslic3r/PrintConfig.cpp:2569 src/libslic3r/PrintConfig.cpp:2587 -#: src/libslic3r/PrintConfig.cpp:2596 src/libslic3r/PrintConfig.cpp:2623 -#: src/libslic3r/PrintConfig.cpp:2639 src/libslic3r/PrintConfig.cpp:2648 -#: src/libslic3r/PrintConfig.cpp:2657 src/libslic3r/PrintConfig.cpp:2666 +#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111 +#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66 +#: src/libslic3r/PrintConfig.cpp:75 src/libslic3r/PrintConfig.cpp:209 +#: src/libslic3r/PrintConfig.cpp:284 src/libslic3r/PrintConfig.cpp:292 +#: src/libslic3r/PrintConfig.cpp:342 src/libslic3r/PrintConfig.cpp:352 +#: src/libslic3r/PrintConfig.cpp:472 src/libslic3r/PrintConfig.cpp:483 +#: src/libslic3r/PrintConfig.cpp:501 src/libslic3r/PrintConfig.cpp:679 +#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1226 +#: src/libslic3r/PrintConfig.cpp:1244 src/libslic3r/PrintConfig.cpp:1262 +#: src/libslic3r/PrintConfig.cpp:1314 src/libslic3r/PrintConfig.cpp:1324 +#: src/libslic3r/PrintConfig.cpp:1445 src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1494 src/libslic3r/PrintConfig.cpp:1502 +#: src/libslic3r/PrintConfig.cpp:1512 src/libslic3r/PrintConfig.cpp:1520 +#: src/libslic3r/PrintConfig.cpp:1528 src/libslic3r/PrintConfig.cpp:1611 +#: src/libslic3r/PrintConfig.cpp:1827 src/libslic3r/PrintConfig.cpp:1897 +#: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123 +#: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293 +#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377 +#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450 +#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506 +#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532 +#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555 msgid "mm" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/libslic3r/PrintConfig.cpp:676 +#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676 msgid "Diameter" msgstr "直径" -#: src/slic3r/GUI/BedShapeDialog.cpp:71 +#: src/slic3r/GUI/BedShapeDialog.cpp:72 msgid "" "Diameter of the print bed. It is assumed that origin (0,0) is located in the " "center." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:75 src/slic3r/GUI/GUI_Preview.cpp:265 +#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239 #: src/libslic3r/GCode/PreviewData.cpp:175 msgid "Custom" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:79 +#: src/slic3r/GUI/BedShapeDialog.cpp:80 msgid "Load shape from STL..." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:125 +#: src/slic3r/GUI/BedShapeDialog.cpp:126 msgid "Settings" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:298 +#: src/slic3r/GUI/BedShapeDialog.cpp:299 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:315 src/slic3r/GUI/GUI_ObjectList.cpp:835 +#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252 msgid "Error! " msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:324 +#: src/slic3r/GUI/BedShapeDialog.cpp:325 msgid "The selected file contains no geometry." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.cpp:328 +#: src/slic3r/GUI/BedShapeDialog.cpp:329 msgid "" "The selected file contains several disjoint areas. This is not supported." msgstr "" -#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507 msgid "Bed Shape" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:54 +#: src/slic3r/GUI/BonjourDialog.cpp:55 msgid "Network lookup" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:67 +#: src/slic3r/GUI/BonjourDialog.cpp:72 msgid "Address" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:68 +#: src/slic3r/GUI/BonjourDialog.cpp:73 msgid "Hostname" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:69 +#: src/slic3r/GUI/BonjourDialog.cpp:74 msgid "Service name" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:70 +#: src/slic3r/GUI/BonjourDialog.cpp:76 msgid "OctoPrint version" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:188 +#: src/slic3r/GUI/BonjourDialog.cpp:218 msgid "Searching for devices" msgstr "" -#: src/slic3r/GUI/BonjourDialog.cpp:195 +#: src/slic3r/GUI/BonjourDialog.cpp:225 msgid "Finished" msgstr "" @@ -177,146 +177,164 @@ msgid "" "preset" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:16 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17 msgid "Upgrade" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19 msgid "Downgrade" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21 msgid "Before roll back" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23 msgid "User" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:25 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26 msgid "Unknown" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:37 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38 msgid "Active: " msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:43 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 msgid "slic3r version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44 src/slic3r/GUI/Preset.cpp:1156 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250 msgid "print" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 msgid "filaments" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1160 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254 msgid "printer" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 src/slic3r/GUI/Tab.cpp:838 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872 msgid "vendor" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:50 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 msgid "version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 msgid "min slic3r version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54 msgid "max slic3r version" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "model" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:56 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57 msgid "variants" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:68 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69 msgid "Incompatible with this Slic3r" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:71 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72 msgid "Activate" msgstr "" -#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:97 +#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98 msgid "Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:92 +#: src/slic3r/GUI/ConfigWizard.cpp:111 msgid "nozzle" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:93 -msgid "default" +#: src/slic3r/GUI/ConfigWizard.cpp:115 +msgid "Alternate nozzles:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:116 -msgid "Select all" +#: src/slic3r/GUI/ConfigWizard.cpp:181 +msgid "All standard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:117 -msgid "Select none" +#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909 +msgid "All" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414 +#: src/libslic3r/GCode/PreviewData.cpp:162 +msgid "None" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:284 #, c-format msgid "Welcome to the Slic3r %s" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:226 +#: src/slic3r/GUI/ConfigWizard.cpp:284 msgid "Welcome" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:232 src/slic3r/GUI/GUI_App.cpp:606 +#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600 #, c-format msgid "Run %s" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:234 +#: src/slic3r/GUI/ConfigWizard.cpp:290 #, c-format msgid "" "Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial " "configuration; just a few settings and you will be ready to print." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:238 +#: src/slic3r/GUI/ConfigWizard.cpp:294 msgid "" "Remove user profiles - install from scratch (a snapshot will be taken " "beforehand)" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:263 -msgid "Other vendors" +#: src/slic3r/GUI/ConfigWizard.cpp:325 +#, c-format +msgid "%s Family" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:265 -msgid "Custom setup" +#: src/slic3r/GUI/ConfigWizard.cpp:362 +msgid "Custom Printer Setup" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:362 +msgid "Custom Printer" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:364 +msgid "Define a custom printer profile" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:366 +msgid "Custom profile name:" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:390 msgid "Automatic updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:289 +#: src/slic3r/GUI/ConfigWizard.cpp:390 msgid "Updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:297 src/slic3r/GUI/Preferences.cpp:59 +#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59 msgid "Check for application updates" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:300 src/slic3r/GUI/Preferences.cpp:61 +#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61 msgid "" "If enabled, Slic3r checks for new versions of Slic3r PE online. When a new " "version becomes available a notification is displayed at the next " @@ -324,11 +342,11 @@ msgid "" "notification mechanisms, no automatic installation is done." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:304 src/slic3r/GUI/Preferences.cpp:67 +#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67 msgid "Update built-in Presets automatically" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:307 src/slic3r/GUI/Preferences.cpp:69 +#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69 msgid "" "If enabled, Slic3r downloads updates of built-in system presets in the " "background. These updates are downloaded into a separate temporary location. " @@ -336,168 +354,184 @@ msgid "" "startup." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:308 +#: src/slic3r/GUI/ConfigWizard.cpp:409 msgid "" "Updates are never applied without user's consent and never overwrite user's " "customized settings." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:313 +#: src/slic3r/GUI/ConfigWizard.cpp:414 msgid "" "Additionally a backup snapshot of the whole configuration is created before " "an update is applied." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:320 +#: src/slic3r/GUI/ConfigWizard.cpp:421 msgid "Other Vendors" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:322 +#: src/slic3r/GUI/ConfigWizard.cpp:423 msgid "Pick another vendor supported by Slic3r PE:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:381 +#: src/slic3r/GUI/ConfigWizard.cpp:469 msgid "Firmware Type" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:381 src/slic3r/GUI/Tab.cpp:1820 +#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870 msgid "Firmware" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:385 +#: src/slic3r/GUI/ConfigWizard.cpp:473 msgid "Choose the type of firmware used by your printer." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:419 +#: src/slic3r/GUI/ConfigWizard.cpp:507 msgid "Bed Shape and Size" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:422 +#: src/slic3r/GUI/ConfigWizard.cpp:510 msgid "Set the shape of your printer's bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:524 msgid "Filament and Nozzle Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:436 +#: src/slic3r/GUI/ConfigWizard.cpp:524 msgid "Print Diameters" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:452 +#: src/slic3r/GUI/ConfigWizard.cpp:540 msgid "Enter the diameter of your printer's hot end nozzle." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:455 +#: src/slic3r/GUI/ConfigWizard.cpp:543 msgid "Nozzle Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:465 +#: src/slic3r/GUI/ConfigWizard.cpp:553 msgid "Enter the diameter of your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:466 +#: src/slic3r/GUI/ConfigWizard.cpp:554 msgid "" "Good precision is required, so use a caliper and do multiple measurements " "along the filament, then compute the average." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:469 +#: src/slic3r/GUI/ConfigWizard.cpp:557 msgid "Filament Diameter:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "Extruder and Bed Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:487 +#: src/slic3r/GUI/ConfigWizard.cpp:575 msgid "Temperatures" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:503 +#: src/slic3r/GUI/ConfigWizard.cpp:591 msgid "Enter the temperature needed for extruding your filament." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:504 +#: src/slic3r/GUI/ConfigWizard.cpp:592 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:507 +#: src/slic3r/GUI/ConfigWizard.cpp:595 msgid "Extrusion Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:508 src/slic3r/GUI/ConfigWizard.cpp:522 +#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610 msgid "°C" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:517 +#: src/slic3r/GUI/ConfigWizard.cpp:605 msgid "" "Enter the bed temperature needed for getting your filament to stick to your " "heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:518 +#: src/slic3r/GUI/ConfigWizard.cpp:606 msgid "" "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have " "no heated bed." msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:521 +#: src/slic3r/GUI/ConfigWizard.cpp:609 msgid "Bed Temperature:" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:833 +#: src/slic3r/GUI/ConfigWizard.cpp:1001 +msgid "Select all standard printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1004 msgid "< &Back" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:834 +#: src/slic3r/GUI/ConfigWizard.cpp:1005 msgid "&Next >" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:835 +#: src/slic3r/GUI/ConfigWizard.cpp:1006 msgid "&Finish" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:906 +#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37 +#: src/slic3r/GUI/ProgressStatusBar.cpp:28 +msgid "Cancel" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1021 +msgid "Prusa FFF Technology Printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1024 +msgid "Prusa MSLA Technology Printers" +msgstr "" + +#: src/slic3r/GUI/ConfigWizard.cpp:1111 msgid "Configuration Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:907 +#: src/slic3r/GUI/ConfigWizard.cpp:1112 msgid "Configuration &Wizard" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:909 +#: src/slic3r/GUI/ConfigWizard.cpp:1114 msgid "Configuration Assistant" msgstr "" -#: src/slic3r/GUI/ConfigWizard.cpp:910 +#: src/slic3r/GUI/ConfigWizard.cpp:1115 msgid "Configuration &Assistant" msgstr "" -#: src/slic3r/GUI/Field.cpp:109 +#: src/slic3r/GUI/Field.cpp:112 msgid "default value" msgstr "" -#: src/slic3r/GUI/Field.cpp:112 +#: src/slic3r/GUI/Field.cpp:115 msgid "parameter name" msgstr "" -#: src/slic3r/GUI/Field.cpp:140 +#: src/slic3r/GUI/Field.cpp:143 #, c-format msgid "%s doesn't support percentage" msgstr "" -#: src/slic3r/GUI/Field.cpp:148 src/slic3r/GUI/Field.cpp:168 -msgid "" -"Input value contains incorrect symbol(s).\n" -"Use, please, only digits" +#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180 +msgid "Invalid numeric input." msgstr "" -#: src/slic3r/GUI/Field.cpp:153 +#: src/slic3r/GUI/Field.cpp:162 msgid "Input value is out of range" msgstr "" -#: src/slic3r/GUI/Field.cpp:176 +#: src/slic3r/GUI/Field.cpp:188 #, c-format msgid "" "Do you mean %d%% instead of %d %s?\n" @@ -505,40 +539,35 @@ msgid "" "or NO if you are sure that %d %s is a correct value." msgstr "" -#: src/slic3r/GUI/Field.cpp:179 +#: src/slic3r/GUI/Field.cpp:191 msgid "Parameter validation" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:133 +#: src/slic3r/GUI/FirmwareDialog.cpp:141 msgid "Flash!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:134 src/slic3r/GUI/GLGizmo.cpp:2270 -msgid "Cancel" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:135 +#: src/slic3r/GUI/FirmwareDialog.cpp:143 msgid "Flashing in progress. Please do not disconnect the printer!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:245 +#: src/slic3r/GUI/FirmwareDialog.cpp:187 +msgid "Flashing failed: " +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:268 msgid "Flashing succeeded!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:246 +#: src/slic3r/GUI/FirmwareDialog.cpp:269 msgid "Flashing failed. Please see the avrdude log below." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:247 +#: src/slic3r/GUI/FirmwareDialog.cpp:270 msgid "Flashing cancelled." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:279 -#, c-format -msgid "Flashing failed: %s" -msgstr "" - -#: src/slic3r/GUI/FirmwareDialog.cpp:293 +#: src/slic3r/GUI/FirmwareDialog.cpp:308 #, c-format msgid "" "This firmware hex file does not match the printer model.\n" @@ -549,215 +578,322 @@ msgid "" "Please only continue if you are sure this is the right thing to do." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:380 src/slic3r/GUI/FirmwareDialog.cpp:414 +#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431 +#, c-format msgid "" -"Multiple Original Prusa i3 MMU 2.0 devices found. Please only connect one at " -"a time for flashing." +"Multiple %s devices found. Please only connect one at a time for flashing." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:508 -msgid "The device could not have been found" +#: src/slic3r/GUI/FirmwareDialog.cpp:412 +#, c-format +msgid "" +"The %s device was not found.\n" +"If the device is connected, please press the Reset button next to the USB " +"connector ..." msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:581 +#: src/slic3r/GUI/FirmwareDialog.cpp:525 +#, c-format +msgid "The %s device could not have been found" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:603 #, c-format msgid "Error accessing port at %s: %s" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:690 +#: src/slic3r/GUI/FirmwareDialog.cpp:605 +#, c-format +msgid "Error: %s" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:735 msgid "Firmware flasher" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:712 +#: src/slic3r/GUI/FirmwareDialog.cpp:762 msgid "Firmware image:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:716 +#: src/slic3r/GUI/FirmwareDialog.cpp:766 msgid "Serial port:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:718 +#: src/slic3r/GUI/FirmwareDialog.cpp:768 msgid "Autodetected" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:719 +#: src/slic3r/GUI/FirmwareDialog.cpp:769 msgid "Rescan" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:726 +#: src/slic3r/GUI/FirmwareDialog.cpp:776 msgid "Progress:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:729 +#: src/slic3r/GUI/FirmwareDialog.cpp:779 msgid "Status:" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:730 +#: src/slic3r/GUI/FirmwareDialog.cpp:780 msgid "Ready" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:750 -msgid "Advanced: avrdude output log" +#: src/slic3r/GUI/FirmwareDialog.cpp:800 +msgid "Advanced: Output log" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:809 +#: src/slic3r/GUI/FirmwareDialog.cpp:811 +#: src/slic3r/GUI/PrintHostDialogs.cpp:161 +msgid "Close" +msgstr "" + +#: src/slic3r/GUI/FirmwareDialog.cpp:859 msgid "" "Are you sure you want to cancel firmware flashing?\n" "This could leave your printer in an unusable state!" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:810 +#: src/slic3r/GUI/FirmwareDialog.cpp:860 msgid "Confirmation" msgstr "" -#: src/slic3r/GUI/FirmwareDialog.cpp:813 +#: src/slic3r/GUI/FirmwareDialog.cpp:863 msgid "Cancelling..." msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:4640 +#: src/slic3r/GUI/GLCanvas3D.cpp:709 msgid "Detected object outside print volume" msgstr "" -#: src/slic3r/GUI/GLCanvas3D.cpp:7962 +#: src/slic3r/GUI/GLCanvas3D.cpp:710 msgid "Detected toolpath outside print volume" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:751 src/slic3r/GUI/GUI_ObjectManipulation.cpp:300 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:322 -#: src/libslic3r/PrintConfig.cpp:3087 -msgid "Rotate" -msgstr "旋转" - -#: src/slic3r/GUI/GLGizmo.cpp:785 -msgid "Rotation (deg)" +#: src/slic3r/GUI/GLCanvas3D.cpp:711 +msgid "Some objects are not visible when editing supports" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:841 src/slic3r/GUI/GUI_ObjectManipulation.cpp:206 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:301 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:323 -#: src/libslic3r/PrintConfig.cpp:3111 -msgid "Scale" -msgstr "缩放" - -#: src/slic3r/GUI/GLGizmo.cpp:1072 -msgid "Scale (%)" +#: src/slic3r/GUI/GLCanvas3D.cpp:713 +msgid "" +"Detected object outside print volume\n" +"Resolve a clash to continue slicing/export process correctly" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:1200 -msgid "Move" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Position (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1326 -msgid "Displacement (mm)" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:1430 -msgid "Place on face" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2207 -msgid "Left mouse click - add point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2208 -msgid "Right mouse click - remove point" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2211 -msgid "Generate points automatically" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2212 -msgid "Remove all points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2245 -msgid "SLA Support Points" -msgstr "" - -#: src/slic3r/GUI/GLGizmo.cpp:2268 src/slic3r/GUI/GLGizmo.cpp:2468 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195 msgid "Rotate lower part upwards" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2269 src/slic3r/GUI/GLGizmo.cpp:2470 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198 msgid "Perform cut" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2276 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43 msgid "Cut object:" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2356 src/slic3r/GUI/GLGizmo.cpp:2461 -#: src/libslic3r/PrintConfig.cpp:3016 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88 +msgid "Cut [C]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006 msgid "Cut" msgstr "切割" -#: src/slic3r/GUI/GLGizmo.cpp:2466 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193 msgid "Keep upper part" msgstr "" -#: src/slic3r/GUI/GLGizmo.cpp:2467 +#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194 msgid "Keep lower part" msgstr "" -#: src/slic3r/GUI/GUI.cpp:242 -msgid "Notice" +#: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32 +msgid "Place on face [F]" msgstr "" -#: src/slic3r/GUI/GUI.cpp:248 -msgid "Attempt to free unreferenced scalar" +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51 +msgid "Move [M]" msgstr "" -#: src/slic3r/GUI/GUI.cpp:250 src/slic3r/GUI/WipeTowerDialog.cpp:40 -#: src/slic3r/GUI/WipeTowerDialog.cpp:322 +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +msgid "Position (mm)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176 +msgid "Displacement (mm)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458 +msgid "Rotate [R]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491 +msgid "Rotation (deg)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51 +msgid "Scale [S]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276 +msgid "Scale (%)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597 +msgid "Left mouse click - add point" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598 +msgid "Right mouse click - remove point" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599 +msgid "Shift + Left (+ drag) - select point(s)" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606 +msgid "Head diameter: " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618 +msgid "Lock supports under new islands" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622 +msgid "Remove selected points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626 +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679 +msgid "Remove all points" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631 +msgid "Apply changes" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636 +msgid "Discard changes" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644 +msgid "Minimal points distance: " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655 +msgid "Support points density: " +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669 +msgid "Auto-generate points [A]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675 +msgid "Manual editing [M]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738 +msgid "SLA Support Points [L]" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767 +msgid "Do you want to save your manually edited support points ?\n" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768 +msgid "Save changes?" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897 +msgid "" +"Autogeneration will erase all manually edited points.\n" +"\n" +"Are you sure you want to do it?\n" +msgstr "" + +#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288 +#: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328 msgid "Warning" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:377 +#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720 +msgid "It's impossible to print multi-part object(s) with SLA technology." +msgstr "" + +#: src/slic3r/GUI/GUI.cpp:148 +msgid "Please check and fix your object list." +msgstr "" + +#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679 +#: src/slic3r/GUI/Tab.cpp:2722 +msgid "Attention!" +msgstr "" + +#: src/slic3r/GUI/GUI.cpp:282 +msgid "Notice" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:318 +msgid "Changing of an application language" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335 +msgid "Recreating" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:339 +msgid "Loading of a current presets" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:347 +msgid "Loading of a mode view" +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:429 msgid "Choose one file (3MF):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:389 +#: src/slic3r/GUI/GUI_App.cpp:441 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:451 +#: src/slic3r/GUI/GUI_App.cpp:454 msgid "Array of language names and identifiers should have the same size." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:461 +#: src/slic3r/GUI/GUI_App.cpp:464 msgid "Select the language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:461 +#: src/slic3r/GUI/GUI_App.cpp:464 msgid "Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:529 src/libslic3r/PrintConfig.cpp:270 +#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067 +#: src/libslic3r/PrintConfig.cpp:298 msgid "Default" msgstr "默认" -#: src/slic3r/GUI/GUI_App.cpp:609 +#: src/slic3r/GUI/GUI_App.cpp:603 msgid "&Configuration Snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:609 +#: src/slic3r/GUI/GUI_App.cpp:603 msgid "Inspect / activate configuration snapshots" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:610 +#: src/slic3r/GUI/GUI_App.cpp:604 msgid "Take Configuration &Snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:610 +#: src/slic3r/GUI/GUI_App.cpp:604 msgid "Capture a configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:613 +#: src/slic3r/GUI/GUI_App.cpp:607 msgid "&Preferences" msgstr "" @@ -765,7 +901,7 @@ msgstr "" msgid "Application preferences" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:616 +#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446 msgid "Simple" msgstr "" @@ -773,12 +909,14 @@ msgstr "" msgid "Simple View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:39 -#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:962 -#: src/slic3r/GUI/Tab.cpp:1058 src/slic3r/GUI/Tab.cpp:1061 -#: src/slic3r/GUI/Tab.cpp:1425 src/slic3r/GUI/Tab.cpp:1840 -#: src/libslic3r/PrintConfig.cpp:156 src/libslic3r/PrintConfig.cpp:323 -#: src/libslic3r/PrintConfig.cpp:999 src/libslic3r/PrintConfig.cpp:2298 +#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73 +#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992 +#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093 +#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890 +#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447 +#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186 +#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987 +#: src/libslic3r/PrintConfig.cpp:2173 msgid "Advanced" msgstr "高级" @@ -786,7 +924,7 @@ msgstr "高级" msgid "Advanced View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:618 +#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448 msgid "Expert" msgstr "" @@ -794,572 +932,711 @@ msgstr "" msgid "Expert View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:620 +#: src/slic3r/GUI/GUI_App.cpp:623 msgid "Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:620 +#: src/slic3r/GUI/GUI_App.cpp:623 msgid "Slic3r View Mode" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:622 +#: src/slic3r/GUI/GUI_App.cpp:625 msgid "Change Application &Language" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:624 +#: src/slic3r/GUI/GUI_App.cpp:627 msgid "Flash printer &firmware" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:624 +#: src/slic3r/GUI/GUI_App.cpp:627 msgid "Upload a firmware image into an Arduino based printer" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:636 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "Taking configuration snapshot" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:636 +#: src/slic3r/GUI/GUI_App.cpp:639 msgid "Snapshot name" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:674 -msgid "Application will be restarted" +#: src/slic3r/GUI/GUI_App.cpp:676 +msgid "Application will be restarted after language change." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:674 src/slic3r/GUI/Tab.cpp:2606 -msgid "Attention!" +#: src/slic3r/GUI/GUI_App.cpp:677 +msgid "3D-Scene will be cleaned." msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:691 +#: src/slic3r/GUI/GUI_App.cpp:678 +msgid "Please, check your changes before." +msgstr "" + +#: src/slic3r/GUI/GUI_App.cpp:706 msgid "&Configuration" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/GUI_App.cpp:726 msgid "You have unsaved changes " msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:711 +#: src/slic3r/GUI/GUI_App.cpp:726 msgid ". Discard changes and continue anyway?" msgstr "" -#: src/slic3r/GUI/GUI_App.cpp:712 +#: src/slic3r/GUI/GUI_App.cpp:727 msgid "Unsaved Presets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:31 src/libslic3r/PrintConfig.cpp:47 -#: src/libslic3r/PrintConfig.cpp:115 src/libslic3r/PrintConfig.cpp:357 -#: src/libslic3r/PrintConfig.cpp:410 src/libslic3r/PrintConfig.cpp:419 -#: src/libslic3r/PrintConfig.cpp:849 src/libslic3r/PrintConfig.cpp:1037 -#: src/libslic3r/PrintConfig.cpp:1354 src/libslic3r/PrintConfig.cpp:1426 -#: src/libslic3r/PrintConfig.cpp:1618 src/libslic3r/PrintConfig.cpp:2091 -#: src/libslic3r/PrintConfig.cpp:2150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65 +#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149 +#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437 +#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841 +#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1304 +#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042 msgid "Layers and Perimeters" msgstr "层和轮廓" -#: src/slic3r/GUI/GUI_ObjectList.cpp:32 src/slic3r/GUI/Tab.cpp:952 -#: src/slic3r/GUI/Tab.cpp:953 src/slic3r/GUI/Tab.cpp:1274 -#: src/libslic3r/PrintConfig.cpp:134 src/libslic3r/PrintConfig.cpp:366 -#: src/libslic3r/PrintConfig.cpp:730 src/libslic3r/PrintConfig.cpp:745 -#: src/libslic3r/PrintConfig.cpp:783 src/libslic3r/PrintConfig.cpp:938 -#: src/libslic3r/PrintConfig.cpp:949 src/libslic3r/PrintConfig.cpp:969 -#: src/libslic3r/PrintConfig.cpp:989 src/libslic3r/PrintConfig.cpp:1010 -#: src/libslic3r/PrintConfig.cpp:1733 src/libslic3r/PrintConfig.cpp:1752 +#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66 +#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981 +#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311 +#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742 +#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:932 +#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997 +#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675 msgid "Infill" msgstr "å¡«å……" -#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_Preview.cpp:262 -#: src/slic3r/GUI/Tab.cpp:980 src/slic3r/GUI/Tab.cpp:981 -#: src/libslic3r/PrintConfig.cpp:305 src/libslic3r/PrintConfig.cpp:1484 -#: src/libslic3r/PrintConfig.cpp:1865 src/libslic3r/PrintConfig.cpp:1872 -#: src/libslic3r/PrintConfig.cpp:1881 src/libslic3r/PrintConfig.cpp:1894 -#: src/libslic3r/PrintConfig.cpp:1905 src/libslic3r/PrintConfig.cpp:1914 -#: src/libslic3r/PrintConfig.cpp:1930 src/libslic3r/PrintConfig.cpp:1953 -#: src/libslic3r/PrintConfig.cpp:1965 src/libslic3r/PrintConfig.cpp:1983 -#: src/libslic3r/PrintConfig.cpp:1993 src/libslic3r/PrintConfig.cpp:2003 -#: src/libslic3r/PrintConfig.cpp:2014 src/libslic3r/PrintConfig.cpp:2029 -#: src/libslic3r/PrintConfig.cpp:2038 src/libslic3r/PrintConfig.cpp:2039 -#: src/libslic3r/PrintConfig.cpp:2048 src/libslic3r/PrintConfig.cpp:2057 -#: src/libslic3r/PrintConfig.cpp:2072 src/libslic3r/GCode/PreviewData.cpp:172 +#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67 +#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010 +#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333 +#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779 +#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1793 +#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1815 +#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1838 +#: src/libslic3r/PrintConfig.cpp:1859 src/libslic3r/PrintConfig.cpp:1870 +#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1904 src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1929 src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1947 +#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969 +#: src/libslic3r/GCode/PreviewData.cpp:172 msgid "Support material" msgstr "æ”¯æ’‘ææ–™" -#: src/slic3r/GUI/GUI_ObjectList.cpp:34 src/slic3r/GUI/GUI_Preview.cpp:241 -#: src/slic3r/GUI/Tab.cpp:1005 src/libslic3r/PrintConfig.cpp:169 -#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:881 -#: src/libslic3r/PrintConfig.cpp:1011 src/libslic3r/PrintConfig.cpp:1416 -#: src/libslic3r/PrintConfig.cpp:1668 src/libslic3r/PrintConfig.cpp:1721 -#: src/libslic3r/PrintConfig.cpp:1776 src/libslic3r/PrintConfig.cpp:2136 -msgid "Speed" -msgstr "速度" - -#: src/slic3r/GUI/GUI_ObjectList.cpp:35 src/slic3r/GUI/Tab.cpp:1038 -#: src/slic3r/GUI/Tab.cpp:1744 src/libslic3r/PrintConfig.cpp:430 -#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1393 -#: src/libslic3r/PrintConfig.cpp:1743 src/libslic3r/PrintConfig.cpp:1944 -#: src/libslic3r/PrintConfig.cpp:1973 src/libslic3r/PrintConfig.cpp:2271 -#: src/libslic3r/PrintConfig.cpp:2280 +#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69 +#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794 +#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953 +#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667 +#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877 +#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157 msgid "Extruders" msgstr "挤出头" -#: src/slic3r/GUI/GUI_ObjectList.cpp:36 src/libslic3r/PrintConfig.cpp:387 -#: src/libslic3r/PrintConfig.cpp:504 src/libslic3r/PrintConfig.cpp:836 -#: src/libslic3r/PrintConfig.cpp:970 src/libslic3r/PrintConfig.cpp:1403 -#: src/libslic3r/PrintConfig.cpp:1765 src/libslic3r/PrintConfig.cpp:1954 -#: src/libslic3r/PrintConfig.cpp:2124 +#: src/slic3r/GUI/GUI_ObjectList.cpp:39 +msgid "Pad and Support" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215 +#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198 +#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870 +#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360 +#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646 +#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028 +msgid "Speed" +msgstr "速度" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415 +#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829 +#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348 +#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860 +#: src/libslic3r/PrintConfig.cpp:2017 msgid "Extrusion Width" msgstr "挤出宽度" -#: src/slic3r/GUI/GUI_ObjectList.cpp:41 src/slic3r/GUI/Tab.cpp:3179 -#: src/slic3r/GUI/Tab.cpp:3180 src/libslic3r/PrintConfig.cpp:2488 -#: src/libslic3r/PrintConfig.cpp:2495 src/libslic3r/PrintConfig.cpp:2504 -#: src/libslic3r/PrintConfig.cpp:2513 src/libslic3r/PrintConfig.cpp:2522 -#: src/libslic3r/PrintConfig.cpp:2547 src/libslic3r/PrintConfig.cpp:2558 -#: src/libslic3r/PrintConfig.cpp:2567 src/libslic3r/PrintConfig.cpp:2576 -#: src/libslic3r/PrintConfig.cpp:2585 src/libslic3r/PrintConfig.cpp:2594 -#: src/libslic3r/PrintConfig.cpp:2603 src/libslic3r/PrintConfig.cpp:2612 -#: src/libslic3r/PrintConfig.cpp:2621 +#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410 +#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310 +#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366 +#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384 +#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420 +#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438 +#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457 +#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476 +#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2504 msgid "Supports" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:42 src/slic3r/GUI/Tab.cpp:3205 -#: src/slic3r/GUI/Tab.cpp:3206 src/libslic3r/PrintConfig.cpp:2630 -#: src/libslic3r/PrintConfig.cpp:2637 src/libslic3r/PrintConfig.cpp:2646 -#: src/libslic3r/PrintConfig.cpp:2655 src/libslic3r/PrintConfig.cpp:2664 +#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337 +#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553 +#: src/libslic3r/PrintConfig.cpp:2562 msgid "Pad" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:115 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:129 +#: src/slic3r/GUI/GUI_ObjectList.cpp:173 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45 msgid "Name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:134 +#: src/slic3r/GUI/GUI_ObjectList.cpp:201 msgid "Right button click the icon to change the object settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:142 +#: src/slic3r/GUI/GUI_ObjectList.cpp:209 #, c-format msgid "Auto-repaired (%d errors):\n" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:145 +#: src/slic3r/GUI/GUI_ObjectList.cpp:212 msgid "degenerate facets" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:146 +#: src/slic3r/GUI/GUI_ObjectList.cpp:213 msgid "edges fixed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:147 +#: src/slic3r/GUI/GUI_ObjectList.cpp:214 msgid "facets removed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:148 +#: src/slic3r/GUI/GUI_ObjectList.cpp:215 msgid "facets added" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:216 msgid "facets reversed" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:150 +#: src/slic3r/GUI/GUI_ObjectList.cpp:217 msgid "backwards edges" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:164 +#: src/slic3r/GUI/GUI_ObjectList.cpp:231 msgid "Right button click the icon to fix STL through Netfabb" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:196 src/slic3r/GUI/Tab.cpp:1389 -#: src/libslic3r/PrintConfig.cpp:429 +#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430 +#: src/libslic3r/PrintConfig.cpp:454 msgid "Extruder" msgstr "挤出头" -#: src/slic3r/GUI/GUI_ObjectList.cpp:615 +#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963 +#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199 +#, c-format +msgid "Quick Add Settings (%s)" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:746 msgid "Select showing settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:874 msgid "Load" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 src/slic3r/GUI/GUI_ObjectList.cpp:688 -#: src/slic3r/GUI/GUI_ObjectList.cpp:691 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911 +#: src/slic3r/GUI/GUI_ObjectList.cpp:914 msgid "Box" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Cylinder" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Sphere" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:659 +#: src/slic3r/GUI/GUI_ObjectList.cpp:879 msgid "Slab" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:671 src/slic3r/GUI/GUI_ObjectList.cpp:685 +#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906 msgid "Add part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:672 +#: src/slic3r/GUI/GUI_ObjectList.cpp:891 msgid "Add modifier" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:673 src/slic3r/GUI/GUI_ObjectList.cpp:687 +#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910 msgid "Add support enforcer" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:674 src/slic3r/GUI/GUI_ObjectList.cpp:690 +#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913 msgid "Add support blocker" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:711 +#: src/slic3r/GUI/GUI_ObjectList.cpp:934 msgid "Split to parts" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:725 +#: src/slic3r/GUI/GUI_ObjectList.cpp:942 msgid "Add settings" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:739 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 msgid "Change type" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1009 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1016 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +msgid "Set as a Separated Object" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1024 +msgid "Rename" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1034 +msgid "Fix through the Netfabb" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861 +msgid "Export as STL" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1048 +msgid "Change extruder" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1073 +msgid "Select new extruder for the object/part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825 +#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860 +msgid "Delete" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1153 +msgid "Set as a Separated Objects" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1374 +msgid "Generic" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:1516 msgid "You can't delete the last solid part from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1017 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1533 msgid "You can't delete the last intance from object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1044 src/slic3r/GUI/Plater.cpp:1825 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219 msgid "" "The selected object couldn't be split because it contains only one part." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1138 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1676 msgid "Group manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1688 msgid "Object manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1159 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1698 msgid "Object Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1163 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1702 msgid "Part Settings to modify" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1173 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1711 msgid "Part manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1180 +#: src/slic3r/GUI/GUI_ObjectList.cpp:1717 msgid "Instance manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1655 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +msgid "Object or Instance" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2240 +msgid "Part" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2242 +msgid "Unsupported selection" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2243 +#, c-format +msgid "You started your selection with %s Item." +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2244 +#, c-format +msgid "In this mode you can select only other %s Items%s" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2247 +msgid "of a current Object" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2252 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117 +msgid "Info" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2366 msgid "You can't change a type of the last solid part of the object." msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1662 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2373 msgid "Select type of part" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1744 src/slic3r/GUI/Tab.cpp:3070 -#: src/slic3r/GUI/Tab.cpp:3074 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "Enter new name" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2538 +msgid "Renaming" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2554 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191 +#: src/slic3r/GUI/Tab.cpp:3195 msgid "The supplied name is not valid;" msgstr "" -#: src/slic3r/GUI/GUI_ObjectList.cpp:1745 src/slic3r/GUI/Tab.cpp:3071 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2555 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192 msgid "the following characters are not allowed:" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:21 +#: src/slic3r/GUI/GUI_ObjectList.cpp:2653 +msgid "Set extruder for selected items" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2654 +msgid "Select extruder number for selected objects and/or parts" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2667 +msgid "Select extruder number:" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectList.cpp:2668 +msgid "This extruder will be set for selected items" +msgstr "" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25 msgid "Object Manipulation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:132 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47 msgid "Object name" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:204 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:252 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160 msgid "Position" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:205 -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:253 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161 msgid "Rotation" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:254 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221 +#: src/libslic3r/PrintConfig.cpp:3070 +msgid "Scale" +msgstr "缩放" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162 msgid "Scale factors" msgstr "" -#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:321 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200 +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220 +#: src/libslic3r/PrintConfig.cpp:3055 +msgid "Rotate" +msgstr "旋转" + +#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219 msgid "Translate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:235 +#: src/slic3r/GUI/GUI_ObjectSettings.cpp:58 +msgid "Additional Settings" +msgstr "" + +#: src/slic3r/GUI/GUI_Preview.cpp:209 msgid "View" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525 #: src/libslic3r/GCode/PreviewData.cpp:394 msgid "Feature type" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:239 src/libslic3r/PrintConfig.cpp:443 +#: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467 msgid "Height" msgstr "高度" -#: src/slic3r/GUI/GUI_Preview.cpp:240 src/libslic3r/PrintConfig.cpp:2255 +#: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135 msgid "Width" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:242 +#: src/slic3r/GUI/GUI_Preview.cpp:216 msgid "Volumetric flow rate" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:243 src/slic3r/GUI/GUI_Preview.cpp:347 -#: src/slic3r/GUI/GUI_Preview.cpp:496 src/slic3r/GUI/GUI_Preview.cpp:718 -#: src/libslic3r/GCode/PreviewData.cpp:404 +#: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315 +#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525 +#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404 msgid "Tool" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:244 src/slic3r/GUI/GUI_Preview.cpp:550 +#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523 #: src/libslic3r/GCode/PreviewData.cpp:406 msgid "Color Print" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:247 +#: src/slic3r/GUI/GUI_Preview.cpp:221 msgid "Show" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:250 src/slic3r/GUI/GUI_Preview.cpp:251 +#: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225 msgid "Feature types" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:253 src/libslic3r/GCode/PreviewData.cpp:163 +#: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163 msgid "Perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:254 src/libslic3r/GCode/PreviewData.cpp:164 +#: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164 msgid "External perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:255 src/libslic3r/GCode/PreviewData.cpp:165 +#: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165 msgid "Overhang perimeter" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:256 src/libslic3r/GCode/PreviewData.cpp:166 +#: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166 msgid "Internal infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:257 src/libslic3r/PrintConfig.cpp:1764 -#: src/libslic3r/PrintConfig.cpp:1775 src/libslic3r/GCode/PreviewData.cpp:167 +#: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686 +#: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167 msgid "Solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:258 src/libslic3r/PrintConfig.cpp:2123 -#: src/libslic3r/PrintConfig.cpp:2135 src/libslic3r/GCode/PreviewData.cpp:168 +#: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016 +#: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168 msgid "Top solid infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:259 src/libslic3r/GCode/PreviewData.cpp:169 +#: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169 msgid "Bridge infill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:260 src/libslic3r/PrintConfig.cpp:880 +#: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869 #: src/libslic3r/GCode/PreviewData.cpp:170 msgid "Gap fill" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:261 src/slic3r/GUI/Tab.cpp:971 +#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001 #: src/libslic3r/GCode/PreviewData.cpp:171 msgid "Skirt" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:263 src/libslic3r/PrintConfig.cpp:2002 +#: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903 #: src/libslic3r/GCode/PreviewData.cpp:173 msgid "Support material interface" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:264 src/slic3r/GUI/Tab.cpp:1049 +#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081 #: src/libslic3r/GCode/PreviewData.cpp:174 msgid "Wipe tower" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:269 src/libslic3r/PrintConfig.cpp:2158 +#: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049 msgid "Travel" msgstr "空程" -#: src/slic3r/GUI/GUI_Preview.cpp:270 +#: src/slic3r/GUI/GUI_Preview.cpp:244 msgid "Retractions" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:271 +#: src/slic3r/GUI/GUI_Preview.cpp:245 msgid "Unretractions" msgstr "" -#: src/slic3r/GUI/GUI_Preview.cpp:272 +#: src/slic3r/GUI/GUI_Preview.cpp:246 msgid "Shells" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:12 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 msgid "Slic3r Prusa Edition - Keyboard Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:47 -#: src/slic3r/GUI/KBShortcutsDialog.cpp:126 -msgid "Main Shortcuts" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:100 msgid "Open project STL/OBJ/AMF/3MF with config, delete bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:101 msgid "Import STL/OBJ/AMF/3MF without config, keep bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:102 msgid "Load Config from .ini/amf/3mf/gcode" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 src/slic3r/GUI/Plater.cpp:605 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725 +#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957 msgid "Export G-code" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:104 msgid "Save project (3MF)" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:105 msgid "Load Config from .ini/amf/3mf/gcode and merge" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:106 msgid "(Re)slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:107 msgid "Quick slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat last quick slice" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:109 msgid "Select Plater Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:110 msgid "Quick slice and Save as" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:111 msgid "Select Print Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:112 msgid "Select Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 msgid "Select Printer Settings Tab" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:114 msgid "Switch to 3D" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:115 msgid "Switch to Preview" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 src/slic3r/GUI/Preferences.cpp:10 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10 msgid "Preferences" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 -#: src/slic3r/GUI/PrintHostDialogs.cpp:89 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:117 +#: src/slic3r/GUI/PrintHostDialogs.cpp:134 msgid "Print host upload queue" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:118 msgid "Camera view " msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:119 msgid "Add Instance to selected object " msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:120 msgid "Remove Instance from selected object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 msgid "Show keyboard shortcuts list" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:123 -msgid "Switch between 3D and Preview" -msgstr "" - -#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:122 msgid "Select multiple object/Move multiple object" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:124 +msgid "Main Shortcuts" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:130 msgid "Arrange" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:131 msgid "Select All objects" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:132 msgid "Delete selected" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:133 msgid "Delete All" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:134 msgid "Gizmo move" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:135 msgid "Gizmo scale" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:136 msgid "Gizmo rotate" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:137 msgid "Gizmo cut" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:138 msgid "Gizmo Place face on bed" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:139 msgid "Gizmo SLA support points" msgstr "" +#: src/slic3r/GUI/KBShortcutsDialog.cpp:140 +#, no-c-format +msgid "" +"Press to snap by 5% in Gizmo scale\n" +"or by 1mm in Gizmo move" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:141 +msgid "" +"Press to scale or rotate selected objects\n" +"around their own center" +msgstr "" + #: src/slic3r/GUI/KBShortcutsDialog.cpp:142 msgid "Zoom to Bed" msgstr "" @@ -1388,919 +1665,1005 @@ msgstr "" msgid "Plater Shortcuts" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 msgid "Arrow Up" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:155 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:164 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:166 msgid "Upper Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 msgid "Arrow Down" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:156 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:165 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:167 msgid "Lower Layer" msgstr "" -#: src/slic3r/GUI/KBShortcutsDialog.cpp:158 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:169 msgid "Preview Shortcuts" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:53 +#: src/slic3r/GUI/KBShortcutsDialog.cpp:175 +msgid "Move current slider thump Up" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:176 +msgid "Move current slider thump Down" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Arrow Left" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:177 +msgid "Set upper thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Arrow Right" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:178 +msgid "Set lower thumb to current slider thumb" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:179 +msgid "Add color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:180 +msgid "Delete color change marker for current layer" +msgstr "" + +#: src/slic3r/GUI/KBShortcutsDialog.cpp:182 +msgid "Layers Slider Shortcuts" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:54 msgid "" " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:130 +#: src/slic3r/GUI/MainFrame.cpp:160 msgid "Plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:236 -msgid "&Open" +#: src/slic3r/GUI/MainFrame.cpp:273 +msgid "&Open Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:236 +#: src/slic3r/GUI/MainFrame.cpp:273 msgid "Open a project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:238 -msgid "&Save" +#: src/slic3r/GUI/MainFrame.cpp:275 +msgid "&Save Project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:238 +#: src/slic3r/GUI/MainFrame.cpp:275 msgid "Save current project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:240 -msgid "Save &as" +#: src/slic3r/GUI/MainFrame.cpp:277 +msgid "Save Project &as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:240 +#: src/slic3r/GUI/MainFrame.cpp:277 msgid "Save current project file as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:283 msgid "Import STL/OBJ/AM&F/3MF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:246 +#: src/slic3r/GUI/MainFrame.cpp:283 msgid "Load a model" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:286 msgid "Import &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:249 +#: src/slic3r/GUI/MainFrame.cpp:286 msgid "Load exported configuration file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:288 msgid "Import Config from &project" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:251 +#: src/slic3r/GUI/MainFrame.cpp:288 msgid "Load configuration from project file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:291 msgid "Import Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:254 +#: src/slic3r/GUI/MainFrame.cpp:291 msgid "Load presets from a bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:256 +#: src/slic3r/GUI/MainFrame.cpp:293 msgid "&Import" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export &G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:259 +#: src/slic3r/GUI/MainFrame.cpp:296 msgid "Export current plate as G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export plate as &STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:262 +#: src/slic3r/GUI/MainFrame.cpp:299 msgid "Export current plate as STL" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export plate as &AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:264 +#: src/slic3r/GUI/MainFrame.cpp:301 msgid "Export current plate as AMF" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export &Config" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:267 +#: src/slic3r/GUI/MainFrame.cpp:304 msgid "Export current configuration to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export Config &Bundle" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:269 +#: src/slic3r/GUI/MainFrame.cpp:306 msgid "Export all presets to file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:271 +#: src/slic3r/GUI/MainFrame.cpp:308 msgid "&Export" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:314 msgid "Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:277 +#: src/slic3r/GUI/MainFrame.cpp:314 msgid "Slice a file into a G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:320 msgid "Quick Slice and Save As" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:283 +#: src/slic3r/GUI/MainFrame.cpp:320 msgid "Slice a file into a G-code, save as" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:289 +#: src/slic3r/GUI/MainFrame.cpp:326 msgid "Repeat Last Quick Slice" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:334 msgid "(Re)Slice &Now" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:297 +#: src/slic3r/GUI/MainFrame.cpp:334 msgid "Start new slicing process" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:337 msgid "&Repair STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:300 +#: src/slic3r/GUI/MainFrame.cpp:337 msgid "Automatically repair an STL file" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:340 msgid "&Quit" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:303 +#: src/slic3r/GUI/MainFrame.cpp:340 msgid "Quit Slic3r" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:374 msgid "&Select all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:321 +#: src/slic3r/GUI/MainFrame.cpp:374 msgid "Selects all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "&Delete selected" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:324 +#: src/slic3r/GUI/MainFrame.cpp:377 msgid "Deletes the current selection" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:379 msgid "Delete &all" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:326 +#: src/slic3r/GUI/MainFrame.cpp:379 msgid "Deletes all objects" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:392 msgid "&Plater Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:339 +#: src/slic3r/GUI/MainFrame.cpp:392 msgid "Show the plater" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:399 msgid "P&rint Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:346 +#: src/slic3r/GUI/MainFrame.cpp:399 msgid "Show the print settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "&Filament Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:348 +#: src/slic3r/GUI/MainFrame.cpp:401 msgid "Show the filament settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Print&er Settings Tab" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:350 +#: src/slic3r/GUI/MainFrame.cpp:403 msgid "Show the printer settings" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:407 msgid "3&D" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:354 +#: src/slic3r/GUI/MainFrame.cpp:407 msgid "Show the 3D editing view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "Pre&view" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:356 +#: src/slic3r/GUI/MainFrame.cpp:409 msgid "Show the 3D slices preview" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:430 msgid "Print &Host Upload Queue" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:377 +#: src/slic3r/GUI/MainFrame.cpp:430 msgid "Display the Print Host Upload Queue window" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "&Iso" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:388 -msgid "Iso View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "&Top" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:390 -msgid "Top View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "&Bottom" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:391 -msgid "Bottom View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "&Front" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:392 -msgid "Front View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "R&ear" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:393 -msgid "Rear View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "&Left" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:394 -msgid "Left View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "&Right" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:395 -msgid "Right View" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Prusa 3D &Drivers" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:409 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Prusa Edition &Releases" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:411 -msgid "Open the Prusa Edition releases page in your browser" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Slic3r &Website" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:417 -msgid "Open the Slic3r website in your browser" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Slic3r &Manual" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:419 -msgid "Open the Slic3r manual in your browser" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "System &Info" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:422 -msgid "Show system information" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show &Configuration Folder" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:424 -msgid "Show user configuration folder (datadir)" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an I&ssue" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:426 -msgid "Report an issue on the Slic3r Prusa Edition" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "&About Slic3r" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:428 -msgid "Show about dialog" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "&Keyboard Shortcuts" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:431 -msgid "Show the list of the keyboard shortcuts" +#: src/slic3r/GUI/MainFrame.cpp:439 +msgid "Iso" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:439 -msgid "&File" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:440 -msgid "&Edit" +msgid "Iso View" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:441 -msgid "&Window" +msgid "Top" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2041 +msgctxt "Layers" +msgid "Top" +msgstr "顶部" + +#: src/slic3r/GUI/MainFrame.cpp:441 +msgid "Top View" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:442 -msgid "&View" +msgid "Bottom" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:148 +msgctxt "Layers" +msgid "Bottom" +msgstr "底部" + +#: src/slic3r/GUI/MainFrame.cpp:442 +msgid "Bottom View" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:443 +msgid "Front" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:443 +msgid "Front View" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561 +msgid "Rear" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:444 +msgid "Rear View" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:445 -msgid "&Help" +msgid "Left" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:472 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" +#: src/slic3r/GUI/MainFrame.cpp:445 +msgid "Left View" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:486 -msgid "No previously sliced file." +#: src/slic3r/GUI/MainFrame.cpp:446 +msgid "Right" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:487 src/slic3r/GUI/PrintHostDialogs.cpp:173 -msgid "Error" +#: src/slic3r/GUI/MainFrame.cpp:446 +msgid "Right View" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:460 +msgid "Prusa 3D &Drivers" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:460 +msgid "Open the Prusa3D drivers download page in your browser" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:462 +msgid "Prusa Edition &Releases" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:462 +msgid "Open the Prusa Edition releases page in your browser" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:468 +msgid "Slic3r &Website" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:468 +msgid "Open the Slic3r website in your browser" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:470 +msgid "Slic3r &Manual" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:470 +msgid "Open the Slic3r manual in your browser" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:473 +msgid "System &Info" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:473 +msgid "Show system information" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:475 +msgid "Show &Configuration Folder" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:475 +msgid "Show user configuration folder (datadir)" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:477 +msgid "Report an I&ssue" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:477 +msgid "Report an issue on the Slic3r Prusa Edition" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:479 +msgid "&About Slic3r" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:479 +msgid "Show about dialog" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:482 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:482 +msgid "Show the list of the keyboard shortcuts" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:490 +msgid "&File" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:491 +msgid "&Edit" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:492 -msgid "Previously sliced file (" -msgstr "" - -#: src/slic3r/GUI/MainFrame.cpp:492 -msgid ") not found." +msgid "&Window" msgstr "" #: src/slic3r/GUI/MainFrame.cpp:493 +msgid "&View" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:496 +msgid "&Help" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:524 +msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:538 +msgid "No previously sliced file." +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219 +msgid "Error" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:544 +msgid "Previously sliced file (" +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:544 +msgid ") not found." +msgstr "" + +#: src/slic3r/GUI/MainFrame.cpp:545 msgid "File Not Found" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 src/slic3r/GUI/Tab.cpp:3031 +#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152 msgid "Save " msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "SVG" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid "G-code" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:531 +#: src/slic3r/GUI/MainFrame.cpp:580 msgid " file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:548 +#: src/slic3r/GUI/MainFrame.cpp:595 msgid "Save zip file as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110 +#: src/slic3r/GUI/Tab.cpp:3348 msgid "Slicing" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:560 +#: src/slic3r/GUI/MainFrame.cpp:607 msgid "Processing " msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:583 +#: src/slic3r/GUI/MainFrame.cpp:630 msgid " was successfully sliced." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:585 +#: src/slic3r/GUI/MainFrame.cpp:632 msgid "Slicing Done!" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:600 +#: src/slic3r/GUI/MainFrame.cpp:647 msgid "Select the STL file to repair:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:614 +#: src/slic3r/GUI/MainFrame.cpp:661 msgid "Save OBJ file (less prone to coordinate errors than STL) as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:676 msgid "Your file was repaired." msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:629 +#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051 msgid "Repair" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:643 +#: src/slic3r/GUI/MainFrame.cpp:690 msgid "Save configuration as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:663 src/slic3r/GUI/MainFrame.cpp:727 +#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774 msgid "Select configuration to load:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:700 +#: src/slic3r/GUI/MainFrame.cpp:747 msgid "Save presets bundle as:" msgstr "" -#: src/slic3r/GUI/MainFrame.cpp:751 +#: src/slic3r/GUI/MainFrame.cpp:798 #, c-format msgid "%d presets successfully imported." msgstr "" -#: src/slic3r/GUI/MsgDialog.cpp:66 +#: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r error" msgstr "" -#: src/slic3r/GUI/MsgDialog.cpp:66 +#: src/slic3r/GUI/MsgDialog.cpp:71 msgid "Slic3r has encountered an error" msgstr "" -#: src/slic3r/GUI/MsgDialog.cpp:84 -msgid "Copy to clipboard" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:107 -msgid "Info" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:126 +#: src/slic3r/GUI/Plater.cpp:137 msgid "Volume" msgstr "" -#: src/slic3r/GUI/Plater.cpp:127 +#: src/slic3r/GUI/Plater.cpp:138 msgid "Facets" msgstr "" -#: src/slic3r/GUI/Plater.cpp:128 +#: src/slic3r/GUI/Plater.cpp:139 msgid "Materials" msgstr "" -#: src/slic3r/GUI/Plater.cpp:131 +#: src/slic3r/GUI/Plater.cpp:142 msgid "Manifold" msgstr "" -#: src/slic3r/GUI/Plater.cpp:174 +#: src/slic3r/GUI/Plater.cpp:188 msgid "Sliced Info" msgstr "" -#: src/slic3r/GUI/Plater.cpp:193 src/slic3r/GUI/Plater.cpp:823 +#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998 msgid "Used Filament (m)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:194 +#: src/slic3r/GUI/Plater.cpp:208 msgid "Used Filament (mm³)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:195 +#: src/slic3r/GUI/Plater.cpp:209 msgid "Used Filament (g)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:196 src/slic3r/GUI/Plater.cpp:838 -#: src/libslic3r/PrintConfig.cpp:718 +#: src/slic3r/GUI/Plater.cpp:210 +msgid "Used Material (unit)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013 +#: src/libslic3r/PrintConfig.cpp:716 msgid "Cost" msgstr "å•ä»·" -#: src/slic3r/GUI/Plater.cpp:197 src/slic3r/GUI/Plater.cpp:852 +#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985 +#: src/slic3r/GUI/Plater.cpp:1027 msgid "Estimated printing time" msgstr "" -#: src/slic3r/GUI/Plater.cpp:198 +#: src/slic3r/GUI/Plater.cpp:213 msgid "Number of tool changes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:361 -msgid "Support" +#: src/slic3r/GUI/Plater.cpp:290 +msgid "Click to edit preset" msgstr "" -#: src/slic3r/GUI/Plater.cpp:364 +#: src/slic3r/GUI/Plater.cpp:413 msgid "Select what kind of support do you need" msgstr "" -#: src/slic3r/GUI/Plater.cpp:365 src/libslic3r/GCode/PreviewData.cpp:162 -msgid "None" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:366 src/libslic3r/PrintConfig.cpp:1904 +#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814 +#: src/libslic3r/PrintConfig.cpp:2419 msgid "Support on build plate only" msgstr "ä»…åœ¨çƒ­åºŠä¸Šç”Ÿæˆæ”¯æ’‘" -#: src/slic3r/GUI/Plater.cpp:367 +#: src/slic3r/GUI/Plater.cpp:416 msgid "Everywhere" msgstr "" -#: src/slic3r/GUI/Plater.cpp:379 src/slic3r/GUI/Tab.cpp:977 +#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007 msgid "Brim" msgstr "" -#: src/slic3r/GUI/Plater.cpp:381 +#: src/slic3r/GUI/Plater.cpp:440 msgid "" "This flag enables the brim that will be printed around each object on the " "first layer." msgstr "" -#: src/slic3r/GUI/Plater.cpp:390 +#: src/slic3r/GUI/Plater.cpp:448 msgid "Purging volumes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:556 +#: src/slic3r/GUI/Plater.cpp:673 msgid "Print settings" msgstr "" -#: src/slic3r/GUI/Plater.cpp:557 src/slic3r/GUI/Tab.cpp:1380 -#: src/slic3r/GUI/Tab.cpp:1381 +#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421 +#: src/slic3r/GUI/Tab.cpp:1422 msgid "Filament" msgstr "" -#: src/slic3r/GUI/Plater.cpp:558 src/slic3r/GUI/Preset.cpp:1158 +#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252 msgid "SLA print" msgstr "" -#: src/slic3r/GUI/Plater.cpp:559 src/slic3r/GUI/Preset.cpp:1159 +#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253 msgid "SLA material" msgstr "" -#: src/slic3r/GUI/Plater.cpp:560 +#: src/slic3r/GUI/Plater.cpp:677 msgid "Printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:588 +#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674 msgid "Send to printer" msgstr "" -#: src/slic3r/GUI/Plater.cpp:607 +#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352 +#: src/slic3r/GUI/Plater.cpp:3470 msgid "Slice now" msgstr "" -#: src/slic3r/GUI/Plater.cpp:787 +#: src/slic3r/GUI/Plater.cpp:860 +msgid "Hold Shift to Slice & Export G-code" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:931 #, c-format msgid "%d (%d shells)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:792 +#: src/slic3r/GUI/Plater.cpp:936 #, c-format msgid "Auto-repaired (%d errors)" msgstr "" -#: src/slic3r/GUI/Plater.cpp:795 +#: src/slic3r/GUI/Plater.cpp:939 #, c-format msgid "" "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " "facets reversed, %d backwards edges" msgstr "" -#: src/slic3r/GUI/Plater.cpp:805 +#: src/slic3r/GUI/Plater.cpp:949 msgid "Yes" msgstr "" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:972 +msgid "Used Material (ml)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:975 +msgid "object(s)" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:975 +msgid "supports and pad" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:825 src/slic3r/GUI/Plater.cpp:840 +#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015 msgid "wipe tower" msgstr "" -#: src/slic3r/GUI/Plater.cpp:855 +#: src/slic3r/GUI/Plater.cpp:1030 msgid "normal mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:859 +#: src/slic3r/GUI/Plater.cpp:1034 msgid "silent mode" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1304 +#: src/slic3r/GUI/Plater.cpp:1544 msgid "Loading" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1314 +#: src/slic3r/GUI/Plater.cpp:1554 #, c-format msgid "Processing input file %s\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1366 +#: src/slic3r/GUI/Plater.cpp:1612 msgid "" "This file contains several objects positioned at multiple heights. Instead " "of considering them as multiple objects, should I consider\n" "this file as a single object having multiple parts?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1369 src/slic3r/GUI/Plater.cpp:1411 +#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707 msgid "Multi-part object detected" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1388 +#: src/slic3r/GUI/Plater.cpp:1650 +msgid "" +"This file cannot be loaded in simple mode. Do you want to switch to expert " +"mode?\n" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1651 +msgid "Detected advanced data" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1684 #, c-format msgid "" "You can't to add the object(s) from %s because of one or some of them " "is(are) multi-part" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1408 +#: src/slic3r/GUI/Plater.cpp:1704 msgid "" "Multiple objects were loaded for a multi-material printer.\n" "Instead of considering them as multiple objects, should I consider\n" "these files to represent a single object having multiple parts?\n" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1424 +#: src/slic3r/GUI/Plater.cpp:1720 msgid "Loaded" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1492 +#: src/slic3r/GUI/Plater.cpp:1812 msgid "" "Your object appears to be too large, so it was automatically scaled down to " "fit your print bed." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1493 +#: src/slic3r/GUI/Plater.cpp:1813 msgid "Object too large?" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1536 -msgid "Export print config" +#: src/slic3r/GUI/Plater.cpp:1863 +msgid "Export STL file:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1538 +#: src/slic3r/GUI/Plater.cpp:1870 +msgid "Export AMF file:" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:1876 msgid "Save file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1702 +#: src/slic3r/GUI/Plater.cpp:2042 msgid "Arranging canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1705 +#: src/slic3r/GUI/Plater.cpp:2045 msgid "Arranging" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1736 +#: src/slic3r/GUI/Plater.cpp:2079 msgid "Could not arrange model objects! Some geometries may be invalid." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1740 +#: src/slic3r/GUI/Plater.cpp:2083 msgid "Arranging done." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1782 +#: src/slic3r/GUI/Plater.cpp:2124 msgid "Orientation search canceled" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1787 +#: src/slic3r/GUI/Plater.cpp:2129 msgid "Searching for optimal orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:1797 +#: src/slic3r/GUI/Plater.cpp:2190 msgid "Orientation found." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1818 +#: src/slic3r/GUI/Plater.cpp:2211 msgid "" "The selected object can't be split because it contains more than one volume/" "material." msgstr "" -#: src/slic3r/GUI/Plater.cpp:1945 src/slic3r/GUI/PrintHostDialogs.cpp:174 -msgid "Cancelling" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:1962 -msgid "Another export job is currently running." -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2215 -msgid "Export failed" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2219 src/slic3r/GUI/PrintHostDialogs.cpp:175 -msgid "Cancelled" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2346 src/slic3r/GUI/Tab.cpp:2736 -msgid "Delete" +#: src/slic3r/GUI/Plater.cpp:2337 +msgid "Invalid data" msgstr "" #: src/slic3r/GUI/Plater.cpp:2346 -msgid "Remove the selected object" +msgid "Ready to slice" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220 +msgid "Cancelling" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2396 +msgid "Another export job is currently running." +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2656 +msgid "Export failed" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221 +msgid "Cancelled" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759 +#: src/slic3r/GUI/Plater.cpp:2831 msgid "Increase copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2349 +#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843 +msgid "Remove the selected object" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:2831 msgid "Place one more copy of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2833 msgid "Decrease copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2351 +#: src/slic3r/GUI/Plater.cpp:2833 msgid "Remove one copy of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2835 msgid "Set number of copies" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2353 +#: src/slic3r/GUI/Plater.cpp:2835 msgid "Change the number of copies of the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2858 msgid "Reload from Disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2363 +#: src/slic3r/GUI/Plater.cpp:2858 msgid "Reload the selected file from Disk" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export object as STL" +#: src/slic3r/GUI/Plater.cpp:2861 +msgid "Export the selected object as STL file" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2366 -msgid "Export this single object as STL file" -msgstr "" - -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2873 msgid "Along X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2375 +#: src/slic3r/GUI/Plater.cpp:2873 msgid "Mirror the selected object along the X axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2875 msgid "Along Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2377 +#: src/slic3r/GUI/Plater.cpp:2875 msgid "Mirror the selected object along the Y axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2877 msgid "Along Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2379 +#: src/slic3r/GUI/Plater.cpp:2877 msgid "Mirror the selected object along the Z axis" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Mirror" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2382 +#: src/slic3r/GUI/Plater.cpp:2880 msgid "Mirror the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2400 +#: src/slic3r/GUI/Plater.cpp:2898 msgid "To objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/Plater.cpp:2431 +#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920 msgid "Split the selected object into individual objects" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 +#: src/slic3r/GUI/Plater.cpp:2900 msgid "To parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2402 src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940 msgid "Split the selected object into individual sub-parts" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2405 src/slic3r/GUI/Plater.cpp:2431 -#: src/slic3r/GUI/Plater.cpp:2451 +#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920 +#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075 msgid "Split" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2405 +#: src/slic3r/GUI/Plater.cpp:2903 msgid "Split the selected object" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:2926 msgid "Optimize orientation" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2435 +#: src/slic3r/GUI/Plater.cpp:2926 msgid "Optimize the rotation of the object for better print results." msgstr "" -#: src/slic3r/GUI/Plater.cpp:2795 +#: src/slic3r/GUI/Plater.cpp:3342 msgid "Save G-code file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2795 -msgid "Save Zip file as:" +#: src/slic3r/GUI/Plater.cpp:3342 +msgid "Save SL1 file as:" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2845 +#: src/slic3r/GUI/Plater.cpp:3397 #, c-format msgid "STL file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2861 +#: src/slic3r/GUI/Plater.cpp:3413 #, c-format msgid "AMF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2864 +#: src/slic3r/GUI/Plater.cpp:3416 #, c-format msgid "Error exporting AMF file %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2891 +#: src/slic3r/GUI/Plater.cpp:3442 #, c-format msgid "3MF file exported to %s" msgstr "" -#: src/slic3r/GUI/Plater.cpp:2894 +#: src/slic3r/GUI/Plater.cpp:3445 #, c-format msgid "Error exporting 3MF file %s" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1712 -#: src/slic3r/GUI/Tab.cpp:1911 +#: src/slic3r/GUI/Plater.cpp:3673 +msgid "Export" +msgstr "" + +#: src/slic3r/GUI/Plater.cpp:3674 +msgid "Send G-code" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762 +#: src/slic3r/GUI/Tab.cpp:1963 msgid "General" msgstr "" @@ -2354,37 +2717,51 @@ msgid "" "even if they are marked as incompatible with the active printer" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:90 +#: src/slic3r/GUI/Preferences.cpp:91 msgid "Use legacy OpenGL 1.1 rendering" msgstr "" -#: src/slic3r/GUI/Preferences.cpp:92 +#: src/slic3r/GUI/Preferences.cpp:93 msgid "" "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " "try to check this checkbox. This will disable the layer height editing and " "anti aliasing, so it is likely better to upgrade your graphics driver." msgstr "" -#: src/slic3r/GUI/Preferences.cpp:115 +#: src/slic3r/GUI/Preferences.cpp:101 +msgid "Use Retina resolution for the 3D scene" +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:103 +msgid "" +"If enabled, the 3D scene will be rendered in Retina resolution. If you are " +"experiencing 3D performance problems, disabling this option may help." +msgstr "" + +#: src/slic3r/GUI/Preferences.cpp:126 msgid "You need to restart Slic3r to make the changes effective." msgstr "" -#: src/slic3r/GUI/Preset.cpp:170 +#: src/slic3r/GUI/Preset.cpp:207 msgid "modified" msgstr "" -#: src/slic3r/GUI/Preset.cpp:862 src/slic3r/GUI/Preset.cpp:902 -#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:962 -#: src/slic3r/GUI/PresetBundle.cpp:1459 src/slic3r/GUI/PresetBundle.cpp:1512 +#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958 +#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043 +#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537 msgid "System presets" msgstr "" -#: src/slic3r/GUI/Preset.cpp:906 src/slic3r/GUI/Preset.cpp:966 -#: src/slic3r/GUI/PresetBundle.cpp:1517 +#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047 +#: src/slic3r/GUI/PresetBundle.cpp:1542 msgid "User presets" msgstr "" -#: src/slic3r/GUI/Preset.cpp:1157 +#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247 +msgid "Add a new printer" +msgstr "" + +#: src/slic3r/GUI/Preset.cpp:1251 msgid "filament" msgstr "" @@ -2514,48 +2891,44 @@ msgstr "" msgid "%d lines: %.2lf mm" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 +#: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Send G-Code to printer host" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:29 +#: src/slic3r/GUI/PrintHostDialogs.cpp:32 msgid "Upload to Printer Host with the following filename:" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:31 +#: src/slic3r/GUI/PrintHostDialogs.cpp:34 msgid "Start printing after upload" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:33 +#: src/slic3r/GUI/PrintHostDialogs.cpp:41 msgid "Use forward slashes ( / ) as a directory separator if needed." msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:111 +#: src/slic3r/GUI/PrintHostDialogs.cpp:157 msgid "Cancel selected" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:113 +#: src/slic3r/GUI/PrintHostDialogs.cpp:159 msgid "Show error message" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:115 -msgid "Close" -msgstr "" - -#: src/slic3r/GUI/PrintHostDialogs.cpp:152 -#: src/slic3r/GUI/PrintHostDialogs.cpp:171 +#: src/slic3r/GUI/PrintHostDialogs.cpp:198 +#: src/slic3r/GUI/PrintHostDialogs.cpp:217 msgid "Enqueued" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:172 +#: src/slic3r/GUI/PrintHostDialogs.cpp:218 msgid "Uploading" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:176 +#: src/slic3r/GUI/PrintHostDialogs.cpp:222 msgid "Completed" msgstr "" -#: src/slic3r/GUI/PrintHostDialogs.cpp:214 +#: src/slic3r/GUI/PrintHostDialogs.cpp:260 msgid "Error uploading to print host:" msgstr "" @@ -2568,10 +2941,10 @@ msgid "Time" msgstr "" #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81 -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 src/libslic3r/PrintConfig.cpp:603 -#: src/libslic3r/PrintConfig.cpp:653 src/libslic3r/PrintConfig.cpp:670 -#: src/libslic3r/PrintConfig.cpp:2352 src/libslic3r/PrintConfig.cpp:2360 -#: src/libslic3r/PrintConfig.cpp:2432 src/libslic3r/PrintConfig.cpp:2440 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670 +#: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250 +#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315 msgid "s" msgstr "" @@ -2579,214 +2952,214 @@ msgstr "" msgid "Volumetric speed" msgstr "" -#: src/slic3r/GUI/SysInfoDialog.cpp:40 +#: src/slic3r/GUI/SysInfoDialog.cpp:44 msgid "Slic3r Prusa Edition - System Information" msgstr "" -#: src/slic3r/GUI/Tab.cpp:49 src/libslic3r/PrintConfig.cpp:202 +#: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228 msgid "Compatible printers" msgstr "å…¼å®¹çš„æ‰“å°æœº" -#: src/slic3r/GUI/Tab.cpp:50 +#: src/slic3r/GUI/Tab.cpp:51 msgid "Select the printers this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:55 src/libslic3r/PrintConfig.cpp:215 +#: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243 msgid "Compatible print profiles" msgstr "" -#: src/slic3r/GUI/Tab.cpp:56 +#: src/slic3r/GUI/Tab.cpp:57 msgid "Select the print profiles this profile is compatible with." msgstr "" -#: src/slic3r/GUI/Tab.cpp:118 +#: src/slic3r/GUI/Tab.cpp:132 msgid "Save current " msgstr "" -#: src/slic3r/GUI/Tab.cpp:119 +#: src/slic3r/GUI/Tab.cpp:133 msgid "Delete this preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:131 +#: src/slic3r/GUI/Tab.cpp:145 msgid "" "Hover the cursor over buttons to find more information \n" "or click this button." msgstr "" -#: src/slic3r/GUI/Tab.cpp:824 +#: src/slic3r/GUI/Tab.cpp:858 msgid "It's a default preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:825 +#: src/slic3r/GUI/Tab.cpp:859 msgid "It's a system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:826 +#: src/slic3r/GUI/Tab.cpp:860 msgid "Current preset is inherited from " msgstr "" -#: src/slic3r/GUI/Tab.cpp:831 +#: src/slic3r/GUI/Tab.cpp:865 msgid "It can't be deleted or modified. " msgstr "" -#: src/slic3r/GUI/Tab.cpp:832 +#: src/slic3r/GUI/Tab.cpp:866 msgid "" "Any modifications should be saved as a new preset inherited from this one. " msgstr "" -#: src/slic3r/GUI/Tab.cpp:833 +#: src/slic3r/GUI/Tab.cpp:867 msgid "To do that please specify a new name for the preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:837 +#: src/slic3r/GUI/Tab.cpp:871 msgid "Additional information:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:843 +#: src/slic3r/GUI/Tab.cpp:877 msgid "printer model" msgstr "" -#: src/slic3r/GUI/Tab.cpp:851 +#: src/slic3r/GUI/Tab.cpp:885 msgid "default print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:854 +#: src/slic3r/GUI/Tab.cpp:888 msgid "default filament profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:868 +#: src/slic3r/GUI/Tab.cpp:902 msgid "default SLA material profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:872 +#: src/slic3r/GUI/Tab.cpp:906 msgid "default SLA print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:919 src/slic3r/GUI/Tab.cpp:3174 +#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303 msgid "Layers and perimeters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:920 src/libslic3r/PrintConfig.cpp:46 +#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55 msgid "Layer height" msgstr "层高" -#: src/slic3r/GUI/Tab.cpp:924 +#: src/slic3r/GUI/Tab.cpp:953 msgid "Vertical shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:935 +#: src/slic3r/GUI/Tab.cpp:964 msgid "Horizontal shells" msgstr "" -#: src/slic3r/GUI/Tab.cpp:936 src/libslic3r/PrintConfig.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709 msgid "Solid layers" msgstr "å¯é å±‚æ•°" -#: src/slic3r/GUI/Tab.cpp:941 +#: src/slic3r/GUI/Tab.cpp:970 msgid "Quality (slower slicing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:958 +#: src/slic3r/GUI/Tab.cpp:988 msgid "Reducing printing time" msgstr "" -#: src/slic3r/GUI/Tab.cpp:970 +#: src/slic3r/GUI/Tab.cpp:1000 msgid "Skirt and brim" msgstr "环边和裙边" -#: src/slic3r/GUI/Tab.cpp:987 +#: src/slic3r/GUI/Tab.cpp:1017 msgid "Raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:991 +#: src/slic3r/GUI/Tab.cpp:1021 msgid "Options for support material and raft" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1006 +#: src/slic3r/GUI/Tab.cpp:1036 msgid "Speed for print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1018 +#: src/slic3r/GUI/Tab.cpp:1048 msgid "Speed for non-print moves" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1021 +#: src/slic3r/GUI/Tab.cpp:1051 msgid "Modifiers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1024 +#: src/slic3r/GUI/Tab.cpp:1054 msgid "Acceleration control (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1031 +#: src/slic3r/GUI/Tab.cpp:1061 msgid "Autospeed (advanced)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1037 +#: src/slic3r/GUI/Tab.cpp:1069 msgid "Multiple Extruders" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1045 +#: src/slic3r/GUI/Tab.cpp:1077 msgid "Ooze prevention" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1062 +#: src/slic3r/GUI/Tab.cpp:1094 msgid "Extrusion width" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1072 +#: src/slic3r/GUI/Tab.cpp:1104 msgid "Overlap" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1075 +#: src/slic3r/GUI/Tab.cpp:1107 msgid "Flow" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1078 +#: src/slic3r/GUI/Tab.cpp:1116 msgid "Other" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1085 src/slic3r/GUI/Tab.cpp:3213 +#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351 msgid "Output options" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1086 +#: src/slic3r/GUI/Tab.cpp:1120 msgid "Sequential printing" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1088 +#: src/slic3r/GUI/Tab.cpp:1122 msgid "Extruder clearance (mm)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1097 src/slic3r/GUI/Tab.cpp:3214 +#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352 msgid "Output file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1103 src/libslic3r/PrintConfig.cpp:1438 +#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382 msgid "Post-processing scripts" msgstr "åŽå¤„ç†è„šæœ¬" -#: src/slic3r/GUI/Tab.cpp:1109 src/slic3r/GUI/Tab.cpp:1110 -#: src/slic3r/GUI/Tab.cpp:1483 src/slic3r/GUI/Tab.cpp:1484 -#: src/slic3r/GUI/Tab.cpp:1883 src/slic3r/GUI/Tab.cpp:1884 -#: src/slic3r/GUI/Tab.cpp:1964 src/slic3r/GUI/Tab.cpp:1965 -#: src/slic3r/GUI/Tab.cpp:3119 src/slic3r/GUI/Tab.cpp:3120 +#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145 +#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528 +#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936 +#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028 +#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241 msgid "Notes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1116 src/slic3r/GUI/Tab.cpp:1491 -#: src/slic3r/GUI/Tab.cpp:1890 src/slic3r/GUI/Tab.cpp:1971 -#: src/slic3r/GUI/Tab.cpp:3127 src/slic3r/GUI/Tab.cpp:3219 +#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535 +#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034 +#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357 msgid "Dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1117 src/slic3r/GUI/Tab.cpp:1492 -#: src/slic3r/GUI/Tab.cpp:1891 src/slic3r/GUI/Tab.cpp:1972 -#: src/slic3r/GUI/Tab.cpp:3128 src/slic3r/GUI/Tab.cpp:3220 +#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536 +#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035 +#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358 msgid "Profile dependencies" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1161 +#: src/slic3r/GUI/Tab.cpp:1198 #, no-c-format msgid "" "The Spiral Vase mode requires:\n" @@ -2799,11 +3172,11 @@ msgid "" "Shall I adjust those settings in order to enable Spiral Vase?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1168 +#: src/slic3r/GUI/Tab.cpp:1205 msgid "Spiral Vase" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1191 +#: src/slic3r/GUI/Tab.cpp:1228 msgid "" "The Wipe Tower currently supports the non-soluble supports only\n" "if they are printed with the current extruder without triggering a tool " @@ -2814,11 +3187,11 @@ msgid "" "Shall I adjust those settings in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1195 src/slic3r/GUI/Tab.cpp:1212 +#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249 msgid "Wipe Tower" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1209 +#: src/slic3r/GUI/Tab.cpp:1246 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers\n" "need to be synchronized with the object layers.\n" @@ -2826,7 +3199,7 @@ msgid "" "Shall I synchronize support layers in order to enable the Wipe Tower?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1227 +#: src/slic3r/GUI/Tab.cpp:1264 msgid "" "Supports work better, if the following feature is enabled:\n" "- Detect bridging perimeters\n" @@ -2834,15 +3207,15 @@ msgid "" "Shall I adjust those settings for supports?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1230 +#: src/slic3r/GUI/Tab.cpp:1267 msgid "Support Generator" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1309 msgid "The " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1272 +#: src/slic3r/GUI/Tab.cpp:1309 #, no-c-format msgid "" " infill pattern is not supposed to work at 100% density.\n" @@ -2850,96 +3223,96 @@ msgid "" "Shall I switch to rectilinear fill pattern?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1388 +#: src/slic3r/GUI/Tab.cpp:1429 msgid "Temperature " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1394 +#: src/slic3r/GUI/Tab.cpp:1435 msgid "Bed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1399 +#: src/slic3r/GUI/Tab.cpp:1440 msgid "Cooling" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1400 src/libslic3r/PrintConfig.cpp:1333 -#: src/libslic3r/PrintConfig.cpp:2212 +#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285 +#: src/libslic3r/PrintConfig.cpp:2097 msgid "Enable" msgstr "使能" -#: src/slic3r/GUI/Tab.cpp:1411 +#: src/slic3r/GUI/Tab.cpp:1452 msgid "Fan settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1412 +#: src/slic3r/GUI/Tab.cpp:1453 msgid "Fan speed" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1420 +#: src/slic3r/GUI/Tab.cpp:1461 msgid "Cooling thresholds" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1426 +#: src/slic3r/GUI/Tab.cpp:1467 msgid "Filament properties" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1430 +#: src/slic3r/GUI/Tab.cpp:1471 msgid "Print speed override" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1440 +#: src/slic3r/GUI/Tab.cpp:1481 msgid "Toolchange parameters with single extruder MM printers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1455 +#: src/slic3r/GUI/Tab.cpp:1496 msgid "Ramming settings" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1470 src/slic3r/GUI/Tab.cpp:1846 +#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898 msgid "Custom G-code" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1471 src/slic3r/GUI/Tab.cpp:1847 -#: src/libslic3r/PrintConfig.cpp:1817 src/libslic3r/PrintConfig.cpp:1833 +#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899 +#: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750 msgid "Start G-code" msgstr "èµ·å§‹G代ç " -#: src/slic3r/GUI/Tab.cpp:1477 src/slic3r/GUI/Tab.cpp:1853 -#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:344 +#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905 +#: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368 msgid "End G-code" msgstr "结尾G代ç " -#: src/slic3r/GUI/Tab.cpp:1588 src/slic3r/GUI/Tab.cpp:1642 +#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689 msgid " Browse " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1605 src/slic3r/GUI/Tab.cpp:1788 +#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838 msgid "Test" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1615 +#: src/slic3r/GUI/Tab.cpp:1662 msgid "Could not get a valid Printer Host reference" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1621 src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851 msgid "Success!" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1636 +#: src/slic3r/GUI/Tab.cpp:1683 msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" "signed certificate." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1648 +#: src/slic3r/GUI/Tab.cpp:1696 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1649 +#: src/slic3r/GUI/Tab.cpp:1697 msgid "Open CA certificate file" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1676 +#: src/slic3r/GUI/Tab.cpp:1725 msgid "" "HTTPS CA File:\n" "\tOn this system, Slic3r uses HTTPS certificates from the system Certificate " @@ -2948,250 +3321,254 @@ msgid "" "Store / Keychain." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1713 src/slic3r/GUI/Tab.cpp:1912 +#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964 msgid "Size and coordinates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1717 src/slic3r/GUI/Tab.cpp:1916 -#: src/slic3r/GUI/Tab.cpp:2792 +#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968 +#: src/slic3r/GUI/Tab.cpp:2911 msgid " Set " msgstr "" -#: src/slic3r/GUI/Tab.cpp:1740 +#: src/slic3r/GUI/Tab.cpp:1790 msgid "Capabilities" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1745 +#: src/slic3r/GUI/Tab.cpp:1795 msgid "Number of extruders of the printer." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1773 +#: src/slic3r/GUI/Tab.cpp:1823 msgid "USB/Serial connection" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1774 src/libslic3r/PrintConfig.cpp:1660 +#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590 msgid "Serial port" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1779 +#: src/slic3r/GUI/Tab.cpp:1829 msgid "Rescan serial ports" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1801 +#: src/slic3r/GUI/Tab.cpp:1851 msgid "Connection to printer works correctly." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1804 +#: src/slic3r/GUI/Tab.cpp:1854 msgid "Connection failed." msgstr "" -#: src/slic3r/GUI/Tab.cpp:1817 src/slic3r/GUI/Tab.cpp:1961 +#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022 msgid "Print Host upload" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1859 src/libslic3r/PrintConfig.cpp:92 +#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128 msgid "Before layer change G-code" msgstr "层改å˜å‰çš„G代ç " -#: src/slic3r/GUI/Tab.cpp:1865 src/libslic3r/PrintConfig.cpp:1042 +#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030 msgid "After layer change G-code" msgstr "层å˜åŒ–åŽG代ç " -#: src/slic3r/GUI/Tab.cpp:1871 src/libslic3r/PrintConfig.cpp:2111 +#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005 msgid "Tool change G-code" msgstr "切æ¢å·¥å…·G代ç " -#: src/slic3r/GUI/Tab.cpp:1877 +#: src/slic3r/GUI/Tab.cpp:1929 msgid "Between objects G-code (for sequential printing)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1938 +#: src/slic3r/GUI/Tab.cpp:1990 msgid "Display" msgstr "" -#: src/slic3r/GUI/Tab.cpp:1949 src/slic3r/GUI/Tab.cpp:3102 +#: src/slic3r/GUI/Tab.cpp:2001 +msgid "Tilt" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2002 +msgid "Tilt time" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223 msgid "Corrections" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2011 src/slic3r/GUI/Tab.cpp:2073 -#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1098 -#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1121 -#: src/libslic3r/PrintConfig.cpp:1132 src/libslic3r/PrintConfig.cpp:1143 -#: src/libslic3r/PrintConfig.cpp:1154 +#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136 +#: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086 +#: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131 +#: src/libslic3r/PrintConfig.cpp:1142 msgid "Machine limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2025 +#: src/slic3r/GUI/Tab.cpp:2088 msgid "Values in this column are for Full Power mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2026 +#: src/slic3r/GUI/Tab.cpp:2089 msgid "Full Power" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2031 +#: src/slic3r/GUI/Tab.cpp:2094 msgid "Values in this column are for Silent mode" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2032 +#: src/slic3r/GUI/Tab.cpp:2095 msgid "Silent" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2040 +#: src/slic3r/GUI/Tab.cpp:2103 msgid "Maximum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2045 +#: src/slic3r/GUI/Tab.cpp:2108 msgid "Maximum accelerations" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2052 +#: src/slic3r/GUI/Tab.cpp:2115 msgid "Jerk limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2057 +#: src/slic3r/GUI/Tab.cpp:2120 msgid "Minimum feedrates" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2095 src/slic3r/GUI/Tab.cpp:2103 +#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166 msgid "Single extruder MM setup" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2104 +#: src/slic3r/GUI/Tab.cpp:2167 msgid "Single extruder multimaterial parameters" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2118 src/libslic3r/GCode/PreviewData.cpp:475 +#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475 #, c-format msgid "Extruder %d" msgstr "挤出头 %d" -#: src/slic3r/GUI/Tab.cpp:2125 +#: src/slic3r/GUI/Tab.cpp:2188 msgid "Layer height limits" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2130 +#: src/slic3r/GUI/Tab.cpp:2193 msgid "Position (for multi-extruder printers)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2133 +#: src/slic3r/GUI/Tab.cpp:2196 msgid "Retraction" msgstr "回缩" -#: src/slic3r/GUI/Tab.cpp:2136 +#: src/slic3r/GUI/Tab.cpp:2199 msgid "Only lift Z" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2149 +#: src/slic3r/GUI/Tab.cpp:2212 msgid "" "Retraction when tool is disabled (advanced settings for multi-extruder " "setups)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2153 +#: src/slic3r/GUI/Tab.cpp:2216 msgid "Preview" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2284 +#: src/slic3r/GUI/Tab.cpp:2352 msgid "" "The Wipe option is not available when using the Firmware Retraction mode.\n" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2286 +#: src/slic3r/GUI/Tab.cpp:2354 msgid "Firmware Retraction" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2565 +#: src/slic3r/GUI/Tab.cpp:2681 #, c-format msgid "Default preset (%s)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2566 +#: src/slic3r/GUI/Tab.cpp:2682 #, c-format msgid "Preset (%s)" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2583 +#: src/slic3r/GUI/Tab.cpp:2699 msgid "has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2586 +#: src/slic3r/GUI/Tab.cpp:2702 msgid "is not compatible with printer" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2587 +#: src/slic3r/GUI/Tab.cpp:2703 msgid "is not compatible with print profile" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2589 +#: src/slic3r/GUI/Tab.cpp:2705 msgid "and it has the following unsaved changes:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2592 +#: src/slic3r/GUI/Tab.cpp:2708 msgid "Discard changes and continue anyway?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2593 +#: src/slic3r/GUI/Tab.cpp:2709 msgid "Unsaved Changes" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2604 -msgid "It's impossible to print multi-part object(s) with SLA technology." -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2605 +#: src/slic3r/GUI/Tab.cpp:2721 msgid "Please check your object list before preset changing." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2699 +#: src/slic3r/GUI/Tab.cpp:2801 +msgid "Copy" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:2823 msgid "The supplied name is empty. It can't be saved." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2704 +#: src/slic3r/GUI/Tab.cpp:2828 msgid "Cannot overwrite a system profile." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2708 +#: src/slic3r/GUI/Tab.cpp:2832 msgid "Cannot overwrite an external profile." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2858 msgid "remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2734 +#: src/slic3r/GUI/Tab.cpp:2858 msgid "delete" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2735 +#: src/slic3r/GUI/Tab.cpp:2859 msgid "Are you sure you want to " msgstr "" -#: src/slic3r/GUI/Tab.cpp:2735 +#: src/slic3r/GUI/Tab.cpp:2859 msgid " the selected preset?" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2736 +#: src/slic3r/GUI/Tab.cpp:2860 msgid "Remove" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2737 +#: src/slic3r/GUI/Tab.cpp:2861 msgid " Preset" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2791 -msgid "All" -msgstr "" - -#: src/slic3r/GUI/Tab.cpp:2869 +#: src/slic3r/GUI/Tab.cpp:2989 msgid "" "LOCKED LOCK;indicates that the settings are the same as the system values " "for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2872 +#: src/slic3r/GUI/Tab.cpp:2992 msgid "" "UNLOCKED LOCK;indicates that some settings were changed and are not equal to " "the system values for the current option group.\n" @@ -3199,13 +3576,13 @@ msgid "" "to the system values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2878 +#: src/slic3r/GUI/Tab.cpp:2998 msgid "" "WHITE BULLET;for the left button: \tindicates a non-system preset,\n" "for the right button: \tindicates that the settings hasn't been modified." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2882 +#: src/slic3r/GUI/Tab.cpp:3002 msgid "" "BACK ARROW;indicates that the settings were changed and are not equal to the " "last saved preset for the current option group.\n" @@ -3213,30 +3590,30 @@ msgid "" "to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2908 +#: src/slic3r/GUI/Tab.cpp:3028 msgid "" "LOCKED LOCK icon indicates that the settings are the same as the system " "values for the current option group" msgstr "" -#: src/slic3r/GUI/Tab.cpp:2910 +#: src/slic3r/GUI/Tab.cpp:3030 msgid "" "UNLOCKED LOCK icon indicates that some settings were changed and are not " "equal to the system values for the current option group.\n" "Click to reset all settings for current option group to the system values." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2913 +#: src/slic3r/GUI/Tab.cpp:3033 msgid "WHITE BULLET icon indicates a non system preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2916 +#: src/slic3r/GUI/Tab.cpp:3036 msgid "" "WHITE BULLET icon indicates that the settings are the same as in the last " "saved preset for the current option group." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2918 +#: src/slic3r/GUI/Tab.cpp:3038 msgid "" "BACK ARROW icon indicates that the settings were changed and are not equal " "to the last saved preset for the current option group.\n" @@ -3244,124 +3621,140 @@ msgid "" "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2924 +#: src/slic3r/GUI/Tab.cpp:3044 msgid "" "LOCKED LOCK icon indicates that the value is the same as the system value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2925 +#: src/slic3r/GUI/Tab.cpp:3045 msgid "" "UNLOCKED LOCK icon indicates that the value was changed and is not equal to " "the system value.\n" "Click to reset current value to the system value." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2931 +#: src/slic3r/GUI/Tab.cpp:3051 msgid "" "WHITE BULLET icon indicates that the value is the same as in the last saved " "preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:2932 +#: src/slic3r/GUI/Tab.cpp:3052 msgid "" "BACK ARROW icon indicates that the value was changed and is not equal to the " "last saved preset.\n" "Click to reset current value to the last saved preset." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3031 +#: src/slic3r/GUI/Tab.cpp:3152 msgid " as:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3075 +#: src/slic3r/GUI/Tab.cpp:3196 msgid "the following postfix are not allowed:" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3079 +#: src/slic3r/GUI/Tab.cpp:3200 msgid "The supplied name is not available." msgstr "" -#: src/slic3r/GUI/Tab.cpp:3092 +#: src/slic3r/GUI/Tab.cpp:3213 msgid "Material" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3094 src/slic3r/GUI/Tab.cpp:3176 +#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305 msgid "Layers" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3098 +#: src/slic3r/GUI/Tab.cpp:3219 msgid "Exposure" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3183 +#: src/slic3r/GUI/Tab.cpp:3313 msgid "Support head" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3188 +#: src/slic3r/GUI/Tab.cpp:3318 msgid "Support pillar" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3196 +#: src/slic3r/GUI/Tab.cpp:3328 msgid "Connection of the support sticks and junctions" msgstr "" -#: src/slic3r/GUI/Tab.cpp:3200 +#: src/slic3r/GUI/Tab.cpp:3333 msgid "Automatic generation" msgstr "" -#: src/slic3r/GUI/Tab.hpp:293 src/slic3r/GUI/Tab.hpp:381 +#: src/slic3r/GUI/Tab.cpp:3395 +msgid "Head penetration should not be greater than the head width." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3396 +msgid "Invalid Head penetration" +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3408 +msgid "Pinhead diameter should be smaller than the pillar diameter." +msgstr "" + +#: src/slic3r/GUI/Tab.cpp:3409 +msgid "Invalid pinhead diameter" +msgstr "" + +#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395 msgid "Print Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:311 +#: src/slic3r/GUI/Tab.hpp:325 msgid "Filament Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:344 +#: src/slic3r/GUI/Tab.hpp:358 msgid "Printer Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:367 +#: src/slic3r/GUI/Tab.hpp:381 msgid "Material Settings" msgstr "" -#: src/slic3r/GUI/Tab.hpp:393 +#: src/slic3r/GUI/Tab.hpp:407 msgid "Save preset" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:29 msgid "Update available" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:28 +#: src/slic3r/GUI/UpdateDialogs.cpp:29 msgid "New version of Slic3r PE is available" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:35 +#: src/slic3r/GUI/UpdateDialogs.cpp:36 msgid "To download, follow the link below." msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:42 +#: src/slic3r/GUI/UpdateDialogs.cpp:44 msgid "Current version:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:44 +#: src/slic3r/GUI/UpdateDialogs.cpp:46 msgid "New version:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:52 +#: src/slic3r/GUI/UpdateDialogs.cpp:54 msgid "Don't notify about new releases any more" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 src/slic3r/GUI/UpdateDialogs.cpp:162 +#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164 msgid "Configuration update" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:70 +#: src/slic3r/GUI/UpdateDialogs.cpp:72 msgid "Configuration update is available" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:73 +#: src/slic3r/GUI/UpdateDialogs.cpp:75 msgid "" "Would you like to install it?\n" "\n" @@ -3371,15 +3764,15 @@ msgid "" "Updated configuration bundles:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 +#: src/slic3r/GUI/UpdateDialogs.cpp:111 msgid "Slic3r incompatibility" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:109 +#: src/slic3r/GUI/UpdateDialogs.cpp:111 msgid "Slic3r configuration is incompatible" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:112 +#: src/slic3r/GUI/UpdateDialogs.cpp:114 msgid "" "This version of Slic3r PE is not compatible with currently installed " "configuration bundles.\n" @@ -3391,24 +3784,24 @@ msgid "" "existing configuration before installing files compatible with this Slic3r.\n" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:121 +#: src/slic3r/GUI/UpdateDialogs.cpp:123 #, c-format msgid "This Slic3r PE version: %s" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:126 +#: src/slic3r/GUI/UpdateDialogs.cpp:128 msgid "Incompatible bundles:" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:142 +#: src/slic3r/GUI/UpdateDialogs.cpp:144 msgid "Exit Slic3r" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:145 +#: src/slic3r/GUI/UpdateDialogs.cpp:147 msgid "Re-configure" msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:166 +#: src/slic3r/GUI/UpdateDialogs.cpp:168 #, c-format msgid "" "Slic3r PE now uses an updated configuration structure.\n" @@ -3424,15 +3817,15 @@ msgid "" "choose whether to enable automatic preset updates." msgstr "" -#: src/slic3r/GUI/UpdateDialogs.cpp:182 +#: src/slic3r/GUI/UpdateDialogs.cpp:184 msgid "For more information please visit our wiki page:" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:10 +#: src/slic3r/GUI/WipeTowerDialog.cpp:14 msgid "Ramming customization" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:36 +#: src/slic3r/GUI/WipeTowerDialog.cpp:40 msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" "extruder MM printer. Its purpose is to properly shape the end of the " @@ -3445,63 +3838,63 @@ msgid "" "jams, extruder wheel grinding into filament etc." msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:78 +#: src/slic3r/GUI/WipeTowerDialog.cpp:82 msgid "Total ramming time" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:80 +#: src/slic3r/GUI/WipeTowerDialog.cpp:84 msgid "Total rammed volume" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:84 +#: src/slic3r/GUI/WipeTowerDialog.cpp:88 msgid "Ramming line width" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:86 +#: src/slic3r/GUI/WipeTowerDialog.cpp:90 msgid "Ramming line spacing" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:138 +#: src/slic3r/GUI/WipeTowerDialog.cpp:141 msgid "Wipe tower - Purging volume adjustment" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:219 +#: src/slic3r/GUI/WipeTowerDialog.cpp:225 msgid "" "Here you can adjust required purging volume (mm³) for any given pair of " "tools." msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:220 +#: src/slic3r/GUI/WipeTowerDialog.cpp:226 msgid "Extruder changed to" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:228 +#: src/slic3r/GUI/WipeTowerDialog.cpp:234 msgid "unloaded" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:229 +#: src/slic3r/GUI/WipeTowerDialog.cpp:235 msgid "loaded" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:234 +#: src/slic3r/GUI/WipeTowerDialog.cpp:240 msgid "Tool #" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:241 +#: src/slic3r/GUI/WipeTowerDialog.cpp:247 msgid "" "Total purging volume is calculated by summing two values below, depending on " "which tools are loaded/unloaded." msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:242 +#: src/slic3r/GUI/WipeTowerDialog.cpp:248 msgid "Volume to purge (mm³) when the filament is being" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:256 +#: src/slic3r/GUI/WipeTowerDialog.cpp:262 msgid "From" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:321 +#: src/slic3r/GUI/WipeTowerDialog.cpp:327 msgid "" "Switching to simple settings will discard changes done in the advanced " "mode!\n" @@ -3509,57 +3902,87 @@ msgid "" "Do you want to proceed?" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show simplified settings" msgstr "" -#: src/slic3r/GUI/WipeTowerDialog.cpp:333 +#: src/slic3r/GUI/WipeTowerDialog.cpp:339 msgid "Show advanced settings" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:65 +#: src/slic3r/GUI/wxExtensions.cpp:2398 +#, c-format +msgid "Switch to the %s mode" +msgstr "" + +#: src/slic3r/GUI/wxExtensions.cpp:2399 +#, c-format +msgid "Current mode is %s" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:51 +msgid "Connection to Duet works correctly." +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:56 +msgid "Could not connect to Duet" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154 +msgid "Unknown error occured" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:148 +msgid "Wrong password" +msgstr "" + +#: src/slic3r/Utils/Duet.cpp:151 +msgid "Could not get resources to create a new connection" +msgstr "" + +#: src/slic3r/Utils/OctoPrint.cpp:69 #, c-format msgid "Mismatched type of print host: %s" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:80 +#: src/slic3r/Utils/OctoPrint.cpp:84 msgid "Connection to OctoPrint works correctly." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Could not connect to OctoPrint" msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:86 +#: src/slic3r/Utils/OctoPrint.cpp:90 msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:181 +#: src/slic3r/Utils/OctoPrint.cpp:195 msgid "Connection to Prusa SLA works correctly." msgstr "" -#: src/slic3r/Utils/OctoPrint.cpp:186 +#: src/slic3r/Utils/OctoPrint.cpp:200 msgid "Could not connect to Prusa SLA" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:571 +#: src/slic3r/Utils/PresetUpdater.cpp:583 #, c-format msgid "requires min. %s and max. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:576 +#: src/slic3r/Utils/PresetUpdater.cpp:588 #, c-format msgid "requires min. %s" msgstr "" -#: src/slic3r/Utils/PresetUpdater.cpp:578 +#: src/slic3r/Utils/PresetUpdater.cpp:590 #, c-format msgid "requires max. %s" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:219 -#: src/slic3r/Utils/FixModelByWin10.cpp:349 -msgid "Exporting the source model" +#: src/slic3r/Utils/FixModelByWin10.cpp:359 +msgid "Exporting source model" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:235 @@ -3567,7 +3990,7 @@ msgid "Failed loading the input model." msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:242 -msgid "Repairing the model by the Netfabb service" +msgid "Repairing model by the Netfabb service" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:248 @@ -3575,8 +3998,8 @@ msgid "Mesh repair failed." msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:251 -#: src/slic3r/Utils/FixModelByWin10.cpp:367 -msgid "Loading the repaired model" +#: src/slic3r/Utils/FixModelByWin10.cpp:378 +msgid "Loading repaired model" msgstr "" #: src/slic3r/Utils/FixModelByWin10.cpp:263 @@ -3585,124 +4008,308 @@ msgstr "" msgid "Saving mesh into the 3MF container failed." msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:334 +#: src/slic3r/Utils/FixModelByWin10.cpp:340 msgid "Model fixing" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:335 +#: src/slic3r/Utils/FixModelByWin10.cpp:341 msgid "Exporting model..." msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:357 +#: src/slic3r/Utils/FixModelByWin10.cpp:368 msgid "Export of a temporary 3mf file failed" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:372 +#: src/slic3r/Utils/FixModelByWin10.cpp:383 msgid "Import of the repaired 3mf file failed" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:375 +#: src/slic3r/Utils/FixModelByWin10.cpp:385 +msgid "Repaired 3MF file does not contain any object" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:387 +msgid "Repaired 3MF file contains more than one object" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:389 +msgid "Repaired 3MF file does not contain any volume" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:391 +msgid "Repaired 3MF file contains more than one volume" +msgstr "" + +#: src/slic3r/Utils/FixModelByWin10.cpp:400 msgid "Model repair finished" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:379 +#: src/slic3r/Utils/FixModelByWin10.cpp:406 msgid "Model repair canceled" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 msgid "Model repaired successfully" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:396 -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:423 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model Repair by the Netfabb service" msgstr "" -#: src/slic3r/Utils/FixModelByWin10.cpp:399 +#: src/slic3r/Utils/FixModelByWin10.cpp:426 msgid "Model repair failed: \n" msgstr "" -#: src/libslic3r/Print.cpp:1175 +#: src/libslic3r/Zipper.cpp:35 +msgid "undefined error" +msgstr "" + +#: src/libslic3r/Zipper.cpp:37 +msgid "too many files" +msgstr "" + +#: src/libslic3r/Zipper.cpp:39 +msgid "file too large" +msgstr "" + +#: src/libslic3r/Zipper.cpp:41 +msgid "unsupported method" +msgstr "" + +#: src/libslic3r/Zipper.cpp:43 +msgid "unsupported encryption" +msgstr "" + +#: src/libslic3r/Zipper.cpp:45 +msgid "unsupported feature" +msgstr "" + +#: src/libslic3r/Zipper.cpp:47 +msgid "failed finding central directory" +msgstr "" + +#: src/libslic3r/Zipper.cpp:49 +msgid "not a ZIP archive" +msgstr "" + +#: src/libslic3r/Zipper.cpp:51 +msgid "invalid header or archive is corrupted" +msgstr "" + +#: src/libslic3r/Zipper.cpp:53 +msgid "unsupported multidisk archive" +msgstr "" + +#: src/libslic3r/Zipper.cpp:55 +msgid "decompression failed or archive is corrupted" +msgstr "" + +#: src/libslic3r/Zipper.cpp:57 +msgid "compression failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:59 +msgid "unexpected decompressed size" +msgstr "" + +#: src/libslic3r/Zipper.cpp:61 +msgid "CRC-32 check failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:63 +msgid "unsupported central directory size" +msgstr "" + +#: src/libslic3r/Zipper.cpp:65 +msgid "allocation failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:67 +msgid "file open failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:69 +msgid "file create failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:71 +msgid "file write failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:73 +msgid "file read failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:75 +msgid "file close failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:77 +msgid "file seek failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:79 +msgid "file stat failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:81 +msgid "invalid parameter" +msgstr "" + +#: src/libslic3r/Zipper.cpp:83 +msgid "invalid filename" +msgstr "" + +#: src/libslic3r/Zipper.cpp:85 +msgid "buffer too small" +msgstr "" + +#: src/libslic3r/Zipper.cpp:87 +msgid "internal error" +msgstr "" + +#: src/libslic3r/Zipper.cpp:89 +msgid "file not found" +msgstr "" + +#: src/libslic3r/Zipper.cpp:91 +msgid "archive is too large" +msgstr "" + +#: src/libslic3r/Zipper.cpp:93 +msgid "validation failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:95 +msgid "write calledback failed" +msgstr "" + +#: src/libslic3r/Zipper.cpp:105 +msgid "Error with zip archive" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2153 +msgid "Starting" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2154 +msgid "Filtering" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2155 +msgid "Generate pinheads" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2156 +msgid "Classification" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2157 +msgid "Routing to ground" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2158 +msgid "Routing supports to model surface" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2159 +msgid "Cascading pillars" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2160 +msgid "Processing small holes" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2161 +msgid "Done" +msgstr "" + +#: src/libslic3r/SLA/SLASupportTree.cpp:2162 +msgid "Abort" +msgstr "" + +#: src/libslic3r/Print.cpp:1136 msgid "All objects are outside of the print volume." msgstr "" -#: src/libslic3r/Print.cpp:1201 +#: src/libslic3r/Print.cpp:1165 msgid "Some objects are too close; your extruder will collide with them." msgstr "" -#: src/libslic3r/Print.cpp:1216 +#: src/libslic3r/Print.cpp:1180 msgid "" "Some objects are too tall and cannot be printed without extruder collisions." msgstr "" -#: src/libslic3r/Print.cpp:1226 +#: src/libslic3r/Print.cpp:1190 msgid "The Spiral Vase option can only be used when printing a single object." msgstr "" -#: src/libslic3r/Print.cpp:1228 +#: src/libslic3r/Print.cpp:1192 msgid "" "The Spiral Vase option can only be used when printing single material " "objects." msgstr "" -#: src/libslic3r/Print.cpp:1234 +#: src/libslic3r/Print.cpp:1198 msgid "" "All extruders must have the same diameter for single extruder multimaterial " "printer." msgstr "" -#: src/libslic3r/Print.cpp:1239 +#: src/libslic3r/Print.cpp:1203 msgid "" "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter " "and Repetier G-code flavors." msgstr "" -#: src/libslic3r/Print.cpp:1241 +#: src/libslic3r/Print.cpp:1205 msgid "" "The Wipe Tower is currently only supported with the relative extruder " "addressing (use_relative_e_distances=1)." msgstr "" -#: src/libslic3r/Print.cpp:1253 +#: src/libslic3r/Print.cpp:1226 msgid "" "The Wipe Tower is only supported for multiple objects if they have equal " "layer heigths" msgstr "" -#: src/libslic3r/Print.cpp:1255 +#: src/libslic3r/Print.cpp:1228 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "over an equal number of raft layers" msgstr "" -#: src/libslic3r/Print.cpp:1257 +#: src/libslic3r/Print.cpp:1230 msgid "" "The Wipe Tower is only supported for multiple objects if they are printed " "with the same support_material_contact_distance" msgstr "" -#: src/libslic3r/Print.cpp:1259 +#: src/libslic3r/Print.cpp:1232 msgid "" "The Wipe Tower is only supported for multiple objects if they are sliced " "equally." msgstr "" -#: src/libslic3r/Print.cpp:1281 +#: src/libslic3r/Print.cpp:1261 msgid "" "The Wipe tower is only supported if all objects have the same layer height " "profile" msgstr "" -#: src/libslic3r/Print.cpp:1290 +#: src/libslic3r/Print.cpp:1271 msgid "The supplied settings will cause an empty print." msgstr "" -#: src/libslic3r/Print.cpp:1307 +#: src/libslic3r/Print.cpp:1288 msgid "" "One or more object were assigned an extruder that the printer does not have." msgstr "" -#: src/libslic3r/Print.cpp:1316 +#: src/libslic3r/Print.cpp:1297 msgid "" "Printing with multiple extruders of differing nozzle diameters. If support " "is to be printed with the current extruder (support_material_extruder == 0 " @@ -3710,13 +4317,13 @@ msgid "" "same diameter." msgstr "" -#: src/libslic3r/Print.cpp:1324 +#: src/libslic3r/Print.cpp:1305 msgid "" "For the Wipe Tower to work with the soluble supports, the support layers " "need to be synchronized with the object layers." msgstr "" -#: src/libslic3r/Print.cpp:1328 +#: src/libslic3r/Print.cpp:1309 msgid "" "The Wipe Tower currently supports the non-soluble supports only if they are " "printed with the current extruder without triggering a tool change. (both " @@ -3724,27 +4331,82 @@ msgid "" "set to 0)." msgstr "" -#: src/libslic3r/Print.cpp:1335 +#: src/libslic3r/Print.cpp:1316 msgid "first_layer_height" msgstr "" -#: src/libslic3r/Print.cpp:1350 +#: src/libslic3r/Print.cpp:1331 msgid "First layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/Print.cpp:1354 +#: src/libslic3r/Print.cpp:1335 msgid "Layer height can't be greater than nozzle diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:32 src/libslic3r/PrintConfig.cpp:33 +#: src/libslic3r/SLAPrint.cpp:55 +msgid "Slicing model" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801 +msgid "Generating support points" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:57 +msgid "Generating support tree" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:58 +msgid "Generating pad" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:59 +msgid "Slicing supports" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:71 +msgid "Merging slices and calculating statistics" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:72 +msgid "Rasterizing layers" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:605 +msgid "" +"Cannot proceed without support points! Add support points or disable support " +"generation." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:617 +msgid "Elevation is too low for object." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:699 +msgid "Slicing had to be stopped due to an internal error." +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859 +#: src/libslic3r/SLAPrint.cpp:907 +msgid "Visualizing supports" +msgstr "" + +#: src/libslic3r/SLAPrint.cpp:1449 +msgid "Slicing done" +msgstr "" + +#: src/libslic3r/PrintBase.cpp:65 +msgid "Failed processing of the output_filename_format template." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43 msgid "Printer technology" msgstr "" -#: src/libslic3r/PrintConfig.cpp:41 +#: src/libslic3r/PrintConfig.cpp:50 msgid "Bed shape" msgstr "机床形状" -#: src/libslic3r/PrintConfig.cpp:48 +#: src/libslic3r/PrintConfig.cpp:57 msgid "" "This setting controls the height (and thus the total number) of the slices/" "layers. Thinner layers give better accuracy but take more time to print." @@ -3752,21 +4414,52 @@ msgstr "" "è¯¥å‚æ•°æŽ§åˆ¶åˆ‡ç‰‡çš„高度(因此也控制总层数)。较薄的切片å¯ä»¥ä½¿ç²¾åº¦æ›´é«˜ï¼Œä½†èŠ±è´¹çš„" "æ‰“å°æ—¶é—´ä¹Ÿæ›´é•¿ã€‚" -#: src/libslic3r/PrintConfig.cpp:56 +#: src/libslic3r/PrintConfig.cpp:64 msgid "Max print height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:57 +#: src/libslic3r/PrintConfig.cpp:65 msgid "" "Set this to the maximum height that can be reached by your extruder while " "printing." msgstr "" +#: src/libslic3r/PrintConfig.cpp:71 +msgid "Slice gap closing radius" +msgstr "" + #: src/libslic3r/PrintConfig.cpp:73 +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:81 +msgid "Hostname, IP or URL" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:82 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:88 +msgid "API Key / Password" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:89 +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:111 msgid "Avoid crossing perimeters" msgstr "é¿å…跨越轮廓" -#: src/libslic3r/PrintConfig.cpp:74 +#: src/libslic3r/PrintConfig.cpp:112 msgid "" "Optimize travel moves in order to minimize the crossing of perimeters. This " "is mostly useful with Bowden extruders which suffer from oozing. This " @@ -3775,21 +4468,21 @@ msgstr "" "为了尽é‡å‡å°‘跨越轮廓,优化空程的移动方å¼ã€‚è¿™éžå¸¸é€‚ç”¨äºŽå—æ¸—æ¼é—®é¢˜å½±å“çš„é²ç™»æŒ¤" "å‡ºå¤´ã€‚æ­¤åŠŸèƒ½ä¼šå‡æ…¢æ‰“å°é€Ÿåº¦å’Œ G 代ç ç”Ÿæˆé€Ÿåº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:82 src/libslic3r/PrintConfig.cpp:2080 +#: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976 msgid "Other layers" msgstr "其它层" -#: src/libslic3r/PrintConfig.cpp:83 +#: src/libslic3r/PrintConfig.cpp:120 msgid "" "Bed temperature for layers after the first one. Set this to zero to disable " "bed temperature control commands in the output." msgstr "" -#: src/libslic3r/PrintConfig.cpp:86 +#: src/libslic3r/PrintConfig.cpp:122 msgid "Bed temperature" msgstr "机床温度" -#: src/libslic3r/PrintConfig.cpp:93 +#: src/libslic3r/PrintConfig.cpp:129 msgid "" "This custom code is inserted at every layer change, right before the Z move. " "Note that you can use placeholder variables for all Slic3r settings as well " @@ -3798,11 +4491,11 @@ msgstr "" "这段自定义代ç åœ¨å±‚改å˜ï¼Œå³Zè½´ç§»åŠ¨å‰æ’入。注æ„除了å¯ä»¥ä½¿ç”¨[layer_num]å’Œ" "[layer_z],也å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡æ›¿ä»£æ‰€æœ‰çš„slic3r设置。" -#: src/libslic3r/PrintConfig.cpp:104 +#: src/libslic3r/PrintConfig.cpp:139 msgid "Between objects G-code" msgstr "" -#: src/libslic3r/PrintConfig.cpp:105 +#: src/libslic3r/PrintConfig.cpp:140 msgid "" "This code is inserted between objects when using sequential printing. By " "default extruder and bed temperature are reset using non-wait command; " @@ -3812,73 +4505,69 @@ msgid "" "S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:114 -msgctxt "Layers" -msgid "Bottom" -msgstr "底部" - -#: src/libslic3r/PrintConfig.cpp:116 +#: src/libslic3r/PrintConfig.cpp:150 msgid "Number of solid layers to generate on bottom surfaces." msgstr "底部表é¢ç”Ÿæˆçš„å¯é å±‚数。" -#: src/libslic3r/PrintConfig.cpp:118 +#: src/libslic3r/PrintConfig.cpp:151 msgid "Bottom solid layers" msgstr "底部å¯é å±‚" -#: src/libslic3r/PrintConfig.cpp:123 +#: src/libslic3r/PrintConfig.cpp:156 msgid "Bridge" msgstr "æ¡¥" -#: src/libslic3r/PrintConfig.cpp:124 +#: src/libslic3r/PrintConfig.cpp:157 msgid "" "This is the acceleration your printer will use for bridges. Set zero to " "disable acceleration control for bridges." msgstr "æ­¤é¡¹ä¸ºæ‰“å°æœºåœ¨æ‰“å°æ¡¥æ—¶çš„加速度。设为0å¯ä»¥ç¦ç”¨æ‰“å°æ¡¥çš„加速度控制。" -#: src/libslic3r/PrintConfig.cpp:126 src/libslic3r/PrintConfig.cpp:274 -#: src/libslic3r/PrintConfig.cpp:819 src/libslic3r/PrintConfig.cpp:941 -#: src/libslic3r/PrintConfig.cpp:1100 src/libslic3r/PrintConfig.cpp:1145 -#: src/libslic3r/PrintConfig.cpp:1156 src/libslic3r/PrintConfig.cpp:1386 +#: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302 +#: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935 +#: src/libslic3r/PrintConfig.cpp:1088 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1144 src/libslic3r/PrintConfig.cpp:1333 msgid "mm/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:133 +#: src/libslic3r/PrintConfig.cpp:165 msgid "Bridging angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:135 +#: src/libslic3r/PrintConfig.cpp:167 msgid "" "Bridging angle override. If left to zero, the bridging angle will be " "calculated automatically. Otherwise the provided angle will be used for all " "bridges. Use 180° for zero angle." msgstr "" -#: src/libslic3r/PrintConfig.cpp:138 src/libslic3r/PrintConfig.cpp:734 -#: src/libslic3r/PrintConfig.cpp:1637 src/libslic3r/PrintConfig.cpp:1648 -#: src/libslic3r/PrintConfig.cpp:1896 src/libslic3r/PrintConfig.cpp:2063 -#: src/libslic3r/PrintConfig.cpp:2578 +#: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732 +#: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579 +#: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961 +#: src/libslic3r/PrintConfig.cpp:2459 msgid "°" msgstr "" -#: src/libslic3r/PrintConfig.cpp:145 +#: src/libslic3r/PrintConfig.cpp:176 msgid "Bridges fan speed" msgstr "桥风扇速度" -#: src/libslic3r/PrintConfig.cpp:146 +#: src/libslic3r/PrintConfig.cpp:177 msgid "This fan speed is enforced during all bridges and overhangs." msgstr "æ­¤é¡¹ä¸ºåœ¨æ‰“å°æ‰€æœ‰æ¡¥å’Œæ‚¬åž‚éƒ¨ä½æ—¶çš„风扇速度。" -#: src/libslic3r/PrintConfig.cpp:147 src/libslic3r/PrintConfig.cpp:747 -#: src/libslic3r/PrintConfig.cpp:1165 src/libslic3r/PrintConfig.cpp:1232 -#: src/libslic3r/PrintConfig.cpp:1517 +#: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216 +#: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258 +#: src/libslic3r/PrintConfig.cpp:2498 msgid "%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:155 +#: src/libslic3r/PrintConfig.cpp:185 msgid "Bridge flow ratio" msgstr "æ¡¥æµé‡æ¯”" -#: src/libslic3r/PrintConfig.cpp:157 +#: src/libslic3r/PrintConfig.cpp:187 msgid "" "This factor affects the amount of plastic for bridging. You can decrease it " "slightly to pull the extrudates and prevent sagging, although default " @@ -3888,83 +4577,83 @@ msgstr "" "æ­¤å› ç´ å½±å“æ¡¥æŽ¥éƒ¨ä½çš„塑料用é‡ã€‚å¯ä»¥ç•¥å¾®å‡å°‘该值以回撤挤出物é¿å…滴垂。但默认设" "置通常æ¥è¯´å·²ç»å¯ä»¥æ»¡è¶³ä½¿ç”¨ï¼Œåœ¨ä¿®æ”¹å‰éœ€é€šè¿‡å†·å´ï¼ˆä½¿ç”¨é£Žæ‰‡ï¼‰è¿›è¡Œæµ‹è¯•。" -#: src/libslic3r/PrintConfig.cpp:168 +#: src/libslic3r/PrintConfig.cpp:197 msgid "Bridges" msgstr "桥接处" -#: src/libslic3r/PrintConfig.cpp:170 +#: src/libslic3r/PrintConfig.cpp:199 msgid "Speed for printing bridges." msgstr "æ‰“å°æ¡¥æŽ¥å¤„的速度。" -#: src/libslic3r/PrintConfig.cpp:171 src/libslic3r/PrintConfig.cpp:564 -#: src/libslic3r/PrintConfig.cpp:573 src/libslic3r/PrintConfig.cpp:583 -#: src/libslic3r/PrintConfig.cpp:592 src/libslic3r/PrintConfig.cpp:623 -#: src/libslic3r/PrintConfig.cpp:644 src/libslic3r/PrintConfig.cpp:884 -#: src/libslic3r/PrintConfig.cpp:1013 src/libslic3r/PrintConfig.cpp:1090 -#: src/libslic3r/PrintConfig.cpp:1110 src/libslic3r/PrintConfig.cpp:1123 -#: src/libslic3r/PrintConfig.cpp:1134 src/libslic3r/PrintConfig.cpp:1189 -#: src/libslic3r/PrintConfig.cpp:1252 src/libslic3r/PrintConfig.cpp:1418 -#: src/libslic3r/PrintConfig.cpp:1601 src/libslic3r/PrintConfig.cpp:1611 -#: src/libslic3r/PrintConfig.cpp:2041 src/libslic3r/PrintConfig.cpp:2160 +#: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576 +#: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593 +#: src/libslic3r/PrintConfig.cpp:601 src/libslic3r/PrintConfig.cpp:628 +#: src/libslic3r/PrintConfig.cpp:647 src/libslic3r/PrintConfig.cpp:873 +#: src/libslic3r/PrintConfig.cpp:1000 src/libslic3r/PrintConfig.cpp:1078 +#: src/libslic3r/PrintConfig.cpp:1098 src/libslic3r/PrintConfig.cpp:1111 +#: src/libslic3r/PrintConfig.cpp:1122 src/libslic3r/PrintConfig.cpp:1175 +#: src/libslic3r/PrintConfig.cpp:1234 src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1536 src/libslic3r/PrintConfig.cpp:1545 +#: src/libslic3r/PrintConfig.cpp:1940 src/libslic3r/PrintConfig.cpp:2051 msgid "mm/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:178 +#: src/libslic3r/PrintConfig.cpp:207 msgid "Brim width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:179 +#: src/libslic3r/PrintConfig.cpp:208 msgid "" "Horizontal width of the brim that will be printed around each object on the " "first layer." msgstr "第一层æ¯ä¸ªç‰©ä½“周围打å°çš„裙边水平宽度。" -#: src/libslic3r/PrintConfig.cpp:187 +#: src/libslic3r/PrintConfig.cpp:215 msgid "Clip multi-part objects" msgstr "" -#: src/libslic3r/PrintConfig.cpp:188 +#: src/libslic3r/PrintConfig.cpp:216 msgid "" "When printing multi-material objects, this settings will make slic3r to clip " "the overlapping object parts one by the other (2nd part will be clipped by " "the 1st, 3rd part will be clipped by the 1st and 2nd etc)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:196 +#: src/libslic3r/PrintConfig.cpp:223 msgid "Colorprint height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:197 +#: src/libslic3r/PrintConfig.cpp:224 msgid "Heights at which a filament change is to occur. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:207 +#: src/libslic3r/PrintConfig.cpp:234 msgid "Compatible printers condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:208 +#: src/libslic3r/PrintConfig.cpp:235 msgid "" "A boolean expression using the configuration values of an active printer " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:220 +#: src/libslic3r/PrintConfig.cpp:249 msgid "Compatible print profiles condition" msgstr "" -#: src/libslic3r/PrintConfig.cpp:221 +#: src/libslic3r/PrintConfig.cpp:250 msgid "" "A boolean expression using the configuration values of an active print " "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" -#: src/libslic3r/PrintConfig.cpp:235 +#: src/libslic3r/PrintConfig.cpp:267 msgid "Complete individual objects" msgstr "打å°å®Œæˆå•个物体" -#: src/libslic3r/PrintConfig.cpp:236 +#: src/libslic3r/PrintConfig.cpp:268 msgid "" "When printing multiple objects or copies, this feature will complete each " "object before moving onto next one (and starting it from its bottom layer). " @@ -3975,33 +4664,33 @@ msgstr "" "(从底层开始)。此选项利于é¿å…æ‰“æ¯æŽ‰ç‰©ä½“ã€‚Slic3r应该给出警示,é¿å…挤出头碰" "撞,但请å°å¿ƒã€‚" -#: src/libslic3r/PrintConfig.cpp:245 +#: src/libslic3r/PrintConfig.cpp:276 msgid "Enable auto cooling" msgstr "自动冷å´ä½¿èƒ½" -#: src/libslic3r/PrintConfig.cpp:246 +#: src/libslic3r/PrintConfig.cpp:277 msgid "" "This flag enables the automatic cooling logic that adjusts print speed and " "fan speed according to layer printing time." msgstr "该选项å¯åŠ¨è‡ªåŠ¨å†·å´ï¼Œä½¿å¾—坿 ¹æ®å±‚æ‰“å°æ—¶é—´è°ƒæ•´æ‰“å°é€Ÿåº¦å’Œé£Žæ‰‡é€Ÿåº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:252 +#: src/libslic3r/PrintConfig.cpp:282 msgid "Cooling tube position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:253 +#: src/libslic3r/PrintConfig.cpp:283 msgid "Distance of the center-point of the cooling tube from the extruder tip " msgstr "" -#: src/libslic3r/PrintConfig.cpp:261 +#: src/libslic3r/PrintConfig.cpp:290 msgid "Cooling tube length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:262 +#: src/libslic3r/PrintConfig.cpp:291 msgid "Length of the cooling tube to limit space for cooling moves inside it " msgstr "" -#: src/libslic3r/PrintConfig.cpp:271 +#: src/libslic3r/PrintConfig.cpp:299 msgid "" "This is the acceleration your printer will be reset to after the role-" "specific acceleration values are used (perimeter/infill). Set zero to " @@ -4010,81 +4699,81 @@ msgstr "" "è¯¥å€¼ä¸ºæ‰“å°æœºåœ¨ä½¿ç”¨äº†ç‰¹å®šçš„加速度值(如轮廓/填充)åŽå°†é‡ç½®çš„加速度值。设为0以" "防止é‡ç½®åŠ é€Ÿåº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:281 +#: src/libslic3r/PrintConfig.cpp:308 msgid "Default filament profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:282 +#: src/libslic3r/PrintConfig.cpp:309 msgid "" "Default filament profile associated with the current printer profile. On " "selection of the current printer profile, this filament profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:287 +#: src/libslic3r/PrintConfig.cpp:315 msgid "Default print profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:288 src/libslic3r/PrintConfig.cpp:2469 -#: src/libslic3r/PrintConfig.cpp:2479 +#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337 +#: src/libslic3r/PrintConfig.cpp:2348 msgid "" "Default print profile associated with the current printer profile. On " "selection of the current printer profile, this print profile will be " "activated." msgstr "" -#: src/libslic3r/PrintConfig.cpp:293 +#: src/libslic3r/PrintConfig.cpp:322 msgid "Disable fan for the first" msgstr "å‰å‡ å±‚ç¦ç”¨é£Žæ‰‡" -#: src/libslic3r/PrintConfig.cpp:294 +#: src/libslic3r/PrintConfig.cpp:323 msgid "" "You can set this to a positive value to disable fan at all during the first " "layers, so that it does not make adhesion worse." msgstr "" -#: src/libslic3r/PrintConfig.cpp:296 src/libslic3r/PrintConfig.cpp:952 -#: src/libslic3r/PrintConfig.cpp:1487 src/libslic3r/PrintConfig.cpp:1691 -#: src/libslic3r/PrintConfig.cpp:1757 src/libslic3r/PrintConfig.cpp:1935 -#: src/libslic3r/PrintConfig.cpp:1985 +#: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945 +#: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843 +#: src/libslic3r/PrintConfig.cpp:1888 msgid "layers" msgstr "层" -#: src/libslic3r/PrintConfig.cpp:304 +#: src/libslic3r/PrintConfig.cpp:332 msgid "Don't support bridges" msgstr "䏿”¯æŒæ¡¥æŽ¥" -#: src/libslic3r/PrintConfig.cpp:306 +#: src/libslic3r/PrintConfig.cpp:334 msgid "" "Experimental option for preventing support material from being generated " "under bridged areas." msgstr "è¯•éªŒé¡¹ï¼Œåœ¨æ¡¥æŽ¥å¤„ç¦æ­¢ç”Ÿæˆæ”¯æ’‘ææ–™ã€‚" -#: src/libslic3r/PrintConfig.cpp:313 +#: src/libslic3r/PrintConfig.cpp:340 msgid "Distance between copies" msgstr "å¤åˆ¶ç‰©ä½“之间的è·ç¦»" -#: src/libslic3r/PrintConfig.cpp:314 +#: src/libslic3r/PrintConfig.cpp:341 msgid "Distance used for the auto-arrange feature of the plater." msgstr "自动分布时所使用的è·ç¦»ã€‚" -#: src/libslic3r/PrintConfig.cpp:322 +#: src/libslic3r/PrintConfig.cpp:348 msgid "Elephant foot compensation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:324 +#: src/libslic3r/PrintConfig.cpp:350 msgid "" "The first layer will be shrunk in the XY plane by the configured value to " "compensate for the 1st layer squish aka an Elephant Foot effect." msgstr "" -#: src/libslic3r/PrintConfig.cpp:334 +#: src/libslic3r/PrintConfig.cpp:359 msgid "" "This end procedure is inserted at the end of the output file. Note that you " "can use placeholder variables for all Slic3r settings." msgstr "该部分将æ’入到输出文件的结尾。注æ„å¯å¯¹æ‰€æœ‰çš„Slic3r傿•°ä½¿ç”¨å ä½ç¬¦å˜é‡ã€‚" -#: src/libslic3r/PrintConfig.cpp:345 +#: src/libslic3r/PrintConfig.cpp:369 msgid "" "This end procedure is inserted at the end of the output file, before the " "printer end gcode. Note that you can use placeholder variables for all " @@ -4094,53 +4783,63 @@ msgstr "" "该部分将被æ’å…¥è¾“å‡ºæ–‡ä»¶çš„ç»“å°¾ï¼Œä½†åœ¨æ‰“å°æœºç»“å°¾G代ç ä¹‹å‰ã€‚注æ„å¯ä»¥å¯¹æ‰€æœ‰Slic3rå‚" "数使用å ä½ç¬¦å˜é‡ä»£æ›¿ã€‚如果有多个打å°å¤´ï¼ŒG代ç å°†æŒ‰æ‰“å°å¤´çš„é¡ºåºæ¥å¤„ç†ã€‚" -#: src/libslic3r/PrintConfig.cpp:356 +#: src/libslic3r/PrintConfig.cpp:379 msgid "Ensure vertical shell thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:358 +#: src/libslic3r/PrintConfig.cpp:381 msgid "" "Add solid infill near sloping surfaces to guarantee the vertical shell " "thickness (top+bottom solid layers)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:365 -msgid "Top/bottom fill pattern" -msgstr "顶部/底部填充样å¼" +#: src/libslic3r/PrintConfig.cpp:387 +msgid "Top fill pattern" +msgstr "" -#: src/libslic3r/PrintConfig.cpp:367 +#: src/libslic3r/PrintConfig.cpp:389 msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "对顶部/底部内部填充的类型。这将影å“外围å¯è§å±‚,ä¸å½±å“其相邻的å¯é å±‚。" +"Fill pattern for top infill. This only affects the top visible layer, and " +"not its adjacent solid shells." +msgstr "" -#: src/libslic3r/PrintConfig.cpp:376 src/libslic3r/PrintConfig.cpp:800 -#: src/libslic3r/PrintConfig.cpp:2021 +#: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795 +#: src/libslic3r/PrintConfig.cpp:1921 msgid "Rectilinear" msgstr "折线å¼" -#: src/libslic3r/PrintConfig.cpp:377 src/libslic3r/PrintConfig.cpp:806 +#: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801 msgid "Concentric" msgstr "åŒè½´å¼" -#: src/libslic3r/PrintConfig.cpp:378 src/libslic3r/PrintConfig.cpp:810 +#: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805 msgid "Hilbert Curve" msgstr "希尔伯特曲线å¼" -#: src/libslic3r/PrintConfig.cpp:379 src/libslic3r/PrintConfig.cpp:811 +#: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806 msgid "Archimedean Chords" msgstr "阿基米德和铉å¼" # Not so sure about how to put "Octagram Spiral" in Chinese. Or maybe "Octagram螺旋“ is good. -#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:812 +#: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807 msgid "Octagram Spiral" msgstr "八角星螺旋å¼" -#: src/libslic3r/PrintConfig.cpp:386 src/libslic3r/PrintConfig.cpp:397 +#: src/libslic3r/PrintConfig.cpp:408 +msgid "Bottom fill pattern" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:409 +msgid "" +"Fill pattern for bottom infill. This only affects the bottom external " +"visible layer, and not its adjacent solid shells." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424 msgid "External perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:388 +#: src/libslic3r/PrintConfig.cpp:416 msgid "" "Set this to a non-zero value to set a manual extrusion width for external " "perimeters. If left zero, default extrusion width will be used if set, " @@ -4148,41 +4847,41 @@ msgid "" "(for example 200%), it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:391 src/libslic3r/PrintConfig.cpp:841 -#: src/libslic3r/PrintConfig.cpp:975 src/libslic3r/PrintConfig.cpp:1408 -#: src/libslic3r/PrintConfig.cpp:1769 src/libslic3r/PrintConfig.cpp:1958 -#: src/libslic3r/PrintConfig.cpp:2129 +#: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834 +#: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:2022 msgid "mm or % (leave 0 for default)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:399 +#: src/libslic3r/PrintConfig.cpp:426 msgid "" "This separate setting will affect the speed of external perimeters (the " "visible ones). If expressed as percentage (for example: 80%) it will be " "calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:402 src/libslic3r/PrintConfig.cpp:864 -#: src/libslic3r/PrintConfig.cpp:1725 src/libslic3r/PrintConfig.cpp:1780 -#: src/libslic3r/PrintConfig.cpp:2006 src/libslic3r/PrintConfig.cpp:2142 +#: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855 +#: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701 +#: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034 msgid "mm/s or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:409 +#: src/libslic3r/PrintConfig.cpp:436 msgid "External perimeters first" msgstr "先打å°å¤–围轮廓" -#: src/libslic3r/PrintConfig.cpp:411 +#: src/libslic3r/PrintConfig.cpp:438 msgid "" "Print contour perimeters from the outermost one to the innermost one instead " "of the default inverse order." msgstr "ä»Žæœ€å¤–å›´è½®å»“å‘æœ€å†…部的轮廓打å°ï¼Œè€Œä¸æ˜¯åæ–¹å‘。" -#: src/libslic3r/PrintConfig.cpp:418 +#: src/libslic3r/PrintConfig.cpp:444 msgid "Extra perimeters if needed" msgstr "如果需è¦çš„è¯ï¼Œæ‰“å°å¤–围轮廓" -#: src/libslic3r/PrintConfig.cpp:420 +#: src/libslic3r/PrintConfig.cpp:446 #, no-c-format msgid "" "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " @@ -4190,14 +4889,14 @@ msgid "" "is supported." msgstr "" -#: src/libslic3r/PrintConfig.cpp:431 +#: src/libslic3r/PrintConfig.cpp:456 msgid "" "The extruder to use (unless more specific extruder settings are specified). " "This value overrides perimeter and infill extruders, but not the support " "extruders." msgstr "" -#: src/libslic3r/PrintConfig.cpp:444 +#: src/libslic3r/PrintConfig.cpp:468 msgid "" "Set this to the vertical distance between your nozzle tip and (usually) the " "X carriage rods. In other words, this is the height of the clearance " @@ -4207,11 +4906,11 @@ msgstr "" "设置为喷嘴尖端和(通常)Xæž¶æ†ä¹‹é—´çš„垂直è·ç¦»ã€‚æ¢å¥è¯è¯´ï¼Œè¿™æ˜¯åœ¨ä½ çš„æŒ¤å‡ºæœºå‘¨å›´çš„" "ç©ºéš™æ°”ç¼¸çš„é«˜åº¦ï¼Œå®ƒä»£è¡¨äº†æŒ¤å‡ºå¤´åœ¨ä¸Žå…¶ä»–å°æ‰“å°ç‰©ä½“碰撞å‰ç§‘达到的最大深度。" -#: src/libslic3r/PrintConfig.cpp:455 +#: src/libslic3r/PrintConfig.cpp:478 msgid "Radius" msgstr "åŠå¾„" -#: src/libslic3r/PrintConfig.cpp:456 +#: src/libslic3r/PrintConfig.cpp:479 msgid "" "Set this to the clearance radius around your extruder. If the extruder is " "not centered, choose the largest value for safety. This setting is used to " @@ -4220,19 +4919,19 @@ msgstr "" "设置为挤出头周围的空隙åŠå¾„。如果挤出头未置中,安全起è§è¯·é€‰æ‹©æœ€å¤§å€¼ã€‚è¯¥å‚æ•°ç”¨" "于检查碰撞,并在界é¢ä¸­æ˜¾ç¤ºå›¾å½¢é¢„览。" -#: src/libslic3r/PrintConfig.cpp:467 +#: src/libslic3r/PrintConfig.cpp:489 msgid "Extruder Color" msgstr "" -#: src/libslic3r/PrintConfig.cpp:468 src/libslic3r/PrintConfig.cpp:535 +#: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550 msgid "This is only used in the Slic3r interface as a visual help." msgstr "ä»…æä¾›Slic3r界é¢çš„视觉帮助。" -#: src/libslic3r/PrintConfig.cpp:475 +#: src/libslic3r/PrintConfig.cpp:496 msgid "Extruder offset" msgstr "挤出头åç½®" -#: src/libslic3r/PrintConfig.cpp:476 +#: src/libslic3r/PrintConfig.cpp:497 msgid "" "If your firmware doesn't handle the extruder displacement you need the G-" "code to take it into account. This option lets you specify the displacement " @@ -4243,22 +4942,22 @@ msgstr "" "化æ¯ä¸ªæŒ¤å‡ºå¤´ç›¸å¯¹ç¬¬ä¸€ä¸ªæŒ¤å‡ºå¤´çš„ä½ç§»é‡ã€‚ä¸€èˆ¬ä¸ºæ­£åæ ‡ï¼ˆå®ƒä»¬å°†ä»ŽXYåæ ‡ç›¸å‡å¾—" "到)。" -#: src/libslic3r/PrintConfig.cpp:486 +#: src/libslic3r/PrintConfig.cpp:506 msgid "Extrusion axis" msgstr "挤出轴" -#: src/libslic3r/PrintConfig.cpp:487 +#: src/libslic3r/PrintConfig.cpp:507 msgid "" "Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)." msgstr "" "ä½¿ç”¨è¯¥é¡¹è®¾ç½®ä½ çš„æ‰“å°æœºæŒ¤å‡ºå¤´çš„轴所用字æ¯ï¼ˆä¸€èˆ¬ä¸ºEï¼Œä½†æœ‰çš„æ‰“å°æœºä½¿ç”¨A)。" -#: src/libslic3r/PrintConfig.cpp:493 +#: src/libslic3r/PrintConfig.cpp:512 msgid "Extrusion multiplier" msgstr "æŒ¤å‡ºå€æ•°" -#: src/libslic3r/PrintConfig.cpp:494 +#: src/libslic3r/PrintConfig.cpp:513 msgid "" "This factor changes the amount of flow proportionally. You may need to tweak " "this setting to get nice surface finish and correct single wall widths. " @@ -4269,11 +4968,11 @@ msgstr "" "的宽度。通常值范围在0.9到1.1ä¹‹é—´ã€‚å¦‚æžœä½ è§‰å¾—æœ‰å¿…è¦æ›´æ”¹å¹…åº¦æ›´å¤§ï¼Œæ£€æŸ¥ä¸æ–™ç›´å¾„" "和你的固件E步骤。" -#: src/libslic3r/PrintConfig.cpp:503 +#: src/libslic3r/PrintConfig.cpp:521 msgid "Default extrusion width" msgstr "默认挤出宽度" -#: src/libslic3r/PrintConfig.cpp:505 +#: src/libslic3r/PrintConfig.cpp:523 msgid "" "Set this to a non-zero value to allow a manual extrusion width. If left to " "zero, Slic3r derives extrusion widths from the nozzle diameter (see the " @@ -4282,15 +4981,15 @@ msgid "" "height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:509 +#: src/libslic3r/PrintConfig.cpp:527 msgid "mm or % (leave 0 for auto)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:515 +#: src/libslic3r/PrintConfig.cpp:532 msgid "Keep fan always on" msgstr "ä¿æŒé£Žæ‰‡æ€»æ˜¯æ‰“å¼€" -#: src/libslic3r/PrintConfig.cpp:516 +#: src/libslic3r/PrintConfig.cpp:533 msgid "" "If this is enabled, fan will never be disabled and will be kept running at " "least at its minimum speed. Useful for PLA, harmful for ABS." @@ -4298,11 +4997,11 @@ msgstr "" "勾选此项,风扇将ä¸ä¼šè¢«å…³é—­ï¼Œåœ¨æ•´ä¸ªæ‰“å°è¿‡ç¨‹ä¸­å°†æŒç»­ä»¥ä¸ä½ŽäºŽæœ€ä½Žé€Ÿå¼€å¯ã€‚对于PLA" "ææ–™æœ‰ç”¨ï¼Œå¯¹ABSææ–™ä¸é€‚用。" -#: src/libslic3r/PrintConfig.cpp:522 +#: src/libslic3r/PrintConfig.cpp:538 msgid "Enable fan if layer print time is below" msgstr "å¦‚æžœæ‰“å°æ—¶é—´ä½ŽäºŽè¯¥å€¼ï¼Œåˆ™æ°”动风扇" -#: src/libslic3r/PrintConfig.cpp:523 +#: src/libslic3r/PrintConfig.cpp:539 msgid "" "If layer print time is estimated below this number of seconds, fan will be " "enabled and its speed will be calculated by interpolating the minimum and " @@ -4311,27 +5010,27 @@ msgstr "" "å¦‚æžœä¼°ç®—çš„æ‰“å°æ—¶é—´ä½ŽäºŽè¯¥æ•°å€¼ï¼ˆå•ä½ä¸ºç§’),风扇将å¯ç”¨ï¼Œè€Œä¸”é€Ÿåº¦å€¼æ ¹æ®æ’补最å°" "速度值和最大速度值æ¥è®¡ç®—。" -#: src/libslic3r/PrintConfig.cpp:525 src/libslic3r/PrintConfig.cpp:1711 +#: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637 msgid "approximate seconds" msgstr "" -#: src/libslic3r/PrintConfig.cpp:534 +#: src/libslic3r/PrintConfig.cpp:549 msgid "Color" msgstr "颜色" -#: src/libslic3r/PrintConfig.cpp:541 +#: src/libslic3r/PrintConfig.cpp:555 msgid "Filament notes" msgstr "䏿–™å¤‡æ³¨" -#: src/libslic3r/PrintConfig.cpp:542 +#: src/libslic3r/PrintConfig.cpp:556 msgid "You can put your notes regarding the filament here." msgstr "å…³äºŽææ–™çš„å¤‡æ³¨å¯æ”¾è¿™é‡Œã€‚" -#: src/libslic3r/PrintConfig.cpp:551 src/libslic3r/PrintConfig.cpp:1196 +#: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181 msgid "Max volumetric speed" msgstr "最大体积速度" -#: src/libslic3r/PrintConfig.cpp:552 +#: src/libslic3r/PrintConfig.cpp:565 msgid "" "Maximum volumetric speed allowed for this filament. Limits the maximum " "volumetric speed of a print to the minimum of print and filament volumetric " @@ -4340,79 +5039,79 @@ msgstr "" "è¯¥ææ–™æ‰€å…许的最大体积速度。把最大体积速度é™å®šä¸ºæ‰“å°é€Ÿåº¦å’Œææ–™ä½“积速度的最å°" "值。设为0则无é™åˆ¶ã€‚" -#: src/libslic3r/PrintConfig.cpp:555 src/libslic3r/PrintConfig.cpp:1199 +#: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184 msgid "mm³/s" msgstr "" -#: src/libslic3r/PrintConfig.cpp:562 +#: src/libslic3r/PrintConfig.cpp:574 msgid "Loading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:563 +#: src/libslic3r/PrintConfig.cpp:575 msgid "Speed used for loading the filament on the wipe tower. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:571 +#: src/libslic3r/PrintConfig.cpp:582 msgid "Loading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:572 +#: src/libslic3r/PrintConfig.cpp:583 msgid "Speed used at the very beginning of loading phase. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:580 +#: src/libslic3r/PrintConfig.cpp:590 msgid "Unloading speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:581 +#: src/libslic3r/PrintConfig.cpp:591 msgid "" "Speed used for unloading the filament on the wipe tower (does not affect " "initial part of unloading just after ramming). " msgstr "" -#: src/libslic3r/PrintConfig.cpp:590 +#: src/libslic3r/PrintConfig.cpp:599 msgid "Unloading speed at the start" msgstr "" -#: src/libslic3r/PrintConfig.cpp:591 +#: src/libslic3r/PrintConfig.cpp:600 msgid "" "Speed used for unloading the tip of the filament immediately after ramming. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:599 +#: src/libslic3r/PrintConfig.cpp:607 msgid "Delay after unloading" msgstr "" -#: src/libslic3r/PrintConfig.cpp:600 +#: src/libslic3r/PrintConfig.cpp:608 msgid "" "Time to wait after the filament is unloaded. May help to get reliable " "toolchanges with flexible materials that may need more time to shrink to " "original dimensions. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:610 +#: src/libslic3r/PrintConfig.cpp:617 msgid "Number of cooling moves" msgstr "" -#: src/libslic3r/PrintConfig.cpp:611 +#: src/libslic3r/PrintConfig.cpp:618 msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves " msgstr "" -#: src/libslic3r/PrintConfig.cpp:620 +#: src/libslic3r/PrintConfig.cpp:626 msgid "Speed of the first cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:621 +#: src/libslic3r/PrintConfig.cpp:627 msgid "Cooling moves are gradually accelerating beginning at this speed. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:629 +#: src/libslic3r/PrintConfig.cpp:634 msgid "Minimal purge on wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:630 +#: src/libslic3r/PrintConfig.cpp:635 msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " @@ -4421,44 +5120,44 @@ msgid "" "to produce successive infill or sacrificial object extrusions reliably." msgstr "" -#: src/libslic3r/PrintConfig.cpp:635 +#: src/libslic3r/PrintConfig.cpp:639 msgid "mm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:641 +#: src/libslic3r/PrintConfig.cpp:645 msgid "Speed of the last cooling move" msgstr "" -#: src/libslic3r/PrintConfig.cpp:642 +#: src/libslic3r/PrintConfig.cpp:646 msgid "Cooling moves are gradually accelerating towards this speed. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:650 +#: src/libslic3r/PrintConfig.cpp:653 msgid "Filament load time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:651 +#: src/libslic3r/PrintConfig.cpp:654 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " "filament during a tool change (when executing the T code). This time is " "added to the total print time by the G-code time estimator." msgstr "" -#: src/libslic3r/PrintConfig.cpp:659 +#: src/libslic3r/PrintConfig.cpp:661 msgid "Ramming parameters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:660 +#: src/libslic3r/PrintConfig.cpp:662 msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters " msgstr "" -#: src/libslic3r/PrintConfig.cpp:667 +#: src/libslic3r/PrintConfig.cpp:668 msgid "Filament unload time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:668 +#: src/libslic3r/PrintConfig.cpp:669 msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " "filament during a tool change (when executing the T code). This time is " @@ -4474,11 +5173,11 @@ msgstr "" "åœ¨è¿™é‡Œè¾“å…¥ä½ çš„ææ–™ç›´å¾„。需è¦è¾ƒé«˜ç²¾åº¦ï¼Œæ‰€ä»¥è¯·ä½¿ç”¨å¡å°ºï¼Œæ²¿ç€ææ–™é•¿ä¸åšå¤šæ¬¡æµ‹" "é‡ï¼Œè®¡ç®—å¹³å‡å€¼ã€‚" -#: src/libslic3r/PrintConfig.cpp:685 +#: src/libslic3r/PrintConfig.cpp:684 msgid "Density" msgstr "密度" -#: src/libslic3r/PrintConfig.cpp:686 +#: src/libslic3r/PrintConfig.cpp:685 msgid "" "Enter your filament density here. This is only for statistical information. " "A decent way is to weigh a known length of filament and compute the ratio of " @@ -4488,42 +5187,42 @@ msgstr "" "åœ¨è¿™é‡Œè¾“å…¥ä½ çš„ä¸æ–™å¯†åº¦ã€‚此仅为统计信æ¯ã€‚一个ä¸é”™çš„æ–¹æ³•是测é‡ä¸€æ®µå·²çŸ¥é•¿åº¦ä¸æ–™" "çš„é‡é‡ï¼Œç„¶åŽè®¡ç®—体积。更好的方法å¼ç›´æŽ¥é€šè¿‡ä½ç§»è®¡ç®—体积。" -#: src/libslic3r/PrintConfig.cpp:689 +#: src/libslic3r/PrintConfig.cpp:688 msgid "g/cm³" msgstr "" -#: src/libslic3r/PrintConfig.cpp:695 +#: src/libslic3r/PrintConfig.cpp:693 msgid "Filament type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:696 +#: src/libslic3r/PrintConfig.cpp:694 msgid "The filament material type for use in custom G-codes." msgstr "" -#: src/libslic3r/PrintConfig.cpp:712 +#: src/libslic3r/PrintConfig.cpp:710 msgid "Soluble material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:713 +#: src/libslic3r/PrintConfig.cpp:711 msgid "Soluble material is most likely used for a soluble support." msgstr "" -#: src/libslic3r/PrintConfig.cpp:719 +#: src/libslic3r/PrintConfig.cpp:717 msgid "" "Enter your filament cost per kg here. This is only for statistical " "information." msgstr "åœ¨è¿™é‡Œè¾“å…¥ä¸æ–™æ¯å…¬æ–¤çš„价格。仅用于统计信æ¯ã€‚" # Set this to be the local currency symbol. -#: src/libslic3r/PrintConfig.cpp:720 +#: src/libslic3r/PrintConfig.cpp:718 msgid "money/kg" msgstr "Â¥/kg" -#: src/libslic3r/PrintConfig.cpp:729 +#: src/libslic3r/PrintConfig.cpp:727 msgid "Fill angle" msgstr "填充角度" -#: src/libslic3r/PrintConfig.cpp:731 +#: src/libslic3r/PrintConfig.cpp:729 msgid "" "Default base angle for infill orientation. Cross-hatching will be applied to " "this. Bridges will be infilled using the best direction Slic3r can detect, " @@ -4532,72 +5231,72 @@ msgstr "" "填充的默认基础方å‘角。交å‰å¼•线适用于此。桥接处将使用Slic3ræ‰€ä¾¦æµ‹çš„æœ€å¥½æ–¹å‘æ¥" "å¡«å……ï¼Œæ‰€ä»¥æ­¤å‚æ•°ä¸å½±å“它们。" -#: src/libslic3r/PrintConfig.cpp:744 +#: src/libslic3r/PrintConfig.cpp:741 msgid "Fill density" msgstr "填充密度" -#: src/libslic3r/PrintConfig.cpp:746 +#: src/libslic3r/PrintConfig.cpp:743 msgid "Density of internal infill, expressed in the range 0% - 100%." msgstr "内部填充的密度,以0% - 100% 表示。" -#: src/libslic3r/PrintConfig.cpp:782 +#: src/libslic3r/PrintConfig.cpp:778 msgid "Fill pattern" msgstr "å¡«å……æ ·å¼" -#: src/libslic3r/PrintConfig.cpp:784 +#: src/libslic3r/PrintConfig.cpp:780 msgid "Fill pattern for general low-density infill." msgstr "一般低密度填充的填充样å¼ã€‚" -#: src/libslic3r/PrintConfig.cpp:801 +#: src/libslic3r/PrintConfig.cpp:796 msgid "Grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:802 +#: src/libslic3r/PrintConfig.cpp:797 msgid "Triangles" msgstr "" -#: src/libslic3r/PrintConfig.cpp:803 +#: src/libslic3r/PrintConfig.cpp:798 msgid "Stars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:804 +#: src/libslic3r/PrintConfig.cpp:799 msgid "Cubic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:805 +#: src/libslic3r/PrintConfig.cpp:800 msgid "Line" msgstr "" -#: src/libslic3r/PrintConfig.cpp:807 src/libslic3r/PrintConfig.cpp:2023 +#: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923 msgid "Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:808 +#: src/libslic3r/PrintConfig.cpp:803 msgid "3D Honeycomb" msgstr "" -#: src/libslic3r/PrintConfig.cpp:809 +#: src/libslic3r/PrintConfig.cpp:804 msgid "Gyroid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:816 src/libslic3r/PrintConfig.cpp:826 -#: src/libslic3r/PrintConfig.cpp:835 src/libslic3r/PrintConfig.cpp:871 +#: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820 +#: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861 msgid "First layer" msgstr "首层" -#: src/libslic3r/PrintConfig.cpp:817 +#: src/libslic3r/PrintConfig.cpp:812 msgid "" "This is the acceleration your printer will use for first layer. Set zero to " "disable acceleration control for first layer." msgstr "æ­¤é¡¹ä¸ºæ‰“å°æœºå¯¹é¦–层使用的加速度。设为0则对首层ç¦ç”¨åŠ é€ŸæŽ§åˆ¶ã€‚" -#: src/libslic3r/PrintConfig.cpp:827 +#: src/libslic3r/PrintConfig.cpp:821 msgid "" "Heated build plate temperature for the first layer. Set this to zero to " "disable bed temperature control commands in the output." msgstr "é¦–å±‚çš„åŠ çƒ­æ¿æ¸©åº¦ã€‚设为0,å¯åœ¨è¾“出中ç¦ç”¨æœºåºŠæ¸©åº¦æŽ§åˆ¶æŒ‡ä»¤ã€‚" -#: src/libslic3r/PrintConfig.cpp:837 +#: src/libslic3r/PrintConfig.cpp:830 msgid "" "Set this to a non-zero value to set a manual extrusion width for first " "layer. You can use this to force fatter extrudates for better adhesion. If " @@ -4605,11 +5304,11 @@ msgid "" "layer height. If set to zero, it will use the default extrusion width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:848 +#: src/libslic3r/PrintConfig.cpp:840 msgid "First layer height" msgstr "首层高度" -#: src/libslic3r/PrintConfig.cpp:850 +#: src/libslic3r/PrintConfig.cpp:842 msgid "" "When printing with very low layer heights, you might still want to print a " "thicker bottom layer to improve adhesion and tolerance for non perfect build " @@ -4619,16 +5318,16 @@ msgstr "" "当以éžå¸¸ä½Žçš„å±‚é«˜æ‰“å°æ—¶ï¼Œå¯¹äºŽä¸å¤ªç†æƒ³çš„热床æ¥è¯´å¯èƒ½éœ€è¦æ‰“å°è¾ƒåŽšçš„åº•å±‚æ¥æé«˜ç²˜" "附效果。该值å¯è¢«è¡¨ç¤ºä¸ºä¸€ä¸ªç»å¯¹å€¼ï¼Œæˆ–者一个相对于默认层高的百分数(如150%)。" -#: src/libslic3r/PrintConfig.cpp:854 src/libslic3r/PrintConfig.cpp:1003 -#: src/libslic3r/PrintConfig.cpp:1884 +#: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991 +#: src/libslic3r/PrintConfig.cpp:1796 msgid "mm or %" msgstr "" -#: src/libslic3r/PrintConfig.cpp:860 +#: src/libslic3r/PrintConfig.cpp:851 msgid "First layer speed" msgstr "首层速度" -#: src/libslic3r/PrintConfig.cpp:861 +#: src/libslic3r/PrintConfig.cpp:852 msgid "" "If expressed as absolute value in mm/s, this speed will be applied to all " "the print moves of the first layer, regardless of their type. If expressed " @@ -4637,7 +5336,7 @@ msgstr "" "如果表示为mm/s的数值,该值将被用于首层的打å°åŠ¨ä½œï¼Œæ— å…³åŠ¨ä½œçš„ç±»åž‹ã€‚å¦‚æžœè¡¨ç¤ºä¸º" "百分数(如40%),则以默认速度值为基准。" -#: src/libslic3r/PrintConfig.cpp:872 +#: src/libslic3r/PrintConfig.cpp:862 msgid "" "Extruder temperature for first layer. If you want to control temperature " "manually during print, set this to zero to disable temperature control " @@ -4646,18 +5345,18 @@ msgstr "" "首层挤出头温度。如果è¦åœ¨æ‰“å°è¿‡ç¨‹ä¸­æ‰‹åŠ¨æŽ§åˆ¶æ¸©åº¦ï¼Œå°†è¯¥é¡¹è®¾ä¸º0æ¥ç¦æ­¢è¾“出文件中的" "控制命令。" -#: src/libslic3r/PrintConfig.cpp:882 +#: src/libslic3r/PrintConfig.cpp:871 msgid "" "Speed for filling small gaps using short zigzag moves. Keep this reasonably " "low to avoid too much shaking and resonance issues. Set zero to disable gaps " "filling." msgstr "" -#: src/libslic3r/PrintConfig.cpp:890 +#: src/libslic3r/PrintConfig.cpp:879 msgid "Verbose G-code" msgstr "详细的G代ç " -#: src/libslic3r/PrintConfig.cpp:891 +#: src/libslic3r/PrintConfig.cpp:880 msgid "" "Enable this to get a commented G-code file, with each line explained by a " "descriptive text. If you print from SD card, the additional weight of the " @@ -4666,11 +5365,11 @@ msgstr "" "å¯åŠ¨è¯¥é¡¹å¯èŽ·å¾—å¸¦æ³¨é‡Šçš„Gä»£ç æ–‡ä»¶ï¼Œæ¯ä¸€è¡Œéƒ½æœ‰å¯¹åº”的解释性文字。如果从SD塿‰“å°ï¼Œ" "文件冗余部分å¯èƒ½å‡ç¼“你的固件è¿è¡Œé€Ÿåº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:899 +#: src/libslic3r/PrintConfig.cpp:887 msgid "G-code flavor" msgstr "G代ç é£Žæ ¼" -#: src/libslic3r/PrintConfig.cpp:900 +#: src/libslic3r/PrintConfig.cpp:888 msgid "" "Some G/M-code commands, including temperature control and others, are not " "universal. Set this option to your printer's firmware to get a compatible " @@ -4680,32 +5379,32 @@ msgstr "" "一些 G/M 代ç çš„æŒ‡ä»¤ï¼ŒåŒ…括温度控制和其他,但ä¸é€šç”¨ã€‚å°†æ­¤é¡¹è®¾ä¸ºæ‰“å°æœºçš„固件æ¥èŽ·" "å–兼容性的输出。“无挤出â€é€‰é¡¹ä½¿å¾—Slic3rä¸è¾“出任何挤出值。" -#: src/libslic3r/PrintConfig.cpp:924 +#: src/libslic3r/PrintConfig.cpp:911 msgid "No extrusion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:929 +#: src/libslic3r/PrintConfig.cpp:924 msgid "High extruder current on filament swap" msgstr "" -#: src/libslic3r/PrintConfig.cpp:930 +#: src/libslic3r/PrintConfig.cpp:925 msgid "" "It may be beneficial to increase the extruder motor current during the " "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -#: src/libslic3r/PrintConfig.cpp:939 +#: src/libslic3r/PrintConfig.cpp:933 msgid "" "This is the acceleration your printer will use for infill. Set zero to " "disable acceleration control for infill." msgstr "æ‰“å°æœºå¡«å……加速度。设为0å¯ç¦ç”¨å¡«å……加速控制。" -#: src/libslic3r/PrintConfig.cpp:948 +#: src/libslic3r/PrintConfig.cpp:941 msgid "Combine infill every" msgstr "æ¯å‡ å±‚è”åˆå¡«å……" -#: src/libslic3r/PrintConfig.cpp:950 +#: src/libslic3r/PrintConfig.cpp:943 msgid "" "This feature allows to combine infill and speed up your print by extruding " "thicker infill layers while preserving thin perimeters, thus accuracy." @@ -4713,19 +5412,19 @@ msgstr "" "该功能å¯é€šè¿‡æŒ¤å‡ºæ›´åŽšçš„å¡«å……å±‚æ¥å®žçްè”åˆå¡«å……,并加速打å°ï¼ŒåŒæ—¶ä¿ç•™äº†è–„å£ï¼Œä¹Ÿå°±" "ä¿è¯äº†ç²¾åº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:954 +#: src/libslic3r/PrintConfig.cpp:946 msgid "Combine infill every n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:960 +#: src/libslic3r/PrintConfig.cpp:952 msgid "Infill extruder" msgstr "填充挤出头" -#: src/libslic3r/PrintConfig.cpp:962 +#: src/libslic3r/PrintConfig.cpp:954 msgid "The extruder to use when printing infill." msgstr "打å°å¡«å……时使用的挤出头。" -#: src/libslic3r/PrintConfig.cpp:971 +#: src/libslic3r/PrintConfig.cpp:962 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill. If " "left zero, default extrusion width will be used if set, otherwise 1.125 x " @@ -4734,21 +5433,21 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:981 +#: src/libslic3r/PrintConfig.cpp:971 msgid "Infill before perimeters" msgstr "å…ˆå¡«å……åŽæ‰“å°è½®å»“" -#: src/libslic3r/PrintConfig.cpp:982 +#: src/libslic3r/PrintConfig.cpp:972 msgid "" "This option will switch the print order of perimeters and infill, making the " "latter first." msgstr "该选项将打å°è½®å»“和填充的方å¼å¯¹è°ƒï¼Œä½¿åŽè€…æå‰ã€‚" -#: src/libslic3r/PrintConfig.cpp:988 +#: src/libslic3r/PrintConfig.cpp:977 msgid "Only infill where needed" msgstr "ä»…åœ¨éœ€è¦æ—¶å¡«å……" -#: src/libslic3r/PrintConfig.cpp:990 +#: src/libslic3r/PrintConfig.cpp:979 msgid "" "This option will limit infill to the areas actually needed for supporting " "ceilings (it will act as internal support material). If enabled, slows down " @@ -4757,11 +5456,11 @@ msgstr "" "该选项将把填充é™å®šç”¨äºŽæ”¯æ’‘天花æ¿ï¼ˆå°†å……å½“å†…éƒ¨æ”¯æ’‘ææ–™çš„作用)。如果å¯ç”¨ï¼Œç”±äºŽ" "多个包å«çš„选项将使G代ç ç”Ÿæˆé€Ÿåº¦å˜æ…¢ã€‚" -#: src/libslic3r/PrintConfig.cpp:998 +#: src/libslic3r/PrintConfig.cpp:986 msgid "Infill/perimeters overlap" msgstr "å¡«å……/轮廓é‡å " -#: src/libslic3r/PrintConfig.cpp:1000 +#: src/libslic3r/PrintConfig.cpp:988 msgid "" "This setting applies an additional overlap between infill and perimeters for " "better bonding. Theoretically this shouldn't be needed, but backlash might " @@ -4771,23 +5470,23 @@ msgstr "" "使得填充和轮廓间有é¢å¤–çš„é‡å éƒ¨åˆ†ï¼Œä¾¿äºŽç»“åˆã€‚ç†è®ºä¸Šå¹¶ä¸éœ€è¦ï¼Œä½†åç§»å¯èƒ½ä¼šå¯¼è‡´" "间隙。如果表示为百分数(如15%),则以轮廓挤出宽度为基准。" -#: src/libslic3r/PrintConfig.cpp:1012 +#: src/libslic3r/PrintConfig.cpp:999 msgid "Speed for printing the internal fill. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1020 +#: src/libslic3r/PrintConfig.cpp:1007 msgid "Inherits profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1021 +#: src/libslic3r/PrintConfig.cpp:1008 msgid "Name of the profile, from which this profile inherits." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1032 +#: src/libslic3r/PrintConfig.cpp:1021 msgid "Interface shells" msgstr "表é¢å¤–壳" -#: src/libslic3r/PrintConfig.cpp:1033 +#: src/libslic3r/PrintConfig.cpp:1022 msgid "" "Force the generation of solid shells between adjacent materials/volumes. " "Useful for multi-extruder prints with translucent materials or manual " @@ -4796,7 +5495,7 @@ msgstr "" "åœ¨ç›¸é‚»çš„ææ–™/包围体之间强制生æˆå¯é å¤–壳层。适用于使用åŠé€æ˜Žææ–™æˆ–æ‰‹å·¥å¯æº¶æ€§æ”¯" "æ’‘ææ–™çš„多挤出头打å°ã€‚" -#: src/libslic3r/PrintConfig.cpp:1043 +#: src/libslic3r/PrintConfig.cpp:1031 msgid "" "This custom code is inserted at every layer change, right after the Z move " "and before the extruder moves to the first layer point. Note that you can " @@ -4806,11 +5505,11 @@ msgstr "" "这段G代ç åœ¨æ¯ä¸€å±‚å˜åŒ–åŽï¼Œå³Z轴移动åŽï¼ŒæŒ¤å‡ºå¤´ç§»åŠ¨åˆ°ç¬¬ä¸€å±‚çš„ç‚¹ä¹‹å‰æ’入。注æ„除" "了使用如[layer_num]å’Œ[layer_z],也å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡æ¥ä»£æ›¿Slic3rçš„å‚æ•°ã€‚" -#: src/libslic3r/PrintConfig.cpp:1054 +#: src/libslic3r/PrintConfig.cpp:1042 msgid "Supports remaining times" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1055 +#: src/libslic3r/PrintConfig.cpp:1043 msgid "" "Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute " "intervals into the G-code to let the firmware show accurate remaining time. " @@ -4818,63 +5517,63 @@ msgid "" "firmware supports M73 Qxx Sxx for the silent mode." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1063 +#: src/libslic3r/PrintConfig.cpp:1051 msgid "Supports silent mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1064 +#: src/libslic3r/PrintConfig.cpp:1052 msgid "Set silent mode for the G-code flavor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1087 +#: src/libslic3r/PrintConfig.cpp:1075 msgid "Maximum feedrate %1%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1089 +#: src/libslic3r/PrintConfig.cpp:1077 msgid "Maximum feedrate of the %1% axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1097 +#: src/libslic3r/PrintConfig.cpp:1085 msgid "Maximum acceleration %1%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1099 +#: src/libslic3r/PrintConfig.cpp:1087 msgid "Maximum acceleration of the %1% axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1107 +#: src/libslic3r/PrintConfig.cpp:1095 msgid "Maximum jerk %1%" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1109 +#: src/libslic3r/PrintConfig.cpp:1097 msgid "Maximum jerk of the %1% axis" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1122 +#: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110 msgid "Minimum feedrate when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1131 src/libslic3r/PrintConfig.cpp:1133 +#: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121 msgid "Minimum travel feedrate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1142 src/libslic3r/PrintConfig.cpp:1144 +#: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132 msgid "Maximum acceleration when extruding" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1155 +#: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143 msgid "Maximum acceleration when retracting" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1163 src/libslic3r/PrintConfig.cpp:1173 +#: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160 msgid "Max" msgstr "最大值" -#: src/libslic3r/PrintConfig.cpp:1164 +#: src/libslic3r/PrintConfig.cpp:1152 msgid "This setting represents the maximum speed of your fan." msgstr "该值表示风扇的最大速度。" -#: src/libslic3r/PrintConfig.cpp:1174 +#: src/libslic3r/PrintConfig.cpp:1161 #, no-c-format msgid "" "This is the highest printable layer height for this extruder, used to cap " @@ -4883,11 +5582,11 @@ msgid "" "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1185 +#: src/libslic3r/PrintConfig.cpp:1171 msgid "Max print speed" msgstr "最大打å°é€Ÿåº¦" -#: src/libslic3r/PrintConfig.cpp:1186 +#: src/libslic3r/PrintConfig.cpp:1172 msgid "" "When setting other speed settings to 0 Slic3r will autocalculate the optimal " "speed in order to keep constant extruder pressure. This experimental setting " @@ -4896,17 +5595,17 @@ msgstr "" "å½“å°†å…¶ä»–é€Ÿåº¦å‚æ•°è®¾ä¸º0时,Slic3r会自动计算最优速度以ä¿è¯æŒ¤å‡ºå¤´åŽ‹åŠ›ç¨³å®šã€‚è¯¥è¯•éªŒ" "傿•°ç”¨äºŽè®¾ç½®æ‰€å…许的最大打å°é€Ÿåº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:1197 +#: src/libslic3r/PrintConfig.cpp:1182 msgid "" "This experimental setting is used to set the maximum volumetric speed your " "extruder supports." msgstr "è¯¥å®žéªŒå‚æ•°ç”¨äºŽè®¾ç½®ä½ çš„æŒ¤å‡ºå¤´æ‰€æ”¯æŒçš„æœ€å¤§ä½“积速度。" -#: src/libslic3r/PrintConfig.cpp:1206 +#: src/libslic3r/PrintConfig.cpp:1191 msgid "Max volumetric slope positive" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1207 src/libslic3r/PrintConfig.cpp:1219 +#: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203 msgid "" "This experimental setting is used to limit the speed of change in extrusion " "rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " @@ -4914,42 +5613,42 @@ msgid "" "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1211 src/libslic3r/PrintConfig.cpp:1223 +#: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207 msgid "mm³/s²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1218 +#: src/libslic3r/PrintConfig.cpp:1202 msgid "Max volumetric slope negative" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1230 src/libslic3r/PrintConfig.cpp:1240 +#: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223 msgid "Min" msgstr "最å°å€¼" -#: src/libslic3r/PrintConfig.cpp:1231 +#: src/libslic3r/PrintConfig.cpp:1215 msgid "This setting represents the minimum PWM your fan needs to work." msgstr "è¯¥å‚æ•°è¡¨ç¤ºä½ çš„风扇工作的最å°PWM。" -#: src/libslic3r/PrintConfig.cpp:1241 +#: src/libslic3r/PrintConfig.cpp:1224 msgid "" "This is the lowest printable layer height for this extruder and limits the " "resolution for variable layer height. Typical values are between 0.05 mm and " "0.1 mm." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1250 +#: src/libslic3r/PrintConfig.cpp:1232 msgid "Min print speed" msgstr "æœ€å°æ‰“å°é€Ÿåº¦" -#: src/libslic3r/PrintConfig.cpp:1251 +#: src/libslic3r/PrintConfig.cpp:1233 msgid "Slic3r will not scale speed down below this speed." msgstr "Slic3rçš„æœ€å°æ‰“å°é€Ÿåº¦ã€‚" -#: src/libslic3r/PrintConfig.cpp:1259 +#: src/libslic3r/PrintConfig.cpp:1240 msgid "Minimal filament extrusion length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1260 +#: src/libslic3r/PrintConfig.cpp:1241 msgid "" "Generate no less than the number of skirt loops required to consume the " "specified amount of filament on the bottom layer. For multi-extruder " @@ -4958,78 +5657,58 @@ msgstr "" "åœ¨åº•å±‚ä¸Šæ¶ˆè€—æŒ‡å®šææ–™é‡ç”ŸæˆçŽ¯è¾¹ã€‚å¯¹äºŽå¤šæŒ¤å‡ºå¤´çš„æœºå™¨ï¼Œè¯¥æœ€å°å€¼é€‚用于æ¯ä¸ªæŒ¤å‡º" "头。" -#: src/libslic3r/PrintConfig.cpp:1270 +#: src/libslic3r/PrintConfig.cpp:1250 msgid "Configuration notes" msgstr "é…置备注" -#: src/libslic3r/PrintConfig.cpp:1271 +#: src/libslic3r/PrintConfig.cpp:1251 msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" "ä½ å¯ä»¥åœ¨è¿™é‡Œè¾“入你的个人备注。该段文字内容将被添加到Gä»£ç æ–‡ä»¶å¼€å¤´çš„æ³¨é‡Šé‡Œã€‚" -#: src/libslic3r/PrintConfig.cpp:1281 +#: src/libslic3r/PrintConfig.cpp:1260 msgid "Nozzle diameter" msgstr "喷嘴直径" -#: src/libslic3r/PrintConfig.cpp:1282 +#: src/libslic3r/PrintConfig.cpp:1261 msgid "" "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" msgstr "这是你的挤出头喷嘴的直径(:0.5,0.35等。)" -#: src/libslic3r/PrintConfig.cpp:1288 +#: src/libslic3r/PrintConfig.cpp:1266 msgid "Host Type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1289 +#: src/libslic3r/PrintConfig.cpp:1267 msgid "" "Slic3r can upload G-code files to a printer host. This field must contain " "the kind of the host." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1301 -msgid "API Key / Password" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1302 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1317 -msgid "Hostname, IP or URL" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1318 -msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1325 +#: src/libslic3r/PrintConfig.cpp:1278 msgid "Only retract when crossing perimeters" msgstr "仅在越过轮廓时回缩" -#: src/libslic3r/PrintConfig.cpp:1326 +#: src/libslic3r/PrintConfig.cpp:1279 msgid "" "Disables retraction when the travel path does not exceed the upper layer's " "perimeters (and thus any ooze will be probably invisible)." msgstr "当空程ä¸è¶…过上层轮廓时ç¦ç”¨å›žæ’¤ï¼ˆè¿™æ ·æ»´åž‚现象å¯èƒ½ä¼šçœ‹ä¸è§ï¼‰ã€‚" -#: src/libslic3r/PrintConfig.cpp:1334 +#: src/libslic3r/PrintConfig.cpp:1286 msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing. It will enable a tall skirt automatically and move extruders outside " "such skirt when changing temperatures." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1342 +#: src/libslic3r/PrintConfig.cpp:1293 msgid "Output filename format" msgstr "输出文件åç§°æ ¼å¼" -#: src/libslic3r/PrintConfig.cpp:1343 +#: src/libslic3r/PrintConfig.cpp:1294 msgid "" "You can use all configuration options as variables inside this template. For " "example: [layer_height], [fill_density] etc. You can also use [timestamp], " @@ -5040,11 +5719,11 @@ msgstr "" "[timestamp], [year], [month], [day], [hour], [minute], [second], [version], " "[input_filename], [input_filename_base]。" -#: src/libslic3r/PrintConfig.cpp:1353 +#: src/libslic3r/PrintConfig.cpp:1303 msgid "Detect bridging perimeters" msgstr "侦测桥接轮廓" -#: src/libslic3r/PrintConfig.cpp:1355 +#: src/libslic3r/PrintConfig.cpp:1305 msgid "" "Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan." @@ -5052,21 +5731,21 @@ msgstr "" "试验选项,用于调整悬空部ä½çš„æµé‡ï¼ˆä½¿ç”¨æ¡¥æŽ¥æµé‡ï¼‰ï¼Œå°†æ¡¥æŽ¥é€Ÿåº¦ç”¨äºŽå®ƒä»¬å¹¶å¯ç”¨é£Ž" "扇。" -#: src/libslic3r/PrintConfig.cpp:1362 +#: src/libslic3r/PrintConfig.cpp:1311 msgid "Filament parking position" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1363 +#: src/libslic3r/PrintConfig.cpp:1312 msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:1372 +#: src/libslic3r/PrintConfig.cpp:1320 msgid "Extra loading distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1373 +#: src/libslic3r/PrintConfig.cpp:1321 msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " @@ -5074,12 +5753,12 @@ msgid "" "than unloading. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:1382 src/libslic3r/PrintConfig.cpp:1402 -#: src/libslic3r/PrintConfig.cpp:1415 src/libslic3r/PrintConfig.cpp:1425 +#: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347 +#: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369 msgid "Perimeters" msgstr "轮廓" -#: src/libslic3r/PrintConfig.cpp:1383 +#: src/libslic3r/PrintConfig.cpp:1330 msgid "" "This is the acceleration your printer will use for perimeters. A high value " "like 9000 usually gives good results if your hardware is up to the job. Set " @@ -5088,16 +5767,16 @@ msgstr "" "æ‰“å°æœºå°†ç”¨äºŽæ‰“å°è½®å»“的加速度。如果你的硬件性能足够,一个9000这样的高数值通常" "ä¼šç»™å‡ºå¾ˆå¥½çš„æ‰“å°æ•ˆæžœã€‚设为0å°†ç¦ç”¨è½®å»“加速度控制。" -#: src/libslic3r/PrintConfig.cpp:1392 +#: src/libslic3r/PrintConfig.cpp:1338 msgid "Perimeter extruder" msgstr "轮廓挤出头" -#: src/libslic3r/PrintConfig.cpp:1394 +#: src/libslic3r/PrintConfig.cpp:1340 msgid "" "The extruder to use when printing perimeters and brim. First extruder is 1." msgstr "打å°è½®å»“和裙边所使用的挤出头。第一个挤出头是1。" -#: src/libslic3r/PrintConfig.cpp:1404 +#: src/libslic3r/PrintConfig.cpp:1349 msgid "" "Set this to a non-zero value to set a manual extrusion width for perimeters. " "You may want to use thinner extrudates to get more accurate surfaces. If " @@ -5106,12 +5785,12 @@ msgid "" "it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1417 +#: src/libslic3r/PrintConfig.cpp:1361 msgid "" "Speed for perimeters (contours, aka vertical shells). Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1427 +#: src/libslic3r/PrintConfig.cpp:1371 msgid "" "This option sets the number of perimeters to generate for each layer. Note " "that Slic3r may increase this number automatically when it detects sloping " @@ -5121,11 +5800,11 @@ msgstr "" "该选项设置æ¯ä¸€å±‚生æˆçš„轮廓个数。注æ„,如果â€é¢å¤–轮廓“选项被å¯åŠ¨ï¼ŒSlic3r在侦测" "到斜å¡è¡¨é¢æ—¶å¯èƒ½ä¼šè‡ªåŠ¨å¢žåŠ è¯¥æ•°å€¼ï¼Œå› ä¸ºè¾ƒå¤šçš„è½®å»“æœ‰åˆ©äºŽæ–œå¡è¡¨é¢çš„æ‰“å°ã€‚" -#: src/libslic3r/PrintConfig.cpp:1431 +#: src/libslic3r/PrintConfig.cpp:1375 msgid "(minimum)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1439 +#: src/libslic3r/PrintConfig.cpp:1383 msgid "" "If you want to process the output G-code through custom scripts, just list " "their absolute paths here. Separate multiple scripts with a semicolon. " @@ -5134,55 +5813,55 @@ msgid "" "environment variables." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1452 +#: src/libslic3r/PrintConfig.cpp:1395 msgid "Printer type" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1453 +#: src/libslic3r/PrintConfig.cpp:1396 msgid "Type of the printer." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1457 +#: src/libslic3r/PrintConfig.cpp:1401 msgid "Printer notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1458 +#: src/libslic3r/PrintConfig.cpp:1402 msgid "You can put your notes regarding the printer here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1467 +#: src/libslic3r/PrintConfig.cpp:1410 msgid "Printer vendor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1468 +#: src/libslic3r/PrintConfig.cpp:1411 msgid "Name of the printer vendor." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1472 +#: src/libslic3r/PrintConfig.cpp:1416 msgid "Printer variant" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1473 +#: src/libslic3r/PrintConfig.cpp:1417 msgid "" "Name of the printer variant. For example, the printer variants may be " "differentiated by a nozzle diameter." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1483 +#: src/libslic3r/PrintConfig.cpp:1430 msgid "Raft layers" msgstr "ç­æ¿å±‚" -#: src/libslic3r/PrintConfig.cpp:1485 +#: src/libslic3r/PrintConfig.cpp:1432 msgid "" "The object will be raised by this number of layers, and support material " "will be generated under it." msgstr "ç‰©ä½“å°†è¢«è¯¥æ•°ç›®çš„å±‚æ•°æŠ¬èµ·ï¼Œè€Œæ”¯æ’‘ææ–™å°†åœ¨å…¶ä¸‹æ–¹ç”Ÿæˆã€‚" -#: src/libslic3r/PrintConfig.cpp:1494 +#: src/libslic3r/PrintConfig.cpp:1440 msgid "Resolution" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1495 +#: src/libslic3r/PrintConfig.cpp:1441 msgid "" "Minimum detail resolution, used to simplify the input file for speeding up " "the slicing job and reducing memory usage. High-resolution models often " @@ -5192,42 +5871,42 @@ msgstr "" "最å°ç»†èŠ‚åˆ†è¾¨çŽ‡ï¼Œç”¨æ¥ç®€åŒ–输入文件,加速切片,å‡å°‘内存å ç”¨ã€‚æ‰“å°æœºé€šå¸¸å¾ˆé𾿏²æŸ“" "出高精度模型的细节。设为0则ç¦ç”¨ä»»ä½•简化,完全ä¾ç…§è¾“入文件的精度。" -#: src/libslic3r/PrintConfig.cpp:1506 +#: src/libslic3r/PrintConfig.cpp:1451 msgid "Minimum travel after retraction" msgstr "å›žç¼©åŽæœ€å°ç©ºç¨‹" -#: src/libslic3r/PrintConfig.cpp:1507 +#: src/libslic3r/PrintConfig.cpp:1452 msgid "" "Retraction is not triggered when travel moves are shorter than this length." msgstr "当空程短于此长度时ä¸ä¼šè§¦å‘回缩。" -#: src/libslic3r/PrintConfig.cpp:1514 +#: src/libslic3r/PrintConfig.cpp:1458 msgid "Retract amount before wipe" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1515 +#: src/libslic3r/PrintConfig.cpp:1459 msgid "" "With bowden extruders, it may be wise to do some amount of quick retract " "before doing the wipe movement." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1523 +#: src/libslic3r/PrintConfig.cpp:1466 msgid "Retract on layer change" msgstr "层å˜åŒ–时回缩" -#: src/libslic3r/PrintConfig.cpp:1524 +#: src/libslic3r/PrintConfig.cpp:1467 msgid "This flag enforces a retraction whenever a Z move is done." msgstr "该项强制在Zè½´ç§»åŠ¨å®Œæˆæ—¶å›žç¼©ã€‚" -#: src/libslic3r/PrintConfig.cpp:1530 src/libslic3r/PrintConfig.cpp:1539 +#: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480 msgid "Length" msgstr "长度" -#: src/libslic3r/PrintConfig.cpp:1531 +#: src/libslic3r/PrintConfig.cpp:1473 msgid "Retraction Length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1532 +#: src/libslic3r/PrintConfig.cpp:1474 msgid "" "When retraction is triggered, filament is pulled back by the specified " "amount (the length is measured on raw filament, before it enters the " @@ -5236,15 +5915,15 @@ msgstr "" "当触å‘å›žç¼©æ—¶ï¼Œä¸æ–™ä»¥æŒ‡å®šå€¼å¾€å›žæ”¶ç¼©ï¼ˆé•¿åº¦ä»¥åœ¨è¿›å…¥æŒ¤å‡ºå¤´ä¹‹å‰çš„åŽŸå§‹ææ–™ä¸ºåŸºç¡€è¿›" "行计算)。" -#: src/libslic3r/PrintConfig.cpp:1534 src/libslic3r/PrintConfig.cpp:1544 +#: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485 msgid "mm (zero to disable)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1540 +#: src/libslic3r/PrintConfig.cpp:1481 msgid "Retraction Length (Toolchange)" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1541 +#: src/libslic3r/PrintConfig.cpp:1482 msgid "" "When retraction is triggered before changing tool, filament is pulled back " "by the specified amount (the length is measured on raw filament, before it " @@ -5253,11 +5932,11 @@ msgstr "" "当在改å˜å·¥å…·å‰è§¦å‘å›žç¼©æ—¶ï¼Œä¸æ–™ä»¥æŒ‡å®šå€¼å›žç¼©ï¼ˆé•¿åº¦ä»¥è¿›å…¥æŒ¤å‡ºå¤´å‰çš„åŽŸå§‹ææ–™ä¸ºåŸº" "础测é‡ï¼‰ã€‚" -#: src/libslic3r/PrintConfig.cpp:1550 +#: src/libslic3r/PrintConfig.cpp:1490 msgid "Lift Z" msgstr "抬高Z" -#: src/libslic3r/PrintConfig.cpp:1551 +#: src/libslic3r/PrintConfig.cpp:1491 msgid "" "If you set this to a positive value, Z is quickly raised every time a " "retraction is triggered. When using multiple extruders, only the setting for " @@ -5266,15 +5945,15 @@ msgstr "" "如果设为正值,æ¯å½“å›žç¼©è§¦å‘æ—¶Z轴会快速抬å‡ã€‚当使用多个挤出头时,仅会考虑第一个" "æŒ¤å‡ºå¤´çš„è¯¥å‚æ•°ã€‚" -#: src/libslic3r/PrintConfig.cpp:1559 +#: src/libslic3r/PrintConfig.cpp:1498 msgid "Above Z" msgstr "在Z上方" -#: src/libslic3r/PrintConfig.cpp:1560 +#: src/libslic3r/PrintConfig.cpp:1499 msgid "Only lift Z above" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1561 +#: src/libslic3r/PrintConfig.cpp:1500 msgid "" "If you set this to a positive value, Z lift will only take place above the " "specified absolute Z. You can tune this setting for skipping lift on the " @@ -5283,15 +5962,15 @@ msgstr "" "如果设为正值,仅在指定的ç»å¯¹Z值上方æ‰ä¼šæŠ¬é«˜Z。å¯ä»¥è°ƒæ•´è¯¥å‚数,用于跳过在å‰å‡ " "层时跳过Z抬高的步骤。" -#: src/libslic3r/PrintConfig.cpp:1569 +#: src/libslic3r/PrintConfig.cpp:1507 msgid "Below Z" msgstr "Z下方" -#: src/libslic3r/PrintConfig.cpp:1570 +#: src/libslic3r/PrintConfig.cpp:1508 msgid "Only lift Z below" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1571 +#: src/libslic3r/PrintConfig.cpp:1509 msgid "" "If you set this to a positive value, Z lift will only take place below the " "specified absolute Z. You can tune this setting for limiting lift to the " @@ -5300,131 +5979,127 @@ msgstr "" "如果设为正值,仅在指定的ç»å¯¹Z值选房å¯ä»¥è°ƒæ•´è¯¥å‚数,用于将抬高Z的动作é™åˆ¶åœ¨å‰" "几层时。" -#: src/libslic3r/PrintConfig.cpp:1580 src/libslic3r/PrintConfig.cpp:1589 +#: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525 msgid "Extra length on restart" msgstr "é‡å¯æ—¶é¢å¤–长度" -#: src/libslic3r/PrintConfig.cpp:1581 +#: src/libslic3r/PrintConfig.cpp:1518 msgid "" "When the retraction is compensated after the travel move, the extruder will " "push this additional amount of filament. This setting is rarely needed." msgstr "" "当在空程åŽå›žç¼©è¢«è¡¥å¿æ—¶ï¼ŒæŒ¤å‡ºå¤´ä¼šåŸºç¡€é¢å¤–的指定é‡ä¸æ–™ã€‚è¯¥å‚æ•°ä¸€èˆ¬ä¸éœ€è®¾ç½®ã€‚" -#: src/libslic3r/PrintConfig.cpp:1590 +#: src/libslic3r/PrintConfig.cpp:1526 msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "当在切æ¢å·¥å…·åŽå›žç¼©è¢«è¡¥å¿æ—¶ï¼ŒæŒ¤å‡ºå¤´ä¼šåŸºç¡€é¢å¤–的指定é‡ä¸æ–™ã€‚" -#: src/libslic3r/PrintConfig.cpp:1598 src/libslic3r/PrintConfig.cpp:1599 +#: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534 msgid "Retraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1600 +#: src/libslic3r/PrintConfig.cpp:1535 msgid "The speed for retractions (it only applies to the extruder motor)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1607 src/libslic3r/PrintConfig.cpp:1608 +#: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542 msgid "Deretraction Speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1609 +#: src/libslic3r/PrintConfig.cpp:1543 msgid "" "The speed for loading of a filament into extruder after retraction (it only " "applies to the extruder motor). If left to zero, the retraction speed is " "used." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1617 +#: src/libslic3r/PrintConfig.cpp:1550 msgid "Seam position" msgstr "接åˆä½ç½®" -#: src/libslic3r/PrintConfig.cpp:1619 +#: src/libslic3r/PrintConfig.cpp:1552 msgid "Position of perimeters starting points." msgstr "轮廓开始点的ä½ç½®ã€‚" -#: src/libslic3r/PrintConfig.cpp:1626 +#: src/libslic3r/PrintConfig.cpp:1558 msgid "Random" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1627 +#: src/libslic3r/PrintConfig.cpp:1559 msgid "Nearest" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1628 +#: src/libslic3r/PrintConfig.cpp:1560 msgid "Aligned" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1629 -msgid "Rear" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:1636 +#: src/libslic3r/PrintConfig.cpp:1568 msgid "Direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1638 +#: src/libslic3r/PrintConfig.cpp:1570 msgid "Preferred direction of the seam" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1639 +#: src/libslic3r/PrintConfig.cpp:1571 msgid "Seam preferred direction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1647 +#: src/libslic3r/PrintConfig.cpp:1578 msgid "Jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1649 +#: src/libslic3r/PrintConfig.cpp:1580 msgid "Seam preferred direction jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1650 +#: src/libslic3r/PrintConfig.cpp:1581 msgid "Preferred direction of the seam - jitter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1661 +#: src/libslic3r/PrintConfig.cpp:1591 msgid "USB/serial port for printer connection." msgstr "ç”¨äºŽæ‰“å°æœºè¿žæŽ¥çš„USB/串å£ã€‚" -#: src/libslic3r/PrintConfig.cpp:1669 +#: src/libslic3r/PrintConfig.cpp:1598 msgid "Serial port speed" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1670 +#: src/libslic3r/PrintConfig.cpp:1599 msgid "Speed (baud) of USB/serial port for printer connection." msgstr "ç”¨äºŽæ‰“å°æœºè¿žæŽ¥çš„USB/串å£é€Ÿåº¦ï¼ˆæ³¢ç‰¹çŽ‡ï¼‰ã€‚" -#: src/libslic3r/PrintConfig.cpp:1679 +#: src/libslic3r/PrintConfig.cpp:1608 msgid "Distance from object" msgstr "离物体的è·ç¦»" -#: src/libslic3r/PrintConfig.cpp:1680 +#: src/libslic3r/PrintConfig.cpp:1609 msgid "" "Distance between skirt and object(s). Set this to zero to attach the skirt " "to the object(s) and get a brim for better adhesion." msgstr "环边与物体间的è·ç¦»ã€‚设为0,则使环边紧贴物体,å¯èŽ·å¾—è£™è¾¹åˆ©äºŽç²˜é™„ã€‚" -#: src/libslic3r/PrintConfig.cpp:1688 +#: src/libslic3r/PrintConfig.cpp:1616 msgid "Skirt height" msgstr "环边高度" -#: src/libslic3r/PrintConfig.cpp:1689 +#: src/libslic3r/PrintConfig.cpp:1617 msgid "" "Height of skirt expressed in layers. Set this to a tall value to use skirt " "as a shield against drafts." msgstr "图层中表示的环边高度。设为一个较高值,å¯å°†çŽ¯è¾¹ç”¨ä½œã€‚" -#: src/libslic3r/PrintConfig.cpp:1697 +#: src/libslic3r/PrintConfig.cpp:1624 msgid "Loops (minimum)" msgstr "圈数(最å°)" -#: src/libslic3r/PrintConfig.cpp:1698 +#: src/libslic3r/PrintConfig.cpp:1625 msgid "Skirt Loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1699 +#: src/libslic3r/PrintConfig.cpp:1626 msgid "" "Number of loops for the skirt. If the Minimum Extrusion Length option is " "set, the number of loops might be greater than the one configured here. Set " @@ -5433,11 +6108,11 @@ msgstr "" "çŽ¯è¾¹çš„åœˆæ•°ã€‚å¦‚æžœè®¾ç½®äº†æœ€å°æŒ¤å‡ºé•¿åº¦ï¼Œé‚£ä¹ˆåœˆæ•°å¿…须比这里设置的值è¦å¤§ã€‚设为0则完" "å…¨ç¦ç”¨çŽ¯è¾¹ã€‚" -#: src/libslic3r/PrintConfig.cpp:1708 +#: src/libslic3r/PrintConfig.cpp:1634 msgid "Slow down if layer print time is below" msgstr "å¦‚æžœå›¾å±‚æ‰“å°æ—¶é—´ä½ŽäºŽè¯¥å€¼åˆ™å‡é€Ÿ" -#: src/libslic3r/PrintConfig.cpp:1709 +#: src/libslic3r/PrintConfig.cpp:1635 msgid "" "If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value." @@ -5445,44 +6120,44 @@ msgstr "" "å¦‚æžœé¢„è®¡æ‰“å°æ—¶é—´ä½ŽäºŽè¯¥å€¼ï¼ˆå•ä½ä¸ºç§’),则打å°é€Ÿåº¦å°†é™ä½Žä»¥ä½¿æ‰“å°æ—¶é—´å»¶é•¿åˆ°è¯¥" "值。" -#: src/libslic3r/PrintConfig.cpp:1720 +#: src/libslic3r/PrintConfig.cpp:1645 msgid "Small perimeters" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1722 +#: src/libslic3r/PrintConfig.cpp:1647 msgid "" "This separate setting will affect the speed of perimeters having radius <= " "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " "be calculated on the perimeters speed setting above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1732 +#: src/libslic3r/PrintConfig.cpp:1657 msgid "Solid infill threshold area" msgstr "å¯é å¡«å……阈值区域" -#: src/libslic3r/PrintConfig.cpp:1734 +#: src/libslic3r/PrintConfig.cpp:1659 msgid "" "Force solid infill for regions having a smaller area than the specified " "threshold." msgstr "对于比指定阈值å°çš„区域强制进行å¯é å¡«å……。" -#: src/libslic3r/PrintConfig.cpp:1735 +#: src/libslic3r/PrintConfig.cpp:1660 msgid "mm²" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1742 +#: src/libslic3r/PrintConfig.cpp:1666 msgid "Solid infill extruder" msgstr "å¯é å¡«å……挤出头" -#: src/libslic3r/PrintConfig.cpp:1744 +#: src/libslic3r/PrintConfig.cpp:1668 msgid "The extruder to use when printing solid infill." msgstr "当打å°å¯é å¡«å……时使用的挤出头。" -#: src/libslic3r/PrintConfig.cpp:1751 +#: src/libslic3r/PrintConfig.cpp:1674 msgid "Solid infill every" msgstr "æ¯å‡ å±‚å¯é å¡«å……" -#: src/libslic3r/PrintConfig.cpp:1753 +#: src/libslic3r/PrintConfig.cpp:1676 msgid "" "This feature allows to force a solid layer every given number of layers. " "Zero to disable. You can set this to any value (for example 9999); Slic3r " @@ -5492,7 +6167,7 @@ msgstr "" "è¯¥åŠŸèƒ½ä½¿å¾—æ¯æŒ‡å®šæ•°ç›®å±‚强制进行一次å¯é å¡«å……。设为0ç¦ç”¨è¯¥åŠŸèƒ½ã€‚å¯ä»¥è®¾ä¸ºä»»æ„值" "(如9999);Slic3r会根æ®å–·å˜´ç›´å¾„和层高æ¥è‡ªåŠ¨é€‰æ‹©å›¾å±‚çš„æœ€å¤§å¯èƒ½ä¸ªæ•°ã€‚" -#: src/libslic3r/PrintConfig.cpp:1766 +#: src/libslic3r/PrintConfig.cpp:1688 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "solid surfaces. If left zero, default extrusion width will be used if set, " @@ -5500,22 +6175,22 @@ msgid "" "(for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1777 +#: src/libslic3r/PrintConfig.cpp:1698 msgid "" "Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " "infill speed above. Set to zero for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1789 +#: src/libslic3r/PrintConfig.cpp:1710 msgid "Number of solid layers to generate on top and bottom surfaces." msgstr "在顶部和底部表é¢ç”Ÿæˆçš„å¯é å±‚数。" -#: src/libslic3r/PrintConfig.cpp:1796 +#: src/libslic3r/PrintConfig.cpp:1716 msgid "Spiral vase" msgstr "螺旋å¼å®¹å™¨" -#: src/libslic3r/PrintConfig.cpp:1797 +#: src/libslic3r/PrintConfig.cpp:1717 msgid "" "This feature will raise Z gradually while printing a single-walled object in " "order to remove any visible seam. This option requires a single perimeter, " @@ -5527,18 +6202,18 @@ msgstr "" "廓,无填充,无顶部å¯é å±‚,无支撑。ä»å¯ä»¥è®¾ç½®çŽ¯è¾¹ã€è£™è¾¹åœˆæ•°ï¼Œå’Œåº•部å¯é å±‚。但" "在打å°å¤šä¸ªç‰©ä½“æ—¶ä¸é€‚用。" -#: src/libslic3r/PrintConfig.cpp:1806 +#: src/libslic3r/PrintConfig.cpp:1725 msgid "Temperature variation" msgstr "温度å˜åŒ–" -#: src/libslic3r/PrintConfig.cpp:1807 +#: src/libslic3r/PrintConfig.cpp:1726 msgid "" "Temperature difference to be applied when an extruder is not active. Enables " "a full-height \"sacrificial\" skirt on which the nozzles are periodically " "wiped." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1818 +#: src/libslic3r/PrintConfig.cpp:1736 msgid "" "This start procedure is inserted at the beginning, after bed has reached the " "target temperature and extruder just started heating, and before extruder " @@ -5549,7 +6224,7 @@ msgid "" "\"M109 S[first_layer_temperature]\" command wherever you want." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1834 +#: src/libslic3r/PrintConfig.cpp:1751 msgid "" "This start procedure is inserted at the beginning, after any printer start " "gcode. This is used to override settings for a specific filament. If Slic3r " @@ -5568,74 +6243,74 @@ msgstr "" "个“M109 S[ first_layer_temperature ]â€å‘½ä»¤æ”¾åœ¨ä»»æ„处。如果你有多个挤出头,G代" "ç å°†æŒ‰æŒ¤å‡ºå¤´é¡ºåºå¤„ç†ã€‚" -#: src/libslic3r/PrintConfig.cpp:1850 +#: src/libslic3r/PrintConfig.cpp:1766 msgid "Single Extruder Multi Material" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1851 +#: src/libslic3r/PrintConfig.cpp:1767 msgid "The printer multiplexes filaments into a single hot end." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1857 +#: src/libslic3r/PrintConfig.cpp:1772 msgid "Prime all printing extruders" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1858 +#: src/libslic3r/PrintConfig.cpp:1773 msgid "" "If enabled, all printing extruders will be primed at the front edge of the " "print bed at the start of the print." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1864 +#: src/libslic3r/PrintConfig.cpp:1778 msgid "Generate support material" msgstr "ç”Ÿæˆæ”¯æ’‘ææ–™" -#: src/libslic3r/PrintConfig.cpp:1866 +#: src/libslic3r/PrintConfig.cpp:1780 msgid "Enable support material generation." msgstr "å¯ç”¨æ”¯æ’‘ææ–™ç”ŸæˆåŠŸèƒ½ã€‚" -#: src/libslic3r/PrintConfig.cpp:1871 +#: src/libslic3r/PrintConfig.cpp:1784 msgid "Auto generated supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1873 +#: src/libslic3r/PrintConfig.cpp:1786 msgid "" "If checked, supports will be generated automatically based on the overhang " "threshold value. If unchecked, supports will be generated inside the " "\"Support Enforcer\" volumes only." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1880 +#: src/libslic3r/PrintConfig.cpp:1792 msgid "XY separation between an object and its support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1882 +#: src/libslic3r/PrintConfig.cpp:1794 msgid "" "XY separation between an object and its support. If expressed as percentage " "(for example 50%), it will be calculated over external perimeter width." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1893 +#: src/libslic3r/PrintConfig.cpp:1804 msgid "Pattern angle" msgstr "æ ·å¼è§’度" -#: src/libslic3r/PrintConfig.cpp:1895 +#: src/libslic3r/PrintConfig.cpp:1806 msgid "" "Use this setting to rotate the support material pattern on the horizontal " "plane." msgstr "ä½¿ç”¨è¯¥å‚æ•°å¯¹æ”¯æ’‘ææ–™çš„æ ·å­åœ¨æ°´å¹³é¢ä¸Šè¿›è¡Œæ—‹è½¬ã€‚" -#: src/libslic3r/PrintConfig.cpp:1906 +#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421 msgid "" "Only create support if it lies on a build plate. Don't create support on a " "print." msgstr "ä»…åœ¨çƒ­åºŠä¸Šç”Ÿæˆæ”¯æ’‘,ä¸åœ¨æ‰“å°å‡ºæ¥çš„物体上生æˆã€‚" -#: src/libslic3r/PrintConfig.cpp:1913 +#: src/libslic3r/PrintConfig.cpp:1822 msgid "Contact Z distance" msgstr "接触Z值" -#: src/libslic3r/PrintConfig.cpp:1915 +#: src/libslic3r/PrintConfig.cpp:1824 msgid "" "The vertical distance between object and support material interface. Setting " "this to 0 will also prevent Slic3r from using bridge flow and speed for the " @@ -5643,19 +6318,19 @@ msgid "" msgstr "" "ç‰©ä½“å’Œæ”¯æ’‘ææ–™å¹³é¢ä¹‹é—´çš„垂直è·ç¦»ã€‚设为0,则表é¢ä¸Šç¬¬ä¸€å±‚ä¸ä¼šè¢«å½“åšæ¡¥æ¥å¤„ç†ã€‚" -#: src/libslic3r/PrintConfig.cpp:1923 +#: src/libslic3r/PrintConfig.cpp:1831 msgid "soluble" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1924 +#: src/libslic3r/PrintConfig.cpp:1832 msgid "detachable" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1929 +#: src/libslic3r/PrintConfig.cpp:1837 msgid "Enforce support for the first" msgstr "å‰å‡ å±‚增强支撑" -#: src/libslic3r/PrintConfig.cpp:1931 +#: src/libslic3r/PrintConfig.cpp:1839 msgid "" "Generate support material for the specified number of layers counting from " "bottom, regardless of whether normal support material is enabled or not and " @@ -5665,21 +6340,21 @@ msgstr "" "ä»Žåº•éƒ¨å¼€å§‹ï¼Œå¯¹æŒ‡å®šæ•°ç›®çš„å›¾å±‚ç”Ÿæˆæ”¯æ’‘ææ–™ï¼Œæ— è®ºæ­£å¸¸çš„æ”¯æ’‘ææ–™æ˜¯å¦å¯ç”¨ï¼Œä¹Ÿä¸ç®¡" "任何角度阈值。适用于在热床上脚太细ã€ç«™ä¸ä½çš„物件,便于更好的粘附。" -#: src/libslic3r/PrintConfig.cpp:1937 +#: src/libslic3r/PrintConfig.cpp:1844 msgid "Enforce support for the first n layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1943 +#: src/libslic3r/PrintConfig.cpp:1850 msgid "Support material/raft/skirt extruder" msgstr "æ”¯æ’‘ææ–™/ç­/环边挤出头" -#: src/libslic3r/PrintConfig.cpp:1945 +#: src/libslic3r/PrintConfig.cpp:1852 msgid "" "The extruder to use when printing support material, raft and skirt (1+, 0 to " "use the current extruder to minimize tool changes)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1955 +#: src/libslic3r/PrintConfig.cpp:1861 msgid "" "Set this to a non-zero value to set a manual extrusion width for support " "material. If left zero, default extrusion width will be used if set, " @@ -5687,44 +6362,44 @@ msgid "" "example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1964 +#: src/libslic3r/PrintConfig.cpp:1869 msgid "Interface loops" msgstr "" -#: src/libslic3r/PrintConfig.cpp:1966 +#: src/libslic3r/PrintConfig.cpp:1871 msgid "" "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1972 +#: src/libslic3r/PrintConfig.cpp:1876 msgid "Support material/raft interface extruder" msgstr "æ”¯æ’‘ææ–™/ç­è¡¨é¢æŒ¤å‡ºå¤´" -#: src/libslic3r/PrintConfig.cpp:1974 +#: src/libslic3r/PrintConfig.cpp:1878 msgid "" "The extruder to use when printing support material interface (1+, 0 to use " "the current extruder to minimize tool changes). This affects raft too." msgstr "" -#: src/libslic3r/PrintConfig.cpp:1982 +#: src/libslic3r/PrintConfig.cpp:1885 msgid "Interface layers" msgstr "表é¢å±‚æ•°" -#: src/libslic3r/PrintConfig.cpp:1984 +#: src/libslic3r/PrintConfig.cpp:1887 msgid "" "Number of interface layers to insert between the object(s) and support " "material." msgstr "åœ¨ç‰©ä½“å’Œæ”¯æ’‘ææ–™ä¸­é—´æ’入的表é¢å±‚数。" -#: src/libslic3r/PrintConfig.cpp:1992 +#: src/libslic3r/PrintConfig.cpp:1894 msgid "Interface pattern spacing" msgstr "è¡¨é¢æ ·å¼é—´éš”" -#: src/libslic3r/PrintConfig.cpp:1994 +#: src/libslic3r/PrintConfig.cpp:1896 msgid "Spacing between interface lines. Set zero to get a solid interface." msgstr "表é¢ç›´çº¿é—´çš„间隔。设为0获得å¯é è¡¨é¢ã€‚" -#: src/libslic3r/PrintConfig.cpp:2004 +#: src/libslic3r/PrintConfig.cpp:1905 msgid "" "Speed for printing support material interface layers. If expressed as " "percentage (for example 50%) it will be calculated over support material " @@ -5733,45 +6408,45 @@ msgstr "" "æ‰“å°æ”¯æ’‘ææ–™è¡¨é¢å±‚的速度。若表示为百分数(如50%ï¼‰ï¼Œåˆ™ä»¥æ”¯æ’‘ææ–™é€Ÿåº¦ä¸ºåŸºå‡†è®¡" "算。" -#: src/libslic3r/PrintConfig.cpp:2013 +#: src/libslic3r/PrintConfig.cpp:1914 msgid "Pattern" msgstr "æ ·å¼" -#: src/libslic3r/PrintConfig.cpp:2015 +#: src/libslic3r/PrintConfig.cpp:1916 msgid "Pattern used to generate support material." msgstr "ç”Ÿæˆæ”¯æ’‘ææ–™çš„æ ·å¼ã€‚" -#: src/libslic3r/PrintConfig.cpp:2022 +#: src/libslic3r/PrintConfig.cpp:1922 msgid "Rectilinear grid" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2028 +#: src/libslic3r/PrintConfig.cpp:1928 msgid "Pattern spacing" msgstr "æ ·å¼é—´éš”" -#: src/libslic3r/PrintConfig.cpp:2030 +#: src/libslic3r/PrintConfig.cpp:1930 msgid "Spacing between support material lines." msgstr "æ”¯æ’‘ææ–™ç›´çº¿é—´çš„间隙。" -#: src/libslic3r/PrintConfig.cpp:2040 +#: src/libslic3r/PrintConfig.cpp:1939 msgid "Speed for printing support material." msgstr "æ‰“å°æ”¯æ’‘ææ–™çš„速度。" -#: src/libslic3r/PrintConfig.cpp:2047 +#: src/libslic3r/PrintConfig.cpp:1946 msgid "Synchronize with object layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2049 +#: src/libslic3r/PrintConfig.cpp:1948 msgid "" "Synchronize support layers with the object print layers. This is useful with " "multi-material printers, where the extruder switch is expensive." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2056 +#: src/libslic3r/PrintConfig.cpp:1954 msgid "Overhang threshold" msgstr "悬空阈值" -#: src/libslic3r/PrintConfig.cpp:2058 +#: src/libslic3r/PrintConfig.cpp:1956 msgid "" "Support material will not be generated for overhangs whose slope angle (90° " "= vertical) is above the given threshold. In other words, this value " @@ -5780,31 +6455,31 @@ msgid "" "detection (recommended)." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2071 +#: src/libslic3r/PrintConfig.cpp:1968 msgid "With sheath around the support" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2073 +#: src/libslic3r/PrintConfig.cpp:1970 msgid "" "Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2081 +#: src/libslic3r/PrintConfig.cpp:1977 msgid "" "Extruder temperature for layers after the first one. Set this to zero to " "disable temperature control commands in the output." msgstr "第一层之åŽçš„æŒ¤å‡ºå¤´æ¸©åº¦ã€‚设为0以在输出文件中ç¦ç”¨æ¸©åº¦æŽ§åˆ¶æŒ‡ä»¤ã€‚" -#: src/libslic3r/PrintConfig.cpp:2084 +#: src/libslic3r/PrintConfig.cpp:1979 msgid "Temperature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2090 +#: src/libslic3r/PrintConfig.cpp:1985 msgid "Detect thin walls" msgstr "检测薄å£" -#: src/libslic3r/PrintConfig.cpp:2092 +#: src/libslic3r/PrintConfig.cpp:1987 msgid "" "Detect single-width walls (parts where two extrusions don't fit and we need " "to collapse them into a single trace)." @@ -5812,17 +6487,17 @@ msgstr "" "检测å•一厚度的薄å£ï¼ˆä¸¤ä¸ªæŒ¤å‡ºé‡ä¸å»åˆï¼Œä»¥è‡³äºŽéœ€è¦æŠŠå®ƒä»¬åŽ‹ç¼©æˆä¸€æ¡è½¨è¿¹çš„地" "方)。" -#: src/libslic3r/PrintConfig.cpp:2099 +#: src/libslic3r/PrintConfig.cpp:1993 msgid "Threads" msgstr "线程" -#: src/libslic3r/PrintConfig.cpp:2100 +#: src/libslic3r/PrintConfig.cpp:1994 msgid "" "Threads are used to parallelize long-running tasks. Optimal threads number " "is slightly above the number of available cores/processors." msgstr "线程用于并行处ç†é•¿æ—¶é—´ä»»åŠ¡ã€‚æœ€ä¼˜çš„çº¿ç¨‹æ•°åº”æ¯”å¯ç”¨æ ¸/处ç†å™¨çš„æ•°ç›®ç•¥å¤šã€‚" -#: src/libslic3r/PrintConfig.cpp:2112 +#: src/libslic3r/PrintConfig.cpp:2006 msgid "" "This custom code is inserted right before every extruder change. Note that " "you can use placeholder variables for all Slic3r settings as well as " @@ -5831,7 +6506,7 @@ msgstr "" "该段自定义代ç åœ¨æ¯æ¬¡æŒ¤å‡ºå¤´åˆ‡æ¢å‰æ’入。注æ„å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡ä»£æ›¿Slic3r的所有" "傿•°ï¼Œå¦‚ [previous_extruder] å’Œ [next_extruder]。" -#: src/libslic3r/PrintConfig.cpp:2125 +#: src/libslic3r/PrintConfig.cpp:2018 msgid "" "Set this to a non-zero value to set a manual extrusion width for infill for " "top surfaces. You may want to use thinner extrudates to fill all narrow " @@ -5840,7 +6515,7 @@ msgid "" "percentage (for example 90%) it will be computed over layer height." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2137 +#: src/libslic3r/PrintConfig.cpp:2029 msgid "" "Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want to " @@ -5849,49 +6524,44 @@ msgid "" "for auto." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2149 -msgctxt "Layers" -msgid "Top" -msgstr "顶部" - -#: src/libslic3r/PrintConfig.cpp:2151 +#: src/libslic3r/PrintConfig.cpp:2043 msgid "Number of solid layers to generate on top surfaces." msgstr "在顶部表é¢ä¸Šç”Ÿæˆçš„å¯é å±‚数。" -#: src/libslic3r/PrintConfig.cpp:2153 +#: src/libslic3r/PrintConfig.cpp:2044 msgid "Top solid layers" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2159 +#: src/libslic3r/PrintConfig.cpp:2050 msgid "Speed for travel moves (jumps between distant extrusion points)." msgstr "空程移动的速度(从一个挤出点结æŸè°ƒåˆ°å¦ä¸€ä¸ªæŒ¤å‡ºç‚¹å¼€å§‹ï¼‰ã€‚" -#: src/libslic3r/PrintConfig.cpp:2168 +#: src/libslic3r/PrintConfig.cpp:2058 msgid "Use firmware retraction" msgstr "使用固件回缩" -#: src/libslic3r/PrintConfig.cpp:2169 +#: src/libslic3r/PrintConfig.cpp:2059 msgid "" "This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin." msgstr "" "è¯¥è¯•éªŒå‚æ•°ä½¿ç”¨G10å’ŒG11指令æ¥ä½¿å›ºä»¶å¤„ç†å›žç¼©ã€‚仅在最新的Marlin中支æŒè¯¥åŠŸèƒ½ã€‚" -#: src/libslic3r/PrintConfig.cpp:2176 +#: src/libslic3r/PrintConfig.cpp:2065 msgid "Use relative E distances" msgstr "使用相对Eè·ç¦»" -#: src/libslic3r/PrintConfig.cpp:2177 +#: src/libslic3r/PrintConfig.cpp:2066 msgid "" "If your firmware requires relative E values, check this, otherwise leave it " "unchecked. Most firmwares use absolute values." msgstr "如果固件需è¦ç›¸å¯¹E值,勾选此项,å¦åˆ™ä¸è¦å‹¾é€‰ã€‚大部分固件使用ç»å¯¹å€¼ã€‚" -#: src/libslic3r/PrintConfig.cpp:2184 +#: src/libslic3r/PrintConfig.cpp:2072 msgid "Use volumetric E" msgstr "使用体积E" -#: src/libslic3r/PrintConfig.cpp:2185 +#: src/libslic3r/PrintConfig.cpp:2073 msgid "" "This experimental setting uses outputs the E values in cubic millimeters " "instead of linear millimeters. If your firmware doesn't already know " @@ -5904,120 +6574,120 @@ msgstr "" "èµ·å§‹G代ç ä¸­è¾“入如'M200 D[filament_diameter_0] T0' 以开å¯ä½“积模å¼ï¼Œå¹¶ä½¿ç”¨åœ¨" "Slic3rä¸­å·²é€‰çš„ä¸æ–™ç›´å¾„。仅在最新Marlin中支æŒè¯¥åŠŸèƒ½ã€‚" -#: src/libslic3r/PrintConfig.cpp:2196 +#: src/libslic3r/PrintConfig.cpp:2083 msgid "Enable variable layer height feature" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2197 +#: src/libslic3r/PrintConfig.cpp:2084 msgid "" "Some printers or printer setups may have difficulties printing with a " "variable layer height. Enabled by default." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2204 +#: src/libslic3r/PrintConfig.cpp:2090 msgid "Wipe while retracting" msgstr "回缩时擦拭" -#: src/libslic3r/PrintConfig.cpp:2205 +#: src/libslic3r/PrintConfig.cpp:2091 msgid "" "This flag will move the nozzle while retracting to minimize the possible " "blob on leaky extruders." msgstr "在回缩时移动喷嘴以é¿å…挤出头滴æ¼ã€‚" -#: src/libslic3r/PrintConfig.cpp:2213 +#: src/libslic3r/PrintConfig.cpp:2098 msgid "" "Multi material printers may need to prime or purge extruders on tool " "changes. Extrude the excess material into the wipe tower." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2220 +#: src/libslic3r/PrintConfig.cpp:2104 msgid "Purging volumes - load/unload volumes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2221 +#: src/libslic3r/PrintConfig.cpp:2105 msgid "" "This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " "volumes below. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2228 +#: src/libslic3r/PrintConfig.cpp:2111 msgid "Purging volumes - matrix" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2229 +#: src/libslic3r/PrintConfig.cpp:2112 msgid "" "This matrix describes volumes (in cubic milimetres) required to purge the " "new filament on the wipe tower for any given pair of tools. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2239 +#: src/libslic3r/PrintConfig.cpp:2121 msgid "Position X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2240 +#: src/libslic3r/PrintConfig.cpp:2122 msgid "X coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2247 +#: src/libslic3r/PrintConfig.cpp:2128 msgid "Position Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2248 +#: src/libslic3r/PrintConfig.cpp:2129 msgid "Y coordinate of the left front corner of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2256 +#: src/libslic3r/PrintConfig.cpp:2136 msgid "Width of a wipe tower" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2263 +#: src/libslic3r/PrintConfig.cpp:2142 msgid "Wipe tower rotation angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2264 +#: src/libslic3r/PrintConfig.cpp:2143 msgid "Wipe tower rotation angle with respect to x-axis " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565 msgid "degrees" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2272 +#: src/libslic3r/PrintConfig.cpp:2150 msgid "Wipe into this object's infill" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2273 +#: src/libslic3r/PrintConfig.cpp:2151 msgid "" "Purging after toolchange will done inside this object's infills. This lowers " "the amount of waste but may result in longer print time due to additional " "travel moves." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2281 +#: src/libslic3r/PrintConfig.cpp:2158 msgid "Wipe into this object" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2282 +#: src/libslic3r/PrintConfig.cpp:2159 msgid "" "Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2289 +#: src/libslic3r/PrintConfig.cpp:2165 msgid "Maximal bridging distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2290 +#: src/libslic3r/PrintConfig.cpp:2166 msgid "Maximal distance between supports on sparse infill sections. " msgstr "" -#: src/libslic3r/PrintConfig.cpp:2297 +#: src/libslic3r/PrintConfig.cpp:2172 msgid "XY Size Compensation" msgstr "XY尺寸补å¿" -#: src/libslic3r/PrintConfig.cpp:2299 +#: src/libslic3r/PrintConfig.cpp:2174 msgid "" "The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful for fine-" @@ -6025,11 +6695,11 @@ msgid "" msgstr "" "该物体将以指定值(负=往内,正=往外)å˜å¤§/收缩。对于精确调节孔洞尺寸å¯èƒ½æœ‰ç”¨ã€‚" -#: src/libslic3r/PrintConfig.cpp:2308 +#: src/libslic3r/PrintConfig.cpp:2182 msgid "Z offset" msgstr "Zè¡¥å¿" -#: src/libslic3r/PrintConfig.cpp:2309 +#: src/libslic3r/PrintConfig.cpp:2183 msgid "" "This value will be added (or subtracted) from all the Z coordinates in the " "output G-code. It is used to compensate for bad Z endstop position: for " @@ -6040,425 +6710,578 @@ msgstr "" "æ¿ä½ç½®è¿›è¡Œè¡¥å¿ï¼Œå¦‚果你的终点挡æ¿ä¸ºé›¶æ—¶ï¼Œå–·å˜´ç¦»æ‰“å°çƒ­åºŠè¿˜æœ‰0.3毫米,将该值设" "为-0.3(或者调整你的终点挡æ¿ï¼‰ã€‚" -#: src/libslic3r/PrintConfig.cpp:2319 -msgid "Bed size X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2327 -#: src/libslic3r/PrintConfig.cpp:2334 src/libslic3r/PrintConfig.cpp:2343 -#: src/libslic3r/PrintConfig.cpp:2351 src/libslic3r/PrintConfig.cpp:2359 -msgid "Dwarf" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2326 -msgid "Bed size Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2333 -msgid "Picture resolution X" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2335 src/libslic3r/PrintConfig.cpp:2344 -msgid "px" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2342 -msgid "Picture resolution Y" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2350 src/libslic3r/PrintConfig.cpp:2430 -#: src/libslic3r/PrintConfig.cpp:2431 -msgid "Exposure time" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2358 -msgid "Exposure time first layers" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2373 +#: src/libslic3r/PrintConfig.cpp:2200 msgid "Display width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2374 +#: src/libslic3r/PrintConfig.cpp:2201 msgid "Width of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2380 +#: src/libslic3r/PrintConfig.cpp:2206 msgid "Display height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2381 +#: src/libslic3r/PrintConfig.cpp:2207 msgid "Height of the display" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2387 +#: src/libslic3r/PrintConfig.cpp:2212 msgid "Number of pixels in" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2389 +#: src/libslic3r/PrintConfig.cpp:2214 msgid "Number of pixels in X" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2396 +#: src/libslic3r/PrintConfig.cpp:2220 msgid "Number of pixels in Y" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2402 +#: src/libslic3r/PrintConfig.cpp:2225 msgid "Display orientation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2403 +#: src/libslic3r/PrintConfig.cpp:2226 msgid "" "Set the actual LCD display orientation inside the SLA printer. Portrait mode " "will flip the meaning of display width and height parameters and the output " "images will be rotated by 90 degrees." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2410 +#: src/libslic3r/PrintConfig.cpp:2232 msgid "Landscape" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2411 +#: src/libslic3r/PrintConfig.cpp:2233 msgid "Portrait" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2415 src/libslic3r/PrintConfig.cpp:2416 +#: src/libslic3r/PrintConfig.cpp:2238 +msgid "Fast" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2239 +msgid "Fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2240 +msgid "Time of the fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2247 +msgid "Slow" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2248 +msgid "Slow tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2249 +msgid "Time of the slow tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2256 +msgid "Area fill" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2257 +msgid "" +"The percentage of the bed area. \n" +"If the print area exceeds the specified value, \n" +"then a slow tilt will be used, otherwise - a fast tilt" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265 +#: src/libslic3r/PrintConfig.cpp:2266 msgid "Printer scaling correction" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2423 +#: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273 +msgid "Printer absolute correction" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2274 +msgid "" +"Will inflate or deflate the sliced 2D polygons according to the sign of the " +"correction." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281 +msgid "Printer gamma correction" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2282 +msgid "This will apply a gamm correction to the rasterized 2D polygons." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292 msgid "Initial layer height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2438 src/libslic3r/PrintConfig.cpp:2439 +#: src/libslic3r/PrintConfig.cpp:2298 +msgid "Faded layers" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2299 +msgid "" +"Number of the layers needed for the exposure time fade from initial exposure " +"time to the exposure time" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307 +msgid "Exposure time" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314 msgid "Initial exposure time" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2446 src/libslic3r/PrintConfig.cpp:2447 -msgid "Correction for expansion when printing" +#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321 +msgid "Correction for expansion" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2452 src/libslic3r/PrintConfig.cpp:2453 -msgid "Correction for expansion after curing" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2458 +#: src/libslic3r/PrintConfig.cpp:2327 msgid "SLA print material notes" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2459 +#: src/libslic3r/PrintConfig.cpp:2328 msgid "You can put your notes regarding the SLA print material here." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2468 src/libslic3r/PrintConfig.cpp:2478 +#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347 msgid "Default SLA material profile" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2487 +#: src/libslic3r/PrintConfig.cpp:2358 msgid "Generate supports" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2489 +#: src/libslic3r/PrintConfig.cpp:2360 msgid "Generate supports for the models" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2494 +#: src/libslic3r/PrintConfig.cpp:2365 msgid "Support head front diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2496 +#: src/libslic3r/PrintConfig.cpp:2367 msgid "Diameter of the pointing side of the head" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2503 +#: src/libslic3r/PrintConfig.cpp:2374 msgid "Support head penetration" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2505 +#: src/libslic3r/PrintConfig.cpp:2376 msgid "How much the pinhead has to penetrate the model surface" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2512 +#: src/libslic3r/PrintConfig.cpp:2383 msgid "Support head width" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2514 +#: src/libslic3r/PrintConfig.cpp:2385 msgid "Width from the back sphere center to the front sphere center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2521 +#: src/libslic3r/PrintConfig.cpp:2393 msgid "Support pillar diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2523 +#: src/libslic3r/PrintConfig.cpp:2395 msgid "Diameter in mm of the support pillars" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2530 +#: src/libslic3r/PrintConfig.cpp:2403 msgid "Support pillar connection mode" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2531 +#: src/libslic3r/PrintConfig.cpp:2404 msgid "" "Controls the bridge type between two neigboring pillars. Can be zig-zag, " "cross (double zig-zag) or dynamic which will automatically switch between " "the first two depending on the distance of the two pillars." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2540 +#: src/libslic3r/PrintConfig.cpp:2412 msgid "Zig-Zag" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2541 +#: src/libslic3r/PrintConfig.cpp:2413 msgid "Cross" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2542 +#: src/libslic3r/PrintConfig.cpp:2414 msgid "Dynamic" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2546 +#: src/libslic3r/PrintConfig.cpp:2426 msgid "Pillar widening factor" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2548 +#: src/libslic3r/PrintConfig.cpp:2428 msgid "" "Merging bridges or pillars into another pillars can increase the radius. " "Zero means no increase, one means full increase." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2557 +#: src/libslic3r/PrintConfig.cpp:2437 msgid "Support base diameter" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2559 +#: src/libslic3r/PrintConfig.cpp:2439 msgid "Diameter in mm of the pillar base" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2566 +#: src/libslic3r/PrintConfig.cpp:2447 msgid "Support base height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2568 +#: src/libslic3r/PrintConfig.cpp:2449 msgid "The height of the pillar base cone" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2575 +#: src/libslic3r/PrintConfig.cpp:2456 msgid "Critical angle" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2577 +#: src/libslic3r/PrintConfig.cpp:2458 msgid "The default angle for connecting support sticks and junctions." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2584 +#: src/libslic3r/PrintConfig.cpp:2466 msgid "Max bridge length" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2586 +#: src/libslic3r/PrintConfig.cpp:2468 msgid "The max length of a bridge" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2593 +#: src/libslic3r/PrintConfig.cpp:2475 +msgid "Max pillar linking distance" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2477 +msgid "" +"The max distance of two pillars to get linked with each other. A zero value " +"will prohibit pillar cascading." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2485 msgid "Object elevation" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2595 +#: src/libslic3r/PrintConfig.cpp:2487 msgid "How much the supports should lift up the supported object." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2602 -msgid "Density on horizontal surfaces" +#: src/libslic3r/PrintConfig.cpp:2495 +msgid "Support points density" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2604 -msgid "" -"How many support points (approximately) should be placed on horizontal " -"surface." +#: src/libslic3r/PrintConfig.cpp:2497 +msgid "This is a relative measure of support points density." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2605 src/libslic3r/PrintConfig.cpp:2614 -msgid "points per square dm" +#: src/libslic3r/PrintConfig.cpp:2503 +msgid "Minimal distance of the support points" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2611 -msgid "Density on surfaces at 45 degrees" +#: src/libslic3r/PrintConfig.cpp:2505 +msgid "No support points will be placed closer than this threshold." msgstr "" -#: src/libslic3r/PrintConfig.cpp:2613 -msgid "" -"How many support points (approximately) should be placed on surface sloping " -"at 45 degrees." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2620 -msgid "Minimal support point height" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2622 -msgid "No support points will be placed lower than this value from the bottom." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:2629 +#: src/libslic3r/PrintConfig.cpp:2511 msgid "Use pad" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2631 +#: src/libslic3r/PrintConfig.cpp:2513 msgid "Add a pad underneath the supported model" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2636 +#: src/libslic3r/PrintConfig.cpp:2518 msgid "Pad wall thickness" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2645 +#: src/libslic3r/PrintConfig.cpp:2520 +msgid "The thickness of the pad and its optional cavity walls." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2528 msgid "Pad wall height" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2654 +#: src/libslic3r/PrintConfig.cpp:2529 +msgid "Defines the cavity depth. Set to zero to disable the cavity." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2539 msgid "Max merge distance" msgstr "" -#: src/libslic3r/PrintConfig.cpp:2663 +#: src/libslic3r/PrintConfig.cpp:2541 +msgid "" +"Some objects can get along with a few smaller pads instead of a single big " +"one. This parameter defines how far the center of two smaller pads should " +"be. If theyare closer, they will get merged into one pad." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2552 msgid "Pad edge radius" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3017 +#: src/libslic3r/PrintConfig.cpp:2561 +msgid "Pad wall slope" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2563 +msgid "" +"The slope of the pad wall relative to the bed plane. 90 degrees means " +"straight walls." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2924 +msgid "Export SVG" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2925 +msgid "Export the model(s) as OBJ." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2936 +msgid "Export SLA" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2937 +msgid "Slice the model and export SLA printing layers as PNG." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2942 +msgid "Export 3MF" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2943 +msgid "Export the model(s) as 3MF." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2947 +msgid "Export AMF" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2948 +msgid "Export the model(s) as AMF." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2952 +msgid "Export STL" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2953 +msgid "Export the model(s) as STL." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2958 +msgid "Slice the model and export toolpaths as G-code." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2963 +msgid "Slice" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2964 +msgid "" +"Slice the model as FFF or SLA based on the printer_technology configuration " +"value." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2969 +msgid "Help" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2970 +msgid "Show this help." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2975 +msgid "Help (FFF options)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2976 +msgid "Show the full list of print/G-code configuration options." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2980 +msgid "Help (SLA options)" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2981 +msgid "Show the full list of SLA print configuration options." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:2985 +msgid "Output Model Info" +msgstr "输出模型信æ¯" + +#: src/libslic3r/PrintConfig.cpp:2986 +msgid "Write information about the model to the console." +msgstr "给控制å°å†™å…¥æ¨¡åž‹çš„ä¿¡æ¯ã€‚" + +#: src/libslic3r/PrintConfig.cpp:2990 +msgid "Save config file" +msgstr "ä¿å­˜é…置文件" + +#: src/libslic3r/PrintConfig.cpp:2991 +msgid "Save configuration to the specified file." +msgstr "å°†é…ç½®å‚æ•°ä¿å­˜åˆ°æŒ‡å®šæ–‡ä»¶ã€‚" + +#: src/libslic3r/PrintConfig.cpp:3001 +msgid "Align XY" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3002 +msgid "Align the model to the given point." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3007 msgid "Cut model at the given Z." msgstr "在给定Z处切割模型。" -#: src/libslic3r/PrintConfig.cpp:3022 -msgid "Dont arrange" +#: src/libslic3r/PrintConfig.cpp:3028 +msgid "Center" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3023 +#: src/libslic3r/PrintConfig.cpp:3029 +msgid "Center the print around the given center." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3033 +msgid "Don't arrange" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3034 msgid "" -"Don't arrange the objects on the build plate. The model coordinates define " -"the absolute positions on the build plate. The option --center will be " -"ignored." +"Do not rearrange the given models before merging and keep their original XY " +"coordinates." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3030 -msgid "User data directory" +#: src/libslic3r/PrintConfig.cpp:3037 +msgid "Duplicate" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3031 +#: src/libslic3r/PrintConfig.cpp:3038 +msgid "Multiply copies by this factor." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3042 +msgid "Duplicate by grid" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3043 +msgid "Multiply copies by creating a grid." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3046 +msgid "Merge" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3047 +msgid "" +"Arrange the supplied models in a plate and merge them in a single model in " +"order to perform actions once." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3052 +msgid "" +"Try to repair any non-manifold meshes (this option is implicitly added " +"whenever we need to slice the model to perform the requested action)." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3056 +msgid "Rotation angle around the Z axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3060 +msgid "Rotate around X" +msgstr "绕X轴旋转" + +#: src/libslic3r/PrintConfig.cpp:3061 +msgid "Rotation angle around the X axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3065 +msgid "Rotate around Y" +msgstr "绕Y轴旋转" + +#: src/libslic3r/PrintConfig.cpp:3066 +msgid "Rotation angle around the Y axis in degrees." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3071 +msgid "Scaling factor or percentage." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3076 +msgid "" +"Detect unconnected parts in the given model(s) and split them into separate " +"objects." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3079 +msgid "Scale to Fit" +msgstr "缩放到åˆé€‚大å°" + +#: src/libslic3r/PrintConfig.cpp:3080 +msgid "Scale to fit the given volume." +msgstr "缩放到适åˆäºŽç»™å®šä½“积。" + +#: src/libslic3r/PrintConfig.cpp:3089 +msgid "Ignore non-existent config files" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3090 +msgid "Do not fail if a file supplied to --load does not exist." +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3093 +msgid "Load config file" +msgstr "加载é…置文件" + +#: src/libslic3r/PrintConfig.cpp:3094 +msgid "" +"Load configuration from the specified file. It can be used more than once to " +"load options from multiple files." +msgstr "从指定文件加载é…置。å¯å¤šæ¬¡ä½¿ç”¨ä»¥ä»Žå¤šä¸ªæ–‡ä»¶ä¸­åŠ è½½å‚æ•°ã€‚" + +#: src/libslic3r/PrintConfig.cpp:3097 +msgid "Output File" +msgstr "输出文件" + +#: src/libslic3r/PrintConfig.cpp:3098 +msgid "" +"The file where the output will be written (if not specified, it will be " +"based on the input file)." +msgstr "è¾“å‡ºçš„æ–‡ä»¶ï¼ˆå¦‚æžœæœªæŒ‡å®šï¼Œåˆ™å°†ä¾æ®è¾“入文件)。" + +#: src/libslic3r/PrintConfig.cpp:3108 +msgid "Data directory" +msgstr "" + +#: src/libslic3r/PrintConfig.cpp:3109 msgid "" "Load and store settings at the given directory. This is useful for " "maintaining different profiles or including configurations from a network " "storage." msgstr "" -#: src/libslic3r/PrintConfig.cpp:3038 -msgid "Export 3MF" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3039 -msgid "Slice the model and export slices as 3MF." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3044 -msgid "Slice" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3045 -msgid "Slice the model and export gcode." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3050 -msgid "Help" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3051 -msgid "Show this help." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3056 -msgid "Use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3057 -msgid "" -"Forces the GUI launch instead of command line slicing (if you supply a model " -"file, it will be loaded into the plater)" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3063 -msgid "Output Model Info" -msgstr "输出模型信æ¯" - -#: src/libslic3r/PrintConfig.cpp:3064 -msgid "Write information about the model to the console." -msgstr "给控制å°å†™å…¥æ¨¡åž‹çš„ä¿¡æ¯ã€‚" - -#: src/libslic3r/PrintConfig.cpp:3069 -msgid "Load config file" -msgstr "加载é…置文件" - -#: src/libslic3r/PrintConfig.cpp:3070 -msgid "" -"Load configuration from the specified file. It can be used more than once to " -"load options from multiple files." -msgstr "从指定文件加载é…置。å¯å¤šæ¬¡ä½¿ç”¨ä»¥ä»Žå¤šä¸ªæ–‡ä»¶ä¸­åŠ è½½å‚æ•°ã€‚" - -#: src/libslic3r/PrintConfig.cpp:3075 -msgid "Do not use GUI" -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3076 -msgid "" -"Forces the command line slicing instead of gui. This takes precedence over --" -"gui if both are present." -msgstr "" - -#: src/libslic3r/PrintConfig.cpp:3081 -msgid "Output File" -msgstr "输出文件" - -#: src/libslic3r/PrintConfig.cpp:3082 -msgid "" -"The file where the output will be written (if not specified, it will be " -"based on the input file)." -msgstr "è¾“å‡ºçš„æ–‡ä»¶ï¼ˆå¦‚æžœæœªæŒ‡å®šï¼Œåˆ™å°†ä¾æ®è¾“入文件)。" - -#: src/libslic3r/PrintConfig.cpp:3088 -msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -msgstr "绕Z轴旋转角度(0-360,默认:0)。" - -#: src/libslic3r/PrintConfig.cpp:3093 -msgid "Rotate around X" -msgstr "绕X轴旋转" - -#: src/libslic3r/PrintConfig.cpp:3094 -msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -msgstr "绕X轴旋转角度(0-360,默认:0)。" - -#: src/libslic3r/PrintConfig.cpp:3099 -msgid "Rotate around Y" -msgstr "绕Y轴旋转" - -#: src/libslic3r/PrintConfig.cpp:3100 -msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -msgstr "绕Y轴旋转角度(0-360,默认:0)。" - -#: src/libslic3r/PrintConfig.cpp:3105 -msgid "Save config file" -msgstr "ä¿å­˜é…置文件" - -#: src/libslic3r/PrintConfig.cpp:3106 -msgid "Save configuration to the specified file." -msgstr "å°†é…ç½®å‚æ•°ä¿å­˜åˆ°æŒ‡å®šæ–‡ä»¶ã€‚" - #: src/libslic3r/PrintConfig.cpp:3112 -msgid "Scaling factor (default: 1)." -msgstr "缩放比例(默认:1)。" - -#: src/libslic3r/PrintConfig.cpp:3125 -msgid "Print center" +msgid "Logging level" msgstr "" -#: src/libslic3r/PrintConfig.cpp:3126 -msgid "Center the print around the given center (default: 100, 100)." +#: src/libslic3r/PrintConfig.cpp:3113 +msgid "" +"Messages with severity lower or eqal to the loglevel will be printed out. 0:" +"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal" msgstr "" #: src/libslic3r/GCode/PreviewData.cpp:176 @@ -6500,6 +7323,27 @@ msgstr "" msgid "%.2f - %.2f mm" msgstr "" +#~ msgid "Top/bottom fill pattern" +#~ msgstr "顶部/底部填充样å¼" + +#~ msgid "" +#~ "Fill pattern for top/bottom infill. This only affects the external " +#~ "visible layer, and not its adjacent solid shells." +#~ msgstr "" +#~ "对顶部/底部内部填充的类型。这将影å“外围å¯è§å±‚,ä¸å½±å“其相邻的å¯é å±‚。" + +#~ msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." +#~ msgstr "绕Z轴旋转角度(0-360,默认:0)。" + +#~ msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." +#~ msgstr "绕X轴旋转角度(0-360,默认:0)。" + +#~ msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." +#~ msgstr "绕Y轴旋转角度(0-360,默认:0)。" + +#~ msgid "Scaling factor (default: 1)." +#~ msgstr "缩放比例(默认:1)。" + #~ msgid "Minimum extrusion length" #~ msgstr "最大挤出长度" @@ -6886,9 +7730,3 @@ msgstr "" #~ msgid "Slice the model and export slices as SVG." #~ msgstr "切割模型并以SVGæ ¼å¼å¯¼å‡ºåˆ‡ç‰‡ç»“果。" - -#~ msgid "Scale to Fit" -#~ msgstr "缩放到åˆé€‚大å°" - -#~ msgid "Scale to fit the given volume." -#~ msgstr "缩放到适åˆäºŽç»™å®šä½“积。" diff --git a/resources/localization/zh_CN/Slic3rPE.mo b/resources/localization/zh_CN/Slic3rPE.mo deleted file mode 100644 index 7d298da02..000000000 Binary files a/resources/localization/zh_CN/Slic3rPE.mo and /dev/null differ diff --git a/resources/localization/zh_CN/Slic3rPE_zh.po b/resources/localization/zh_CN/Slic3rPE_zh.po deleted file mode 100644 index b48ca4b0b..000000000 --- a/resources/localization/zh_CN/Slic3rPE_zh.po +++ /dev/null @@ -1,4468 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: Slic3rPE\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-28 13:53+0100\n" -"PO-Revision-Date: 2018-02-28 14:17+0100\n" -"Last-Translator: Oleksandra Iushchenko \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"X-Poedit-Basepath: ..\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-KeywordsList: L\n" -"Language: zh_CN\n" -"X-Poedit-SearchPath-0: xs/src/libslic3r\n" -"X-Poedit-SearchPath-1: xs/xrc/slic3r/GUI\n" -"X-Poedit-SearchPath-2: xs/xrc/slic3r\n" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:39 -msgid "Shape" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:46 -msgid "Rectangular" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:50 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1191 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:408 -msgid "Size" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:51 -msgid "Size in X and Y of the rectangular plate." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:57 -msgid "Origin" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:58 -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:62 -msgid "Circular" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:65 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:129 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:200 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:211 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:325 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:336 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:355 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:434 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:781 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:801 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:860 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:878 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:896 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1044 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1052 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1094 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1103 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1113 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1121 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1129 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1215 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1421 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1491 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1527 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1704 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1711 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1718 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1727 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1737 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1747 -msgid "mm" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:66 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:431 -msgid "Diameter" -msgstr "直径" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:67 -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:71 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:150 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:92 -msgid "Custom" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:75 -msgid "Load shape from STL..." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:120 -msgid "Settings" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:298 -msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:315 -msgid "Error! " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:324 -msgid "The selected file contains no geometry." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp:328 -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp:42 -msgid "Bed Shape" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:224 -msgid "Array of language names and identifiers should have the same size." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235 -msgid "Select the language" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:235 -msgid "Language" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:300 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:170 -msgid "Default" -msgstr "默认" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:325 -msgid "Change Application Language" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332 -msgid "Application will be restarted" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:332 -msgid "Attention!" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:339 -msgid "&Localization" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:488 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:470 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300 -msgid "Error" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:493 -msgid "Notice" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:498 -msgid "GLUquadricObjPtr | Attempt to free unreferenced scalar" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp:500 -msgid "Warning" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:50 -msgid "Save current " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:51 -msgid "Delete this preset" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:313 -msgid "Layers and perimeters" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:314 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:777 -msgid "Layer height" -msgstr "层高" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:318 -msgid "Vertical shells" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:329 -msgid "Horizontal shells" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:330 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1314 -msgid "Solid layers" -msgstr "å¯é å±‚æ•°" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:335 -msgid "Quality (slower slicing)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:342 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:356 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:449 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:452 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:831 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1113 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:107 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:208 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:736 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1733 -msgid "Advanced" -msgstr "高级" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:346 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:347 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:664 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:87 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:247 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:488 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:502 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:540 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:681 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:691 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:709 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:727 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:746 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1263 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1280 -msgid "Infill" -msgstr "å¡«å……" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:352 -msgid "Reducing printing time" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:364 -msgid "Skirt and brim" -msgstr "环边和裙边" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:365 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:146 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:88 -msgid "Skirt" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:371 -msgid "Brim" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:374 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:375 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:191 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1030 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1380 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1387 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1399 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1409 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1417 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1432 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1453 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1464 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1480 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1489 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1498 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1509 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1525 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1533 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1534 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1543 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1551 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1565 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:147 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:89 -msgid "Support material" -msgstr "æ”¯æ’‘ææ–™" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:380 -msgid "Raft" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:384 -msgid "Options for support material and raft" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:398 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:118 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:278 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:635 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:747 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:979 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1201 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1251 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1302 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1625 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:71 -msgid "Speed" -msgstr "速度" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:399 -msgid "Speed for print moves" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:411 -msgid "Speed for non-print moves" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:414 -msgid "Modifiers" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:417 -msgid "Acceleration control (advanced)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:424 -msgid "Autospeed (advanced)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:430 -msgid "Multiple Extruders" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:431 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:966 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:308 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:702 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:958 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1272 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1445 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1471 -msgid "Extruders" -msgstr "挤出头" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:438 -msgid "Ooze prevention" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:442 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:149 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:91 -msgid "Wipe tower" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:453 -msgid "Extrusion width" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:463 -msgid "Overlap" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:466 -msgid "Flow" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:469 -msgid "Other" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:476 -msgid "Output options" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:477 -msgid "Sequential printing" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:479 -msgid "Extruder clearance (mm)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:488 -msgid "Output file" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:494 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1001 -msgid "Post-processing scripts" -msgstr "åŽå¤„ç†è„šæœ¬" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:500 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:501 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:859 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:860 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1156 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1157 -msgid "Notes" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:507 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:867 -msgid "Dependencies" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:508 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:868 -msgid "Profile dependencies" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:509 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:869 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1668 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:143 -msgid "Compatible printers" -msgstr "å…¼å®¹çš„æ‰“å°æœº" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:533 -#, no-c-format -msgid "" -"The Spiral Vase mode requires:\n" -"- one perimeter\n" -"- no top solid layers\n" -"- 0% fill density\n" -"- no support material\n" -"- no ensure_vertical_shell_thickness\n" -"\n" -"Shall I adjust those settings in order to enable Spiral Vase?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:540 -msgid "Spiral Vase" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:560 -msgid "" -"The Wipe Tower currently supports only:\n" -"- first layer height 0.2mm\n" -"- layer height from 0.15mm to 0.35mm\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:564 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:585 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:602 -msgid "Wipe Tower" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:581 -msgid "" -"The Wipe Tower currently supports the non-soluble supports only\n" -"if they are printed with the current extruder without triggering a tool " -"change.\n" -"(both support_material_extruder and support_material_interface_extruder need " -"to be set to 0).\n" -"\n" -"Shall I adjust those settings in order to enable the Wipe Tower?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:599 -msgid "" -"For the Wipe Tower to work with the soluble supports, the support layers\n" -"need to be synchronized with the object layers.\n" -"\n" -"Shall I synchronize support layers in order to enable the Wipe Tower?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:617 -msgid "" -"Supports work better, if the following feature is enabled:\n" -"- Detect bridging perimeters\n" -"\n" -"Shall I adjust those settings for supports?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:620 -msgid "Support Generator" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662 -msgid "The " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:662 -#, no-c-format -msgid "" -" infill pattern is not supposed to work at 100% density.\n" -"\n" -"Shall I switch to rectilinear fill pattern?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:786 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:787 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:368 -msgid "Filament" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:794 -msgid "Temperature " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:795 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1234 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:307 -msgid "Extruder" -msgstr "挤出头" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:800 -msgid "Bed" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:805 -msgid "Cooling" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:806 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:922 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1695 -msgid "Enable" -msgstr "使能" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:817 -msgid "Fan settings" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:818 -msgid "Fan speed" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:826 -msgid "Cooling thresholds" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:832 -msgid "Filament properties" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:836 -msgid "Print speed override" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:846 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1119 -msgid "Custom G-code" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:847 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1120 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1342 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1357 -msgid "Start G-code" -msgstr "èµ·å§‹G代ç " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:853 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1126 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:217 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:227 -msgid "End G-code" -msgstr "结尾G代ç " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:937 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:11 -msgid "General" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:938 -msgid "Size and coordinates" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:940 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:34 -msgid "Bed shape" -msgstr "机床形状" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:942 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1637 -msgid " Set " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:962 -msgid "Capabilities" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:967 -msgid "Number of extruders of the printer." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:989 -msgid "USB/Serial connection" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:990 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1193 -msgid "Serial port" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:995 -msgid "Rescan serial ports" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1004 -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1072 -msgid "Test" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017 -msgid "Connection to printer works correctly." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1017 -msgid "Success!" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1020 -msgid "Connection failed." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1032 -msgid "OctoPrint upload" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1035 -msgid " Browse " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1110 -msgid "Firmware" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1132 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:48 -msgid "Before layer change G-code" -msgstr "层改å˜å‰çš„G代ç " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1138 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:766 -msgid "After layer change G-code" -msgstr "层å˜åŒ–åŽG代ç " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1144 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1602 -msgid "Tool change G-code" -msgstr "切æ¢å·¥å…·G代ç " - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1150 -msgid "Between objects G-code (for sequential printing)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1187 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:400 -#, c-format -msgid "Extruder %d" -msgstr "挤出头 %d" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1194 -msgid "Layer height limits" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1199 -msgid "Position (for multi-extruder printers)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1202 -msgid "Retraction" -msgstr "回缩" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1205 -msgid "Only lift Z" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1218 -msgid "" -"Retraction when tool is disabled (advanced settings for multi-extruder " -"setups)" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1222 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:150 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2125 -msgid "Preview" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1312 -msgid "" -"The Wipe option is not available when using the Firmware Retraction mode.\n" -"\n" -"Shall I disable it in order to enable Firmware Retraction?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1314 -msgid "Firmware Retraction" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469 -msgid "Default " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1469 -msgid " preset" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1470 -msgid " preset\n" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488 -msgid "" -"\n" -"\n" -"is not compatible with printer\n" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1488 -msgid "" -"\n" -"\n" -"and it has the following unsaved changes:" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1489 -msgid "" -"\n" -"\n" -"has the following unsaved changes:" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1491 -msgid "" -"\n" -"\n" -"Discard changes and continue anyway?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1492 -msgid "Unsaved Changes" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1560 -msgid "The supplied name is empty. It can't be saved." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580 -msgid "remove" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1580 -msgid "delete" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581 -msgid "Are you sure you want to " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1581 -msgid " the selected preset?" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582 -msgid "Remove" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1582 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:178 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:196 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021 -msgid "Delete" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1583 -msgid " Preset" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1636 -msgid "All" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1667 -msgid "Select the printers this profile is compatible with." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645 -msgid "Save " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1751 -msgid " as:" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1785 -msgid "" -"The supplied name is not valid; the following characters are not allowed:" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp:1788 -msgid "The supplied name is not available." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:182 -msgid "Print Settings" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:202 -msgid "Filament Settings" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:228 -msgid "Printer Settings" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp:248 -msgid "Save preset" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp:42 -msgid "default" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:26 -#, c-format -msgid "" -"If estimated layer time is below ~%ds, fan will run at %d%% and print speed " -"will be reduced so that no less than %ds are spent on that layer (however, " -"speed will never be reduced below %dmm/s)." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:30 -#, c-format -msgid "" -"\n" -"If estimated layer time is greater, but still below ~%ds, fan will run at a " -"proportionally decreasing speed between %d%% and %d%%." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:34 -msgid "" -"\n" -"During the other layers, fan " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:36 -msgid "Fan " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:41 -#, c-format -msgid "will always run at %d%% " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:44 -#, c-format -msgid "except for the first %d layers" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:48 -msgid "except for the first layer" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:50 -msgid "will be turned off." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:151 -msgid "external perimeters" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:160 -msgid "perimeters" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:169 -msgid "infill" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:179 -msgid "solid infill" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:187 -msgid "top solid infill" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:198 -msgid "support" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:208 -msgid "support interface" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214 -msgid "First layer volumetric" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214 -msgid "Bridging volumetric" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:214 -msgid "Volumetric" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:215 -msgid " flow rate is maximized " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:218 -msgid "by the print profile maximum" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:219 -msgid "when printing " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:220 -msgid " with a volumetric rate " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:224 -#, c-format -msgid "%3.2f mm³/s" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:226 -#, c-format -msgid " at filament speed %3.2f mm/s." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:245 -msgid "" -"Recommended object thin wall thickness: Not available due to invalid layer " -"height." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:262 -#, c-format -msgid "Recommended object thin wall thickness for layer height %.2f and " -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp:269 -#, c-format -msgid "%d lines: %.2lf mm" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp:17 -msgid "Preferences" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:27 -msgid "Remember output directory" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:29 -msgid "" -"If this is enabled, Slic3r will prompt the last output directory instead of " -"the one containing the input files." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:35 -msgid "Auto-center parts" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:37 -msgid "" -"If this is enabled, Slic3r will auto-center objects around the print bed " -"center." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:43 -msgid "Background processing" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:45 -msgid "" -"If this is enabled, Slic3r will pre-process objects as soon as they're " -"loaded in order to save time when exporting G-code." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:51 -msgid "Disable USB/serial connection" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:53 -msgid "" -"Disable communication with the printer over a serial / USB cable. This " -"simplifies the user interface in case the printer is never attached to the " -"computer." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:59 -msgid "Suppress \" - default - \" presets" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:61 -msgid "" -"Suppress \" - default - \" presets in the Print / Filament / Printer " -"selections once there are any other valid presets available." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:67 -msgid "Show incompatible print and filament presets" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:69 -msgid "" -"When checked, the print and filament presets are shown in the preset editor " -"even if they are marked as incompatible with the active printer" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:75 -msgid "Use legacy OpenGL 1.1 rendering" -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:77 -msgid "" -"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may " -"try to check this checkbox. This will disable the layer height editing and " -"anti aliasing, so it is likely better to upgrade your graphics driver." -msgstr "" - -#: c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp:101 -msgid "You need to restart Slic3r to make the changes effective." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:26 -msgid "Avoid crossing perimeters" -msgstr "é¿å…跨越轮廓" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:27 -msgid "" -"Optimize travel moves in order to minimize the crossing of perimeters. This " -"is mostly useful with Bowden extruders which suffer from oozing. This " -"feature slows down both the print and the G-code generation." -msgstr "" -"为了尽é‡å‡å°‘跨越轮廓,优化空程的移动方å¼ã€‚è¿™éžå¸¸é€‚ç”¨äºŽå—æ¸—æ¼é—®é¢˜å½±å“çš„é²ç™»æŒ¤" -"å‡ºå¤´ã€‚æ­¤åŠŸèƒ½ä¼šå‡æ…¢æ‰“å°é€Ÿåº¦å’Œ G 代ç ç”Ÿæˆé€Ÿåº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:38 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1572 -msgid "Other layers" -msgstr "其它层" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:39 -msgid "" -"Bed temperature for layers after the first one. Set this to zero to disable " -"bed temperature control commands in the output." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:42 -msgid "Bed temperature" -msgstr "机床温度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:49 -msgid "" -"This custom code is inserted at every layer change, right before the Z move. " -"Note that you can use placeholder variables for all Slic3r settings as well " -"as [layer_num] and [layer_z]." -msgstr "" -"这段自定义代ç åœ¨å±‚改å˜ï¼Œå³Zè½´ç§»åŠ¨å‰æ’入。注æ„除了å¯ä»¥ä½¿ç”¨[layer_num]å’Œ" -"[layer_z],也å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡æ›¿ä»£æ‰€æœ‰çš„slic3r设置。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:59 -msgid "Between objects G-code" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:60 -msgid "" -"This code is inserted between objects when using sequential printing. By " -"default extruder and bed temperature are reset using non-wait command; " -"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r " -"will not add temperature commands. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:68 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370 -msgid "Bottom" -msgstr "底部" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:69 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:239 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:290 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:298 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:604 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:762 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:778 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:941 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:989 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1152 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1583 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1639 -msgid "Layers and Perimeters" -msgstr "层和轮廓" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:70 -msgid "Number of solid layers to generate on bottom surfaces." -msgstr "底部表é¢ç”Ÿæˆçš„å¯é å±‚数。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:72 -msgid "Bottom solid layers" -msgstr "底部å¯é å±‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:77 -msgid "Bridge" -msgstr "æ¡¥" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:78 -msgid "" -"This is the acceleration your printer will use for bridges. Set zero to " -"disable acceleration control for bridges." -msgstr "æ­¤é¡¹ä¸ºæ‰“å°æœºåœ¨æ‰“å°æ¡¥æ—¶çš„加速度。设为0å¯ä»¥ç¦ç”¨æ‰“å°æ¡¥çš„加速度控制。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:80 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:174 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:576 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:684 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:952 -msgid "mm/s²" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:86 -msgid "Bridging angle" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:88 -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for all " -"bridges. Use 180° for zero angle." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:91 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:492 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1170 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1181 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1401 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1557 -msgid "°" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:97 -msgid "Bridges fan speed" -msgstr "桥风扇速度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:98 -msgid "This fan speed is enforced during all bridges and overhangs." -msgstr "æ­¤é¡¹ä¸ºåœ¨æ‰“å°æ‰€æœ‰æ¡¥å’Œæ‚¬åž‚éƒ¨ä½æ—¶çš„风扇速度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:99 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:504 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:789 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:850 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1060 -msgid "%" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:106 -msgid "Bridge flow ratio" -msgstr "æ¡¥æµé‡æ¯”" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:108 -msgid "" -"This factor affects the amount of plastic for bridging. You can decrease it " -"slightly to pull the extrudates and prevent sagging, although default " -"settings are usually good and you should experiment with cooling (use a fan) " -"before tweaking this." -msgstr "" -"æ­¤å› ç´ å½±å“æ¡¥æŽ¥éƒ¨ä½çš„塑料用é‡ã€‚å¯ä»¥ç•¥å¾®å‡å°‘该值以回撤挤出物é¿å…滴垂。但默认设" -"置通常æ¥è¯´å·²ç»å¯ä»¥æ»¡è¶³ä½¿ç”¨ï¼Œåœ¨ä¿®æ”¹å‰éœ€é€šè¿‡å†·å´ï¼ˆä½¿ç”¨é£Žæ‰‡ï¼‰è¿›è¡Œæµ‹è¯•。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:117 -msgid "Bridges" -msgstr "桥接处" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:119 -msgid "Speed for printing bridges." -msgstr "æ‰“å°æ¡¥æŽ¥å¤„的速度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:120 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:638 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:749 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:811 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:868 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:981 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1137 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1146 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1536 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1649 -msgid "mm/s" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:127 -msgid "Brim width" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:128 -msgid "" -"Horizontal width of the brim that will be printed around each object on the " -"first layer." -msgstr "第一层æ¯ä¸ªç‰©ä½“周围打å°çš„裙边水平宽度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:135 -msgid "Clip multi-part objects" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:136 -msgid "" -"When printing multi-material objects, this settings will make slic3r to clip " -"the overlapping object parts one by the other (2nd part will be clipped by " -"the 1st, 3rd part will be clipped by the 1st and 2nd etc)." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:147 -msgid "Compatible printers condition" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:148 -msgid "" -"A boolean expression using the configuration values of an active printer " -"profile. If this expression evaluates to true, this profile is considered " -"compatible with the active printer profile." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:154 -msgid "Complete individual objects" -msgstr "打å°å®Œæˆå•个物体" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:155 -msgid "" -"When printing multiple objects or copies, this feature will complete each " -"object before moving onto next one (and starting it from its bottom layer). " -"This feature is useful to avoid the risk of ruined prints. Slic3r should " -"warn and prevent you from extruder collisions, but beware." -msgstr "" -"勾选此项表示当打å°å¤šä¸ªç‰©ä½“或å¤åˆ¶ä½“时,先打å°å®Œä¸€æ•´ä¸ªç‰©ä½“å†ç»§ç»­æ‰“å°åŽç»­ç‰©ä½“" -"(从底层开始)。此选项利于é¿å…æ‰“æ¯æŽ‰ç‰©ä½“ã€‚Slic3r应该给出警示,é¿å…挤出头碰" -"撞,但请å°å¿ƒã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:163 -msgid "Enable auto cooling" -msgstr "自动冷å´ä½¿èƒ½" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:164 -msgid "" -"This flag enables the automatic cooling logic that adjusts print speed and " -"fan speed according to layer printing time." -msgstr "该选项å¯åŠ¨è‡ªåŠ¨å†·å´ï¼Œä½¿å¾—坿 ¹æ®å±‚æ‰“å°æ—¶é—´è°ƒæ•´æ‰“å°é€Ÿåº¦å’Œé£Žæ‰‡é€Ÿåº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:171 -msgid "" -"This is the acceleration your printer will be reset to after the role-" -"specific acceleration values are used (perimeter/infill). Set zero to " -"prevent resetting acceleration at all." -msgstr "" -"è¯¥å€¼ä¸ºæ‰“å°æœºåœ¨ä½¿ç”¨äº†ç‰¹å®šçš„加速度值(如轮廓/填充)åŽå°†é‡ç½®çš„加速度值。设为0以" -"防止é‡ç½®åŠ é€Ÿåº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:180 -msgid "Disable fan for the first" -msgstr "å‰å‡ å±‚ç¦ç”¨é£Žæ‰‡" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:181 -msgid "" -"You can set this to a positive value to disable fan at all during the first " -"layers, so that it does not make adhesion worse." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:183 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:694 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1033 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1224 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1285 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1437 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1482 -msgid "layers" -msgstr "层" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:190 -msgid "Don't support bridges" -msgstr "䏿”¯æŒæ¡¥æŽ¥" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:192 -msgid "" -"Experimental option for preventing support material from being generated " -"under bridged areas." -msgstr "è¯•éªŒé¡¹ï¼Œåœ¨æ¡¥æŽ¥å¤„ç¦æ­¢ç”Ÿæˆæ”¯æ’‘ææ–™ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:198 -msgid "Distance between copies" -msgstr "å¤åˆ¶ç‰©ä½“之间的è·ç¦»" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:199 -msgid "Distance used for the auto-arrange feature of the plater." -msgstr "自动分布时所使用的è·ç¦»ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:207 -msgid "Elephant foot compensation" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:209 -msgid "" -"The first layer will be shrunk in the XY plane by the configured value to " -"compensate for the 1st layer squish aka an Elephant Foot effect." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:218 -msgid "" -"This end procedure is inserted at the end of the output file. Note that you " -"can use placeholder variables for all Slic3r settings." -msgstr "该部分将æ’入到输出文件的结尾。注æ„å¯å¯¹æ‰€æœ‰çš„Slic3r傿•°ä½¿ç”¨å ä½ç¬¦å˜é‡ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:228 -msgid "" -"This end procedure is inserted at the end of the output file, before the " -"printer end gcode. Note that you can use placeholder variables for all " -"Slic3r settings. If you have multiple extruders, the gcode is processed in " -"extruder order." -msgstr "" -"该部分将被æ’å…¥è¾“å‡ºæ–‡ä»¶çš„ç»“å°¾ï¼Œä½†åœ¨æ‰“å°æœºç»“å°¾G代ç ä¹‹å‰ã€‚注æ„å¯ä»¥å¯¹æ‰€æœ‰Slic3rå‚" -"数使用å ä½ç¬¦å˜é‡ä»£æ›¿ã€‚如果有多个打å°å¤´ï¼ŒG代ç å°†æŒ‰æ‰“å°å¤´çš„é¡ºåºæ¥å¤„ç†ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:238 -msgid "Ensure vertical shell thickness" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:240 -msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:246 -msgid "Top/bottom fill pattern" -msgstr "顶部/底部填充样å¼" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:248 -msgid "" -"Fill pattern for top/bottom infill. This only affects the external visible " -"layer, and not its adjacent solid shells." -msgstr "对顶部/底部内部填充的类型。这将影å“外围å¯è§å±‚,ä¸å½±å“其相邻的å¯é å±‚。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:267 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:277 -msgid "External perimeters" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:268 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:377 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:592 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:710 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:967 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1292 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1454 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1614 -msgid "Extrusion Width" -msgstr "挤出宽度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:269 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for external " -"perimeters. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 200%), it will be computed over layer height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:272 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:597 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:715 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:972 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1296 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1458 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1619 -msgid "mm or % (leave 0 for default)" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:279 -msgid "" -"This separate setting will affect the speed of external perimeters (the " -"visible ones). If expressed as percentage (for example: 80%) it will be " -"calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:282 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:619 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1255 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1306 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1501 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1631 -msgid "mm/s or %" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:289 -msgid "External perimeters first" -msgstr "先打å°å¤–围轮廓" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:291 -msgid "" -"Print contour perimeters from the outermost one to the innermost one instead " -"of the default inverse order." -msgstr "ä»Žæœ€å¤–å›´è½®å»“å‘æœ€å†…部的轮廓打å°ï¼Œè€Œä¸æ˜¯åæ–¹å‘。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:297 -msgid "Extra perimeters if needed" -msgstr "如果需è¦çš„è¯ï¼Œæ‰“å°å¤–围轮廓" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:299 -#, no-c-format -msgid "" -"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r " -"keeps adding perimeters, until more than 70% of the loop immediately above " -"is supported." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:309 -msgid "" -"The extruder to use (unless more specific extruder settings are specified). " -"This value overrides perimeter and infill extruders, but not the support " -"extruders." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:320 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:69 -msgid "Height" -msgstr "高度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:321 -msgid "" -"Set this to the vertical distance between your nozzle tip and (usually) the " -"X carriage rods. In other words, this is the height of the clearance " -"cylinder around your extruder, and it represents the maximum depth the " -"extruder can peek before colliding with other printed objects." -msgstr "" -"设置为喷嘴尖端和(通常)Xæž¶æ†ä¹‹é—´çš„垂直è·ç¦»ã€‚æ¢å¥è¯è¯´ï¼Œè¿™æ˜¯åœ¨ä½ çš„æŒ¤å‡ºæœºå‘¨å›´çš„" -"ç©ºéš™æ°”ç¼¸çš„é«˜åº¦ï¼Œå®ƒä»£è¡¨äº†æŒ¤å‡ºå¤´åœ¨ä¸Žå…¶ä»–å°æ‰“å°ç‰©ä½“碰撞å‰ç§‘达到的最大深度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:331 -msgid "Radius" -msgstr "åŠå¾„" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:332 -msgid "" -"Set this to the clearance radius around your extruder. If the extruder is " -"not centered, choose the largest value for safety. This setting is used to " -"check for collisions and to display the graphical preview in the plater." -msgstr "" -"设置为挤出头周围的空隙åŠå¾„。如果挤出头未置中,安全起è§è¯·é€‰æ‹©æœ€å¤§å€¼ã€‚è¯¥å‚æ•°ç”¨" -"于检查碰撞,并在界é¢ä¸­æ˜¾ç¤ºå›¾å½¢é¢„览。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:342 -msgid "Extruder Color" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:343 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:406 -msgid "This is only used in the Slic3r interface as a visual help." -msgstr "ä»…æä¾›Slic3r界é¢çš„视觉帮助。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:350 -msgid "Extruder offset" -msgstr "挤出头åç½®" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:351 -msgid "" -"If your firmware doesn't handle the extruder displacement you need the G-" -"code to take it into account. This option lets you specify the displacement " -"of each extruder with respect to the first one. It expects positive " -"coordinates (they will be subtracted from the XY coordinate)." -msgstr "" -"如果你的固件ä¸èƒ½å¤„ç†æŒ¤å‡ºå¤´çš„ä½ç§»é‡ï¼Œéœ€è¦ä½¿ç”¨G代ç å°†å…¶è€ƒè™‘进去。该选项å¯è®©ä½ ç»†" -"化æ¯ä¸ªæŒ¤å‡ºå¤´ç›¸å¯¹ç¬¬ä¸€ä¸ªæŒ¤å‡ºå¤´çš„ä½ç§»é‡ã€‚ä¸€èˆ¬ä¸ºæ­£åæ ‡ï¼ˆå®ƒä»¬å°†ä»ŽXYåæ ‡ç›¸å‡å¾—" -"到)。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:360 -msgid "Extrusion axis" -msgstr "挤出轴" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:361 -msgid "" -"Use this option to set the axis letter associated to your printer's extruder " -"(usually E but some printers use A)." -msgstr "" -"ä½¿ç”¨è¯¥é¡¹è®¾ç½®ä½ çš„æ‰“å°æœºæŒ¤å‡ºå¤´çš„轴所用字æ¯ï¼ˆä¸€èˆ¬ä¸ºEï¼Œä½†æœ‰çš„æ‰“å°æœºä½¿ç”¨A)。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:367 -msgid "Extrusion multiplier" -msgstr "æŒ¤å‡ºå€æ•°" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:368 -msgid "" -"This factor changes the amount of flow proportionally. You may need to tweak " -"this setting to get nice surface finish and correct single wall widths. " -"Usual values are between 0.9 and 1.1. If you think you need to change this " -"more, check filament diameter and your firmware E steps." -msgstr "" -"è¯¥é€‰é¡¹æŒ‰æ¯”ä¾‹æ”¹å˜æµé‡ã€‚ä½ å¯èƒ½éœ€è¦è°ƒæ•´è¯¥è®¾ç½®æ¥èŽ·å–æ›´å¥½çš„表é¢å°¾å¤„ç†ï¼Œæ›´æ­£å•层墙" -"的宽度。通常值范围在0.9到1.1ä¹‹é—´ã€‚å¦‚æžœä½ è§‰å¾—æœ‰å¿…è¦æ›´æ”¹å¹…åº¦æ›´å¤§ï¼Œæ£€æŸ¥ä¸æ–™ç›´å¾„" -"和你的固件E步骤。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:376 -msgid "Default extrusion width" -msgstr "默认挤出宽度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:378 -msgid "" -"Set this to a non-zero value to allow a manual extrusion width. If left to " -"zero, Slic3r derives extrusion widths from the nozzle diameter (see the " -"tooltips for perimeter extrusion width, infill extrusion width etc). If " -"expressed as percentage (for example: 230%), it will be computed over layer " -"height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:382 -msgid "mm or % (leave 0 for auto)" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:387 -msgid "Keep fan always on" -msgstr "ä¿æŒé£Žæ‰‡æ€»æ˜¯æ‰“å¼€" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:388 -msgid "" -"If this is enabled, fan will never be disabled and will be kept running at " -"least at its minimum speed. Useful for PLA, harmful for ABS." -msgstr "" -"勾选此项,风扇将ä¸ä¼šè¢«å…³é—­ï¼Œåœ¨æ•´ä¸ªæ‰“å°è¿‡ç¨‹ä¸­å°†æŒç»­ä»¥ä¸ä½ŽäºŽæœ€ä½Žé€Ÿå¼€å¯ã€‚对于PLA" -"ææ–™æœ‰ç”¨ï¼Œå¯¹ABSææ–™ä¸é€‚用。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:394 -msgid "Enable fan if layer print time is below" -msgstr "å¦‚æžœæ‰“å°æ—¶é—´ä½ŽäºŽè¯¥å€¼ï¼Œåˆ™æ°”动风扇" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:395 -msgid "" -"If layer print time is estimated below this number of seconds, fan will be " -"enabled and its speed will be calculated by interpolating the minimum and " -"maximum speeds." -msgstr "" -"å¦‚æžœä¼°ç®—çš„æ‰“å°æ—¶é—´ä½ŽäºŽè¯¥æ•°å€¼ï¼ˆå•ä½ä¸ºç§’),风扇将å¯ç”¨ï¼Œè€Œä¸”é€Ÿåº¦å€¼æ ¹æ®æ’补最å°" -"速度值和最大速度值æ¥è®¡ç®—。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:397 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1242 -msgid "approximate seconds" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:405 -msgid "Color" -msgstr "颜色" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:412 -msgid "Filament notes" -msgstr "䏿–™å¤‡æ³¨" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:413 -msgid "You can put your notes regarding the filament here." -msgstr "å…³äºŽææ–™çš„å¤‡æ³¨å¯æ”¾è¿™é‡Œã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:421 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:817 -msgid "Max volumetric speed" -msgstr "最大体积速度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:422 -msgid "" -"Maximum volumetric speed allowed for this filament. Limits the maximum " -"volumetric speed of a print to the minimum of print and filament volumetric " -"speed. Set to zero for no limit." -msgstr "" -"è¯¥ææ–™æ‰€å…许的最大体积速度。把最大体积速度é™å®šä¸ºæ‰“å°é€Ÿåº¦å’Œææ–™ä½“积速度的最å°" -"值。设为0则无é™åˆ¶ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:425 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:820 -msgid "mm³/s" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:432 -msgid "" -"Enter your filament diameter here. Good precision is required, so use a " -"caliper and do multiple measurements along the filament, then compute the " -"average." -msgstr "" -"åœ¨è¿™é‡Œè¾“å…¥ä½ çš„ææ–™ç›´å¾„。需è¦è¾ƒé«˜ç²¾åº¦ï¼Œæ‰€ä»¥è¯·ä½¿ç”¨å¡å°ºï¼Œæ²¿ç€ææ–™é•¿ä¸åšå¤šæ¬¡æµ‹" -"é‡ï¼Œè®¡ç®—å¹³å‡å€¼ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:440 -msgid "Density" -msgstr "密度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:441 -msgid "" -"Enter your filament density here. This is only for statistical information. " -"A decent way is to weigh a known length of filament and compute the ratio of " -"the length to volume. Better is to calculate the volume directly through " -"displacement." -msgstr "" -"åœ¨è¿™é‡Œè¾“å…¥ä½ çš„ä¸æ–™å¯†åº¦ã€‚此仅为统计信æ¯ã€‚一个ä¸é”™çš„æ–¹æ³•是测é‡ä¸€æ®µå·²çŸ¥é•¿åº¦ä¸æ–™" -"çš„é‡é‡ï¼Œç„¶åŽè®¡ç®—体积。更好的方法å¼ç›´æŽ¥é€šè¿‡ä½ç§»è®¡ç®—体积。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:444 -msgid "g/cm³" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:450 -msgid "Filament type" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:451 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1002 -msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:470 -msgid "Soluble material" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:471 -msgid "Soluble material is most likely used for a soluble support." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:476 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:450 -msgid "Cost" -msgstr "å•ä»·" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:477 -msgid "" -"Enter your filament cost per kg here. This is only for statistical " -"information." -msgstr "åœ¨è¿™é‡Œè¾“å…¥ä¸æ–™æ¯å…¬æ–¤çš„价格。仅用于统计信æ¯ã€‚" - -# Set this to be the local currency symbol. -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:478 -msgid "money/kg" -msgstr "Â¥/kg" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:487 -msgid "Fill angle" -msgstr "填充角度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:489 -msgid "" -"Default base angle for infill orientation. Cross-hatching will be applied to " -"this. Bridges will be infilled using the best direction Slic3r can detect, " -"so this setting does not affect them." -msgstr "" -"填充的默认基础方å‘角。交å‰å¼•线适用于此。桥接处将使用Slic3ræ‰€ä¾¦æµ‹çš„æœ€å¥½æ–¹å‘æ¥" -"å¡«å……ï¼Œæ‰€ä»¥æ­¤å‚æ•°ä¸å½±å“它们。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:501 -msgid "Fill density" -msgstr "填充密度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:503 -#, no-c-format -msgid "Density of internal infill, expressed in the range 0% - 100%." -msgstr "内部填充的密度,以0% - 100% 表示。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:539 -msgid "Fill pattern" -msgstr "å¡«å……æ ·å¼" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:541 -msgid "Fill pattern for general low-density infill." -msgstr "一般低密度填充的填充样å¼ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:573 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:582 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:591 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:625 -msgid "First layer" -msgstr "首层" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:574 -msgid "" -"This is the acceleration your printer will use for first layer. Set zero to " -"disable acceleration control for first layer." -msgstr "æ­¤é¡¹ä¸ºæ‰“å°æœºå¯¹é¦–层使用的加速度。设为0则对首层ç¦ç”¨åŠ é€ŸæŽ§åˆ¶ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:583 -msgid "" -"Heated build plate temperature for the first layer. Set this to zero to " -"disable bed temperature control commands in the output." -msgstr "é¦–å±‚çš„åŠ çƒ­æ¿æ¸©åº¦ã€‚设为0,å¯åœ¨è¾“出中ç¦ç”¨æœºåºŠæ¸©åº¦æŽ§åˆ¶æŒ‡ä»¤ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:593 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for first " -"layer. You can use this to force fatter extrudates for better adhesion. If " -"expressed as percentage (for example 120%) it will be computed over first " -"layer height. If set to zero, it will use the default extrusion width." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:603 -msgid "First layer height" -msgstr "首层高度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:605 -msgid "" -"When printing with very low layer heights, you might still want to print a " -"thicker bottom layer to improve adhesion and tolerance for non perfect build " -"plates. This can be expressed as an absolute value or as a percentage (for " -"example: 150%) over the default layer height." -msgstr "" -"当以éžå¸¸ä½Žçš„å±‚é«˜æ‰“å°æ—¶ï¼Œå¯¹äºŽä¸å¤ªç†æƒ³çš„热床æ¥è¯´å¯èƒ½éœ€è¦æ‰“å°è¾ƒåŽšçš„åº•å±‚æ¥æé«˜ç²˜" -"附效果。该值å¯è¢«è¡¨ç¤ºä¸ºä¸€ä¸ªç»å¯¹å€¼ï¼Œæˆ–者一个相对于默认层高的百分数(如150%)。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:609 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:740 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1390 -msgid "mm or %" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:615 -msgid "First layer speed" -msgstr "首层速度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:616 -msgid "" -"If expressed as absolute value in mm/s, this speed will be applied to all " -"the print moves of the first layer, regardless of their type. If expressed " -"as a percentage (for example: 40%) it will scale the default speeds." -msgstr "" -"如果表示为mm/s的数值,该值将被用于首层的打å°åŠ¨ä½œï¼Œæ— å…³åŠ¨ä½œçš„ç±»åž‹ã€‚å¦‚æžœè¡¨ç¤ºä¸º" -"百分数(如40%),则以默认速度值为基准。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:626 -msgid "" -"Extruder temperature for first layer. If you want to control temperature " -"manually during print, set this to zero to disable temperature control " -"commands in the output file." -msgstr "" -"首层挤出头温度。如果è¦åœ¨æ‰“å°è¿‡ç¨‹ä¸­æ‰‹åŠ¨æŽ§åˆ¶æ¸©åº¦ï¼Œå°†è¯¥é¡¹è®¾ä¸º0æ¥ç¦æ­¢è¾“出文件中的" -"控制命令。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:634 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:145 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:87 -msgid "Gap fill" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:636 -msgid "" -"Speed for filling small gaps using short zigzag moves. Keep this reasonably " -"low to avoid too much shaking and resonance issues. Set zero to disable gaps " -"filling." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:644 -msgid "Verbose G-code" -msgstr "详细的G代ç " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:645 -msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." -msgstr "" -"å¯åŠ¨è¯¥é¡¹å¯èŽ·å¾—å¸¦æ³¨é‡Šçš„Gä»£ç æ–‡ä»¶ï¼Œæ¯ä¸€è¡Œéƒ½æœ‰å¯¹åº”的解释性文字。如果从SD塿‰“å°ï¼Œ" -"文件冗余部分å¯èƒ½å‡ç¼“你的固件è¿è¡Œé€Ÿåº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:652 -msgid "G-code flavor" -msgstr "G代ç é£Žæ ¼" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:653 -msgid "" -"Some G/M-code commands, including temperature control and others, are not " -"universal. Set this option to your printer's firmware to get a compatible " -"output. The \"No extrusion\" flavor prevents Slic3r from exporting any " -"extrusion value at all." -msgstr "" -"一些 G/M 代ç çš„æŒ‡ä»¤ï¼ŒåŒ…括温度控制和其他,但ä¸é€šç”¨ã€‚å°†æ­¤é¡¹è®¾ä¸ºæ‰“å°æœºçš„固件æ¥èŽ·" -"å–兼容性的输出。“无挤出â€é€‰é¡¹ä½¿å¾—Slic3rä¸è¾“出任何挤出值。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:682 -msgid "" -"This is the acceleration your printer will use for infill. Set zero to " -"disable acceleration control for infill." -msgstr "æ‰“å°æœºå¡«å……加速度。设为0å¯ç¦ç”¨å¡«å……加速控制。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:690 -msgid "Combine infill every" -msgstr "æ¯å‡ å±‚è”åˆå¡«å……" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:692 -msgid "" -"This feature allows to combine infill and speed up your print by extruding " -"thicker infill layers while preserving thin perimeters, thus accuracy." -msgstr "" -"该功能å¯é€šè¿‡æŒ¤å‡ºæ›´åŽšçš„å¡«å……å±‚æ¥å®žçްè”åˆå¡«å……,并加速打å°ï¼ŒåŒæ—¶ä¿ç•™äº†è–„å£ï¼Œä¹Ÿå°±" -"ä¿è¯äº†ç²¾åº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:696 -msgid "Combine infill every n layers" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:701 -msgid "Infill extruder" -msgstr "填充挤出头" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:703 -msgid "The extruder to use when printing infill." -msgstr "打å°å¡«å……时使用的挤出头。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:711 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. You may want to use fatter extrudates to speed " -"up the infill and make your parts stronger. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:720 -msgid "Infill before perimeters" -msgstr "å…ˆå¡«å……åŽæ‰“å°è½®å»“" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:721 -msgid "" -"This option will switch the print order of perimeters and infill, making the " -"latter first." -msgstr "该选项将打å°è½®å»“和填充的方å¼å¯¹è°ƒï¼Œä½¿åŽè€…æå‰ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:726 -msgid "Only infill where needed" -msgstr "ä»…åœ¨éœ€è¦æ—¶å¡«å……" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:728 -msgid "" -"This option will limit infill to the areas actually needed for supporting " -"ceilings (it will act as internal support material). If enabled, slows down " -"the G-code generation due to the multiple checks involved." -msgstr "" -"该选项将把填充é™å®šç”¨äºŽæ”¯æ’‘天花æ¿ï¼ˆå°†å……å½“å†…éƒ¨æ”¯æ’‘ææ–™çš„作用)。如果å¯ç”¨ï¼Œç”±äºŽ" -"多个包å«çš„选项将使G代ç ç”Ÿæˆé€Ÿåº¦å˜æ…¢ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:735 -msgid "Infill/perimeters overlap" -msgstr "å¡«å……/轮廓é‡å " - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:737 -msgid "" -"This setting applies an additional overlap between infill and perimeters for " -"better bonding. Theoretically this shouldn't be needed, but backlash might " -"cause gaps. If expressed as percentage (example: 15%) it is calculated over " -"perimeter extrusion width." -msgstr "" -"使得填充和轮廓间有é¢å¤–çš„é‡å éƒ¨åˆ†ï¼Œä¾¿äºŽç»“åˆã€‚ç†è®ºä¸Šå¹¶ä¸éœ€è¦ï¼Œä½†åç§»å¯èƒ½ä¼šå¯¼è‡´" -"间隙。如果表示为百分数(如15%),则以轮廓挤出宽度为基准。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:748 -msgid "Speed for printing the internal fill. Set to zero for auto." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:757 -msgid "Interface shells" -msgstr "表é¢å¤–壳" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:758 -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material." -msgstr "" -"åœ¨ç›¸é‚»çš„ææ–™/包围体之间强制生æˆå¯é å¤–壳层。适用于使用åŠé€æ˜Žææ–™æˆ–æ‰‹å·¥å¯æº¶æ€§æ”¯" -"æ’‘ææ–™çš„多挤出头打å°ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:767 -msgid "" -"This custom code is inserted at every layer change, right after the Z move " -"and before the extruder moves to the first layer point. Note that you can " -"use placeholder variables for all Slic3r settings as well as [layer_num] and " -"[layer_z]." -msgstr "" -"这段G代ç åœ¨æ¯ä¸€å±‚å˜åŒ–åŽï¼Œå³Z轴移动åŽï¼ŒæŒ¤å‡ºå¤´ç§»åŠ¨åˆ°ç¬¬ä¸€å±‚çš„ç‚¹ä¹‹å‰æ’入。注æ„除" -"了使用如[layer_num]å’Œ[layer_z],也å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡æ¥ä»£æ›¿Slic3rçš„å‚æ•°ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:779 -msgid "" -"This setting controls the height (and thus the total number) of the slices/" -"layers. Thinner layers give better accuracy but take more time to print." -msgstr "" -"è¯¥å‚æ•°æŽ§åˆ¶åˆ‡ç‰‡çš„高度(因此也控制总层数)。较薄的切片å¯ä»¥ä½¿ç²¾åº¦æ›´é«˜ï¼Œä½†èŠ±è´¹çš„" -"æ‰“å°æ—¶é—´ä¹Ÿæ›´é•¿ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:787 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:796 -msgid "Max" -msgstr "最大值" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:788 -msgid "This setting represents the maximum speed of your fan." -msgstr "该值表示风扇的最大速度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:797 -#, no-c-format -msgid "" -"This is the highest printable layer height for this extruder, used to cap " -"the variable layer height and support layer height. Maximum recommended " -"layer height is 75% of the extrusion width to achieve reasonable inter-layer " -"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:807 -msgid "Max print speed" -msgstr "最大打å°é€Ÿåº¦" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:808 -msgid "" -"When setting other speed settings to 0 Slic3r will autocalculate the optimal " -"speed in order to keep constant extruder pressure. This experimental setting " -"is used to set the highest print speed you want to allow." -msgstr "" -"å½“å°†å…¶ä»–é€Ÿåº¦å‚æ•°è®¾ä¸º0时,Slic3r会自动计算最优速度以ä¿è¯æŒ¤å‡ºå¤´åŽ‹åŠ›ç¨³å®šã€‚è¯¥è¯•éªŒ" -"傿•°ç”¨äºŽè®¾ç½®æ‰€å…许的最大打å°é€Ÿåº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:818 -msgid "" -"This experimental setting is used to set the maximum volumetric speed your " -"extruder supports." -msgstr "è¯¥å®žéªŒå‚æ•°ç”¨äºŽè®¾ç½®ä½ çš„æŒ¤å‡ºå¤´æ‰€æ”¯æŒçš„æœ€å¤§ä½“积速度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:826 -msgid "Max volumetric slope positive" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:827 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:838 -msgid "" -"This experimental setting is used to limit the speed of change in extrusion " -"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate " -"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/" -"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:831 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:842 -msgid "mm³/s²" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:837 -msgid "Max volumetric slope negative" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:848 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:857 -msgid "Min" -msgstr "最å°å€¼" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:849 -msgid "This setting represents the minimum PWM your fan needs to work." -msgstr "è¯¥å‚æ•°è¡¨ç¤ºä½ çš„风扇工作的最å°PWM。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:858 -msgid "" -"This is the lowest printable layer height for this extruder and limits the " -"resolution for variable layer height. Typical values are between 0.05 mm and " -"0.1 mm." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:866 -msgid "Min print speed" -msgstr "æœ€å°æ‰“å°é€Ÿåº¦" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:867 -msgid "Slic3r will not scale speed down below this speed." -msgstr "Slic3rçš„æœ€å°æ‰“å°é€Ÿåº¦ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:874 -msgid "Minimum extrusion length" -msgstr "最大挤出长度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:875 -msgid "" -"Generate no less than the number of skirt loops required to consume the " -"specified amount of filament on the bottom layer. For multi-extruder " -"machines, this minimum applies to each extruder." -msgstr "" -"åœ¨åº•å±‚ä¸Šæ¶ˆè€—æŒ‡å®šææ–™é‡ç”ŸæˆçŽ¯è¾¹ã€‚å¯¹äºŽå¤šæŒ¤å‡ºå¤´çš„æœºå™¨ï¼Œè¯¥æœ€å°å€¼é€‚用于æ¯ä¸ªæŒ¤å‡º" -"头。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:884 -msgid "Configuration notes" -msgstr "é…置备注" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:885 -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"ä½ å¯ä»¥åœ¨è¿™é‡Œè¾“入你的个人备注。该段文字内容将被添加到Gä»£ç æ–‡ä»¶å¼€å¤´çš„æ³¨é‡Šé‡Œã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:894 -msgid "Nozzle diameter" -msgstr "喷嘴直径" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:895 -msgid "" -"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)" -msgstr "这是你的挤出头喷嘴的直径(:0.5,0.35等。)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:901 -msgid "API Key" -msgstr "API密钥" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:902 -msgid "" -"Slic3r can upload G-code files to OctoPrint. This field should contain the " -"API Key required for authentication." -msgstr "" -"Slic3rå¯ä»¥æŠŠGä»£ç æ–‡ä»¶ä¸Šä¼ è‡³Octoprint。此字段应包å«API密钥,用于身份验è¯ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:908 -msgid "Host or IP" -msgstr "ä¸»æœºåæˆ–IP" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:909 -msgid "" -"Slic3r can upload G-code files to OctoPrint. This field should contain the " -"hostname or IP address of the OctoPrint instance." -msgstr "" -"Slic3rå¯ä»¥æŠŠGä»£ç æ–‡ä»¶ä¸Šä¼ è‡³Octoprint。此字段应包å«OctoPrint实例的主机å称或IP" -"地å€ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:915 -msgid "Only retract when crossing perimeters" -msgstr "仅在越过轮廓时回缩" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:916 -msgid "" -"Disables retraction when the travel path does not exceed the upper layer's " -"perimeters (and thus any ooze will be probably invisible)." -msgstr "当空程ä¸è¶…过上层轮廓时ç¦ç”¨å›žæ’¤ï¼ˆè¿™æ ·æ»´åž‚现象å¯èƒ½ä¼šçœ‹ä¸è§ï¼‰ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:923 -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing. It will enable a tall skirt automatically and move extruders outside " -"such skirt when changing temperatures." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:930 -msgid "Output filename format" -msgstr "输出文件åç§°æ ¼å¼" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:931 -msgid "" -"You can use all configuration options as variables inside this template. For " -"example: [layer_height], [fill_density] etc. You can also use [timestamp], " -"[year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]." -msgstr "" -"å¯ä»¥ä½¿ç”¨æ‰€æœ‰çš„é…置选项。如: [layer_height], [fill_density] 等。你也å¯ä»¥ä½¿ç”¨ " -"[timestamp], [year], [month], [day], [hour], [minute], [second], [version], " -"[input_filename], [input_filename_base]。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:940 -msgid "Detect bridging perimeters" -msgstr "侦测桥接轮廓" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:942 -msgid "" -"Experimental option to adjust flow for overhangs (bridge flow will be used), " -"to apply bridge speed to them and enable fan." -msgstr "" -"试验选项,用于调整悬空部ä½çš„æµé‡ï¼ˆä½¿ç”¨æ¡¥æŽ¥æµé‡ï¼‰ï¼Œå°†æ¡¥æŽ¥é€Ÿåº¦ç”¨äºŽå®ƒä»¬å¹¶å¯ç”¨é£Ž" -"扇。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:948 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:966 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:978 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:988 -msgid "Perimeters" -msgstr "轮廓" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:949 -msgid "" -"This is the acceleration your printer will use for perimeters. A high value " -"like 9000 usually gives good results if your hardware is up to the job. Set " -"zero to disable acceleration control for perimeters." -msgstr "" -"æ‰“å°æœºå°†ç”¨äºŽæ‰“å°è½®å»“的加速度。如果你的硬件性能足够,一个9000这样的高数值通常" -"ä¼šç»™å‡ºå¾ˆå¥½çš„æ‰“å°æ•ˆæžœã€‚设为0å°†ç¦ç”¨è½®å»“加速度控制。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:957 -msgid "Perimeter extruder" -msgstr "轮廓挤出头" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:959 -msgid "" -"The extruder to use when printing perimeters and brim. First extruder is 1." -msgstr "打å°è½®å»“和裙边所使用的挤出头。第一个挤出头是1。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:968 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for perimeters. " -"You may want to use thinner extrudates to get more accurate surfaces. If " -"left zero, default extrusion width will be used if set, otherwise 1.125 x " -"nozzle diameter will be used. If expressed as percentage (for example 200%) " -"it will be computed over layer height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:980 -msgid "" -"Speed for perimeters (contours, aka vertical shells). Set to zero for auto." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:990 -msgid "" -"This option sets the number of perimeters to generate for each layer. Note " -"that Slic3r may increase this number automatically when it detects sloping " -"surfaces which benefit from a higher number of perimeters if the Extra " -"Perimeters option is enabled." -msgstr "" -"该选项设置æ¯ä¸€å±‚生æˆçš„轮廓个数。注æ„,如果â€é¢å¤–轮廓“选项被å¯åŠ¨ï¼ŒSlic3r在侦测" -"到斜å¡è¡¨é¢æ—¶å¯èƒ½ä¼šè‡ªåŠ¨å¢žåŠ è¯¥æ•°å€¼ï¼Œå› ä¸ºè¾ƒå¤šçš„è½®å»“æœ‰åˆ©äºŽæ–œå¡è¡¨é¢çš„æ‰“å°ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:994 -msgid "(minimum)" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1014 -msgid "Printer notes" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1015 -msgid "You can put your notes regarding the printer here." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1029 -msgid "Raft layers" -msgstr "ç­æ¿å±‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1031 -msgid "" -"The object will be raised by this number of layers, and support material " -"will be generated under it." -msgstr "ç‰©ä½“å°†è¢«è¯¥æ•°ç›®çš„å±‚æ•°æŠ¬èµ·ï¼Œè€Œæ”¯æ’‘ææ–™å°†åœ¨å…¶ä¸‹æ–¹ç”Ÿæˆã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1039 -msgid "Resolution" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1040 -msgid "" -"Minimum detail resolution, used to simplify the input file for speeding up " -"the slicing job and reducing memory usage. High-resolution models often " -"carry more detail than printers can render. Set to zero to disable any " -"simplification and use full resolution from input." -msgstr "" -"最å°ç»†èŠ‚åˆ†è¾¨çŽ‡ï¼Œç”¨æ¥ç®€åŒ–输入文件,加速切片,å‡å°‘内存å ç”¨ã€‚æ‰“å°æœºé€šå¸¸å¾ˆé𾿏²æŸ“" -"出高精度模型的细节。设为0则ç¦ç”¨ä»»ä½•简化,完全ä¾ç…§è¾“入文件的精度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1050 -msgid "Minimum travel after retraction" -msgstr "å›žç¼©åŽæœ€å°ç©ºç¨‹" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1051 -msgid "" -"Retraction is not triggered when travel moves are shorter than this length." -msgstr "当空程短于此长度时ä¸ä¼šè§¦å‘回缩。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1057 -msgid "Retract amount before wipe" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1058 -msgid "" -"With bowden extruders, it may be wise to do some amount of quick retract " -"before doing the wipe movement." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1065 -msgid "Retract on layer change" -msgstr "层å˜åŒ–时回缩" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1066 -msgid "This flag enforces a retraction whenever a Z move is done." -msgstr "该项强制在Zè½´ç§»åŠ¨å®Œæˆæ—¶å›žç¼©ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1071 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1080 -msgid "Length" -msgstr "长度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1072 -msgid "Retraction Length" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1073 -msgid "" -"When retraction is triggered, filament is pulled back by the specified " -"amount (the length is measured on raw filament, before it enters the " -"extruder)." -msgstr "" -"当触å‘å›žç¼©æ—¶ï¼Œä¸æ–™ä»¥æŒ‡å®šå€¼å¾€å›žæ”¶ç¼©ï¼ˆé•¿åº¦ä»¥åœ¨è¿›å…¥æŒ¤å‡ºå¤´ä¹‹å‰çš„åŽŸå§‹ææ–™ä¸ºåŸºç¡€è¿›" -"行计算)。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1075 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1085 -msgid "mm (zero to disable)" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1081 -msgid "Retraction Length (Toolchange)" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1082 -msgid "" -"When retraction is triggered before changing tool, filament is pulled back " -"by the specified amount (the length is measured on raw filament, before it " -"enters the extruder)." -msgstr "" -"当在改å˜å·¥å…·å‰è§¦å‘å›žç¼©æ—¶ï¼Œä¸æ–™ä»¥æŒ‡å®šå€¼å›žç¼©ï¼ˆé•¿åº¦ä»¥è¿›å…¥æŒ¤å‡ºå¤´å‰çš„åŽŸå§‹ææ–™ä¸ºåŸº" -"础测é‡ï¼‰ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1090 -msgid "Lift Z" -msgstr "抬高Z" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1091 -msgid "" -"If you set this to a positive value, Z is quickly raised every time a " -"retraction is triggered. When using multiple extruders, only the setting for " -"the first extruder will be considered." -msgstr "" -"如果设为正值,æ¯å½“å›žç¼©è§¦å‘æ—¶Z轴会快速抬å‡ã€‚当使用多个挤出头时,仅会考虑第一个" -"æŒ¤å‡ºå¤´çš„è¯¥å‚æ•°ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1099 -msgid "Above Z" -msgstr "在Z上方" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1100 -msgid "Only lift Z above" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1101 -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z. You can tune this setting for skipping lift on the " -"first layers." -msgstr "" -"如果设为正值,仅在指定的ç»å¯¹Z值上方æ‰ä¼šæŠ¬é«˜Z。å¯ä»¥è°ƒæ•´è¯¥å‚数,用于跳过在å‰å‡ " -"层时跳过Z抬高的步骤。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1108 -msgid "Below Z" -msgstr "Z下方" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1109 -msgid "Only lift Z below" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1110 -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z. You can tune this setting for limiting lift to the " -"first layers." -msgstr "" -"如果设为正值,仅在指定的ç»å¯¹Z值选房å¯ä»¥è°ƒæ•´è¯¥å‚数,用于将抬高Z的动作é™åˆ¶åœ¨å‰" -"几层时。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1118 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1126 -msgid "Extra length on restart" -msgstr "é‡å¯æ—¶é¢å¤–长度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1119 -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"当在空程åŽå›žç¼©è¢«è¡¥å¿æ—¶ï¼ŒæŒ¤å‡ºå¤´ä¼šåŸºç¡€é¢å¤–的指定é‡ä¸æ–™ã€‚è¯¥å‚æ•°ä¸€èˆ¬ä¸éœ€è®¾ç½®ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1127 -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "当在切æ¢å·¥å…·åŽå›žç¼©è¢«è¡¥å¿æ—¶ï¼ŒæŒ¤å‡ºå¤´ä¼šåŸºç¡€é¢å¤–的指定é‡ä¸æ–™ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1134 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1135 -msgid "Retraction Speed" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1136 -msgid "The speed for retractions (it only applies to the extruder motor)." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1142 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1143 -msgid "Deretraction Speed" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1144 -msgid "" -"The speed for loading of a filament into extruder after retraction (it only " -"applies to the extruder motor). If left to zero, the retraction speed is " -"used." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1151 -msgid "Seam position" -msgstr "接åˆä½ç½®" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1153 -msgid "Position of perimeters starting points." -msgstr "轮廓开始点的ä½ç½®ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1169 -msgid "Direction" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1171 -msgid "Preferred direction of the seam" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1172 -msgid "Seam preferred direction" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1180 -msgid "Jitter" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1182 -msgid "Seam preferred direction jitter" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1183 -msgid "Preferred direction of the seam - jitter" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1194 -msgid "USB/serial port for printer connection." -msgstr "ç”¨äºŽæ‰“å°æœºè¿žæŽ¥çš„USB/串å£ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1202 -msgid "Serial port speed" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1203 -msgid "Speed (baud) of USB/serial port for printer connection." -msgstr "ç”¨äºŽæ‰“å°æœºè¿žæŽ¥çš„USB/串å£é€Ÿåº¦ï¼ˆæ³¢ç‰¹çŽ‡ï¼‰ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1212 -msgid "Distance from object" -msgstr "离物体的è·ç¦»" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1213 -msgid "" -"Distance between skirt and object(s). Set this to zero to attach the skirt " -"to the object(s) and get a brim for better adhesion." -msgstr "环边与物体间的è·ç¦»ã€‚设为0,则使环边紧贴物体,å¯èŽ·å¾—è£™è¾¹åˆ©äºŽç²˜é™„ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1221 -msgid "Skirt height" -msgstr "环边高度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1222 -msgid "" -"Height of skirt expressed in layers. Set this to a tall value to use skirt " -"as a shield against drafts." -msgstr "图层中表示的环边高度。设为一个较高值,å¯å°†çŽ¯è¾¹ç”¨ä½œã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1229 -msgid "Loops (minimum)" -msgstr "圈数(最å°)" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1230 -msgid "Skirt Loops" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1231 -msgid "" -"Number of loops for the skirt. If the Minimum Extrusion Length option is " -"set, the number of loops might be greater than the one configured here. Set " -"this to zero to disable skirt completely." -msgstr "" -"çŽ¯è¾¹çš„åœˆæ•°ã€‚å¦‚æžœè®¾ç½®äº†æœ€å°æŒ¤å‡ºé•¿åº¦ï¼Œé‚£ä¹ˆåœˆæ•°å¿…须比这里设置的值è¦å¤§ã€‚设为0则完" -"å…¨ç¦ç”¨çŽ¯è¾¹ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1239 -msgid "Slow down if layer print time is below" -msgstr "å¦‚æžœå›¾å±‚æ‰“å°æ—¶é—´ä½ŽäºŽè¯¥å€¼åˆ™å‡é€Ÿ" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1240 -msgid "" -"If layer print time is estimated below this number of seconds, print moves " -"speed will be scaled down to extend duration to this value." -msgstr "" -"å¦‚æžœé¢„è®¡æ‰“å°æ—¶é—´ä½ŽäºŽè¯¥å€¼ï¼ˆå•ä½ä¸ºç§’),则打å°é€Ÿåº¦å°†é™ä½Žä»¥ä½¿æ‰“å°æ—¶é—´å»¶é•¿åˆ°è¯¥" -"值。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1250 -msgid "Small perimeters" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1252 -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will " -"be calculated on the perimeters speed setting above. Set to zero for auto." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1262 -msgid "Solid infill threshold area" -msgstr "å¯é å¡«å……阈值区域" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1264 -msgid "" -"Force solid infill for regions having a smaller area than the specified " -"threshold." -msgstr "对于比指定阈值å°çš„区域强制进行å¯é å¡«å……。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1265 -msgid "mm²" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1271 -msgid "Solid infill extruder" -msgstr "å¯é å¡«å……挤出头" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1273 -msgid "The extruder to use when printing solid infill." -msgstr "当打å°å¯é å¡«å……时使用的挤出头。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1279 -msgid "Solid infill every" -msgstr "æ¯å‡ å±‚å¯é å¡«å……" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1281 -msgid "" -"This feature allows to force a solid layer every given number of layers. " -"Zero to disable. You can set this to any value (for example 9999); Slic3r " -"will automatically choose the maximum possible number of layers to combine " -"according to nozzle diameter and layer height." -msgstr "" -"è¯¥åŠŸèƒ½ä½¿å¾—æ¯æŒ‡å®šæ•°ç›®å±‚强制进行一次å¯é å¡«å……。设为0ç¦ç”¨è¯¥åŠŸèƒ½ã€‚å¯ä»¥è®¾ä¸ºä»»æ„值" -"(如9999);Slic3r会根æ®å–·å˜´ç›´å¾„和层高æ¥è‡ªåŠ¨é€‰æ‹©å›¾å±‚çš„æœ€å¤§å¯èƒ½ä¸ªæ•°ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1291 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1301 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:142 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:84 -msgid "Solid infill" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1293 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"solid surfaces. If left zero, default extrusion width will be used if set, " -"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage " -"(for example 90%) it will be computed over layer height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1303 -msgid "" -"Speed for printing solid regions (top/bottom/internal horizontal shells). " -"This can be expressed as a percentage (for example: 80%) over the default " -"infill speed above. Set to zero for auto." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1315 -msgid "Number of solid layers to generate on top and bottom surfaces." -msgstr "在顶部和底部表é¢ç”Ÿæˆçš„å¯é å±‚数。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1322 -msgid "Spiral vase" -msgstr "螺旋å¼å®¹å™¨" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1323 -msgid "" -"This feature will raise Z gradually while printing a single-walled object in " -"order to remove any visible seam. This option requires a single perimeter, " -"no infill, no top solid layers and no support material. You can still set " -"any number of bottom solid layers as well as skirt/brim loops. It won't work " -"when printing more than an object." -msgstr "" -"该功能使得在打å°å•å£ç‰©ä½“æ—¶ä¼šé€æ¸æŠ¬å‡Z,以便移除å¯è§çš„ç¼åˆç‚¹ã€‚è¯¥é€‰é¡¹è¦æ±‚å•è½®" -"廓,无填充,无顶部å¯é å±‚,无支撑。ä»å¯ä»¥è®¾ç½®çŽ¯è¾¹ã€è£™è¾¹åœˆæ•°ï¼Œå’Œåº•部å¯é å±‚。但" -"在打å°å¤šä¸ªç‰©ä½“æ—¶ä¸é€‚用。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1332 -msgid "Temperature variation" -msgstr "温度å˜åŒ–" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1333 -msgid "" -"Temperature difference to be applied when an extruder is not active. Enables " -"a full-height \"sacrificial\" skirt on which the nozzles are periodically " -"wiped." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1343 -msgid "" -"This start procedure is inserted at the beginning, after bed has reached the " -"target temperature and extruder just started heating, and before extruder " -"has finished heating. If Slic3r detects M104 or M190 in your custom codes, " -"such commands will not be prepended automatically so you're free to " -"customize the order of heating commands and other custom actions. Note that " -"you can use placeholder variables for all Slic3r settings, so you can put a " -"\"M109 S[first_layer_temperature]\" command wherever you want." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1358 -msgid "" -"This start procedure is inserted at the beginning, after any printer start " -"gcode. This is used to override settings for a specific filament. If Slic3r " -"detects M104, M109, M140 or M190 in your custom codes, such commands will " -"not be prepended automatically so you're free to customize the order of " -"heating commands and other custom actions. Note that you can use placeholder " -"variables for all Slic3r settings, so you can put a \"M109 " -"S[first_layer_temperature]\" command wherever you want. If you have multiple " -"extruders, the gcode is processed in extruder order." -msgstr "" -"è¯¥æ®µä»£ç æ”¾åœ¨G代ç å¼€å¤´ï¼Œåœ¨æ‰€æœ‰æ‰“å°æœºèµ·å§‹G代ç åŽæ’å…¥ã€‚ç”¨äºŽè¦†ç›–æŒ‡å®šææ–™çš„傿•°ã€‚" -"è¯¥æ®µä»£ç æ”¾åœ¨G代ç å¼€å¤´ï¼Œåœ¨çƒ­åºŠè¾¾åˆ°ç›®æ ‡æ¸©åº¦ã€æŒ¤å‡ºå¤´å¼€å§‹åŠ çƒ­åŽï¼ŒæŒ¤å‡ºå¤´å®ŒæˆåŠ çƒ­å‰" -"æ’入。如果其中ä¸åŒ…嫿œ‰M104, M109, M140 或 M190,这段指令就会在Slic3r自动放置" -"çš„M指令之åŽï¼›å¦åˆ™Slic3rå°†ä¸ä¼šè‡ªåŠ¨ç”ŸæˆM指令,这样你å¯ä»¥è‡ªç”±å®šä¹‰åŠ çƒ­å‘½ä»¤å’Œå…¶ä»–" -"自定义动作的顺åºã€‚注æ„å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡æ›¿ä»£æ‰€æœ‰Slic3r傿•°ï¼Œæ‰€ä»¥ä½ å¯ä»¥æŠŠä¸€" -"个“M109 S[ first_layer_temperature ]â€å‘½ä»¤æ”¾åœ¨ä»»æ„处。如果你有多个挤出头,G代" -"ç å°†æŒ‰æŒ¤å‡ºå¤´é¡ºåºå¤„ç†ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1373 -msgid "Single Extruder Multi Material" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1374 -msgid "The printer multiplexes filaments into a single hot end." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1379 -msgid "Generate support material" -msgstr "ç”Ÿæˆæ”¯æ’‘ææ–™" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1381 -msgid "Enable support material generation." -msgstr "å¯ç”¨æ”¯æ’‘ææ–™ç”ŸæˆåŠŸèƒ½ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1386 -msgid "XY separation between an object and its support" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1388 -msgid "" -"XY separation between an object and its support. If expressed as percentage " -"(for example 50%), it will be calculated over external perimeter width." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1398 -msgid "Pattern angle" -msgstr "æ ·å¼è§’度" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1400 -msgid "" -"Use this setting to rotate the support material pattern on the horizontal " -"plane." -msgstr "ä½¿ç”¨è¯¥å‚æ•°å¯¹æ”¯æ’‘ææ–™çš„æ ·å­åœ¨æ°´å¹³é¢ä¸Šè¿›è¡Œæ—‹è½¬ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1408 -msgid "Support on build plate only" -msgstr "ä»…åœ¨çƒ­åºŠä¸Šç”Ÿæˆæ”¯æ’‘" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1410 -msgid "" -"Only create support if it lies on a build plate. Don't create support on a " -"print." -msgstr "ä»…åœ¨çƒ­åºŠä¸Šç”Ÿæˆæ”¯æ’‘,ä¸åœ¨æ‰“å°å‡ºæ¥çš„物体上生æˆã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1416 -msgid "Contact Z distance" -msgstr "接触Z值" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1418 -msgid "" -"The vertical distance between object and support material interface. Setting " -"this to 0 will also prevent Slic3r from using bridge flow and speed for the " -"first object layer." -msgstr "" -"ç‰©ä½“å’Œæ”¯æ’‘ææ–™å¹³é¢ä¹‹é—´çš„垂直è·ç¦»ã€‚设为0,则表é¢ä¸Šç¬¬ä¸€å±‚ä¸ä¼šè¢«å½“åšæ¡¥æ¥å¤„ç†ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1431 -msgid "Enforce support for the first" -msgstr "å‰å‡ å±‚增强支撑" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1433 -msgid "" -"Generate support material for the specified number of layers counting from " -"bottom, regardless of whether normal support material is enabled or not and " -"regardless of any angle threshold. This is useful for getting more adhesion " -"of objects having a very thin or poor footprint on the build plate." -msgstr "" -"ä»Žåº•éƒ¨å¼€å§‹ï¼Œå¯¹æŒ‡å®šæ•°ç›®çš„å›¾å±‚ç”Ÿæˆæ”¯æ’‘ææ–™ï¼Œæ— è®ºæ­£å¸¸çš„æ”¯æ’‘ææ–™æ˜¯å¦å¯ç”¨ï¼Œä¹Ÿä¸ç®¡" -"任何角度阈值。适用于在热床上脚太细ã€ç«™ä¸ä½çš„物件,便于更好的粘附。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1439 -msgid "Enforce support for the first n layers" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1444 -msgid "Support material/raft/skirt extruder" -msgstr "æ”¯æ’‘ææ–™/ç­/环边挤出头" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1446 -msgid "" -"The extruder to use when printing support material, raft and skirt (1+, 0 to " -"use the current extruder to minimize tool changes)." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1455 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for support " -"material. If left zero, default extrusion width will be used if set, " -"otherwise nozzle diameter will be used. If expressed as percentage (for " -"example 90%) it will be computed over layer height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1463 -msgid "Interface loops" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1465 -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1470 -msgid "Support material/raft interface extruder" -msgstr "æ”¯æ’‘ææ–™/ç­è¡¨é¢æŒ¤å‡ºå¤´" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1472 -msgid "" -"The extruder to use when printing support material interface (1+, 0 to use " -"the current extruder to minimize tool changes). This affects raft too." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1479 -msgid "Interface layers" -msgstr "表é¢å±‚æ•°" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1481 -msgid "" -"Number of interface layers to insert between the object(s) and support " -"material." -msgstr "åœ¨ç‰©ä½“å’Œæ”¯æ’‘ææ–™ä¸­é—´æ’入的表é¢å±‚数。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1488 -msgid "Interface pattern spacing" -msgstr "è¡¨é¢æ ·å¼é—´éš”" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1490 -msgid "Spacing between interface lines. Set zero to get a solid interface." -msgstr "表é¢ç›´çº¿é—´çš„间隔。设为0获得å¯é è¡¨é¢ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1497 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:148 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:90 -msgid "Support material interface" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1499 -msgid "" -"Speed for printing support material interface layers. If expressed as " -"percentage (for example 50%) it will be calculated over support material " -"speed." -msgstr "" -"æ‰“å°æ”¯æ’‘ææ–™è¡¨é¢å±‚的速度。若表示为百分数(如50%ï¼‰ï¼Œåˆ™ä»¥æ”¯æ’‘ææ–™é€Ÿåº¦ä¸ºåŸºå‡†è®¡" -"算。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1508 -msgid "Pattern" -msgstr "æ ·å¼" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1510 -msgid "Pattern used to generate support material." -msgstr "ç”Ÿæˆæ”¯æ’‘ææ–™çš„æ ·å¼ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1524 -msgid "Pattern spacing" -msgstr "æ ·å¼é—´éš”" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1526 -msgid "Spacing between support material lines." -msgstr "æ”¯æ’‘ææ–™ç›´çº¿é—´çš„间隙。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1535 -msgid "Speed for printing support material." -msgstr "æ‰“å°æ”¯æ’‘ææ–™çš„速度。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1542 -msgid "Synchronize with object layers" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1544 -msgid "" -"Synchronize support layers with the object print layers. This is useful with " -"multi-material printers, where the extruder switch is expensive." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1550 -msgid "Overhang threshold" -msgstr "悬空阈值" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1552 -msgid "" -"Support material will not be generated for overhangs whose slope angle (90° " -"= vertical) is above the given threshold. In other words, this value " -"represent the most horizontal slope (measured from the horizontal plane) " -"that you can print without support material. Set to zero for automatic " -"detection (recommended)." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1564 -msgid "With sheath around the support" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1566 -msgid "" -"Add a sheath (a single perimeter line) around the base support. This makes " -"the support more reliable, but also more difficult to remove." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1573 -msgid "" -"Extruder temperature for layers after the first one. Set this to zero to " -"disable temperature control commands in the output." -msgstr "第一层之åŽçš„æŒ¤å‡ºå¤´æ¸©åº¦ã€‚设为0以在输出文件中ç¦ç”¨æ¸©åº¦æŽ§åˆ¶æŒ‡ä»¤ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1576 -msgid "Temperature" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1582 -msgid "Detect thin walls" -msgstr "检测薄å£" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1584 -msgid "" -"Detect single-width walls (parts where two extrusions don't fit and we need " -"to collapse them into a single trace)." -msgstr "" -"检测å•一厚度的薄å£ï¼ˆä¸¤ä¸ªæŒ¤å‡ºé‡ä¸å»åˆï¼Œä»¥è‡³äºŽéœ€è¦æŠŠå®ƒä»¬åŽ‹ç¼©æˆä¸€æ¡è½¨è¿¹çš„地" -"方)。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1590 -msgid "Threads" -msgstr "线程" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1591 -msgid "" -"Threads are used to parallelize long-running tasks. Optimal threads number " -"is slightly above the number of available cores/processors." -msgstr "线程用于并行处ç†é•¿æ—¶é—´ä»»åŠ¡ã€‚æœ€ä¼˜çš„çº¿ç¨‹æ•°åº”æ¯”å¯ç”¨æ ¸/处ç†å™¨çš„æ•°ç›®ç•¥å¤šã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1603 -msgid "" -"This custom code is inserted right before every extruder change. Note that " -"you can use placeholder variables for all Slic3r settings as well as " -"[previous_extruder] and [next_extruder]." -msgstr "" -"该段自定义代ç åœ¨æ¯æ¬¡æŒ¤å‡ºå¤´åˆ‡æ¢å‰æ’入。注æ„å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡ä»£æ›¿Slic3r的所有" -"傿•°ï¼Œå¦‚ [previous_extruder] å’Œ [next_extruder]。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1613 -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1624 -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:143 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:85 -msgid "Top solid infill" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1615 -msgid "" -"Set this to a non-zero value to set a manual extrusion width for infill for " -"top surfaces. You may want to use thinner extrudates to fill all narrow " -"regions and get a smoother finish. If left zero, default extrusion width " -"will be used if set, otherwise nozzle diameter will be used. If expressed as " -"percentage (for example 90%) it will be computed over layer height." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1626 -msgid "" -"Speed for printing top solid layers (it only applies to the uppermost " -"external layers and not to their internal solid layers). You may want to " -"slow down this to get a nicer surface finish. This can be expressed as a " -"percentage (for example: 80%) over the solid infill speed above. Set to zero " -"for auto." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1638 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369 -msgid "Top" -msgstr "顶部" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1640 -msgid "Number of solid layers to generate on top surfaces." -msgstr "在顶部表é¢ä¸Šç”Ÿæˆçš„å¯é å±‚数。" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1642 -msgid "Top solid layers" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1647 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:95 -msgid "Travel" -msgstr "空程" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1648 -msgid "Speed for travel moves (jumps between distant extrusion points)." -msgstr "空程移动的速度(从一个挤出点结æŸè°ƒåˆ°å¦ä¸€ä¸ªæŒ¤å‡ºç‚¹å¼€å§‹ï¼‰ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1656 -msgid "Use firmware retraction" -msgstr "使用固件回缩" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1657 -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"è¯¥è¯•éªŒå‚æ•°ä½¿ç”¨G10å’ŒG11指令æ¥ä½¿å›ºä»¶å¤„ç†å›žç¼©ã€‚仅在最新的Marlin中支æŒè¯¥åŠŸèƒ½ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1663 -msgid "Use relative E distances" -msgstr "使用相对Eè·ç¦»" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1664 -msgid "" -"If your firmware requires relative E values, check this, otherwise leave it " -"unchecked. Most firmwares use absolute values." -msgstr "如果固件需è¦ç›¸å¯¹E值,勾选此项,å¦åˆ™ä¸è¦å‹¾é€‰ã€‚大部分固件使用ç»å¯¹å€¼ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1670 -msgid "Use volumetric E" -msgstr "使用体积E" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1671 -msgid "" -"This experimental setting uses outputs the E values in cubic millimeters " -"instead of linear millimeters. If your firmware doesn't already know " -"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] " -"T0' in your start G-code in order to turn volumetric mode on and use the " -"filament diameter associated to the filament selected in Slic3r. This is " -"only supported in recent Marlin." -msgstr "" -"è¯¥è¯•éªŒå‚æ•°åœ¨E值中使用立方米为å•ä½ï¼Œè€Œéžæ¯«ç±³ã€‚如果固件ä¸çŸ¥é“䏿–™ç›´å¾„,你å¯ä»¥åœ¨" -"èµ·å§‹G代ç ä¸­è¾“入如'M200 D[filament_diameter_0] T0' 以开å¯ä½“积模å¼ï¼Œå¹¶ä½¿ç”¨åœ¨" -"Slic3rä¸­å·²é€‰çš„ä¸æ–™ç›´å¾„。仅在最新Marlin中支æŒè¯¥åŠŸèƒ½ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1681 -msgid "Enable variable layer height feature" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1682 -msgid "" -"Some printers or printer setups may have difficulties printing with a " -"variable layer height. Enabled by default." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1688 -msgid "Wipe while retracting" -msgstr "回缩时擦拭" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1689 -msgid "" -"This flag will move the nozzle while retracting to minimize the possible " -"blob on leaky extruders." -msgstr "在回缩时移动喷嘴以é¿å…挤出头滴æ¼ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1696 -msgid "" -"Multi material printers may need to prime or purge extruders on tool " -"changes. Extrude the excess material into the wipe tower." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1702 -msgid "Position X" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1703 -msgid "X coordinate of the left front corner of a wipe tower" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1709 -msgid "Position Y" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1710 -msgid "Y coordinate of the left front corner of a wipe tower" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1716 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:70 -msgid "Width" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1717 -msgid "Width of a wipe tower" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1723 -msgid "Per color change depth" -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1724 -msgid "" -"Depth of a wipe color per color change. For N colors, there will be maximum " -"(N-1) tool switches performed, therefore the total depth of the wipe tower " -"will be (N-1) times this value." -msgstr "" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1732 -msgid "XY Size Compensation" -msgstr "XY尺寸补å¿" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1734 -msgid "" -"The object will be grown/shrunk in the XY plane by the configured value " -"(negative = inwards, positive = outwards). This might be useful for fine-" -"tuning hole sizes." -msgstr "" -"该物体将以指定值(负=往内,正=往外)å˜å¤§/收缩。对于精确调节孔洞尺寸å¯èƒ½æœ‰ç”¨ã€‚" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1742 -msgid "Z offset" -msgstr "Zè¡¥å¿" - -#: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1743 -msgid "" -"This value will be added (or subtracted) from all the Z coordinates in the " -"output G-code. It is used to compensate for bad Z endstop position: for " -"example, if your endstop zero actually leaves the nozzle 0.3mm far from the " -"print bed, set this to -0.3 (or fix your endstop)." -msgstr "" -"在输出G代ç ä¸­ï¼Œæ‰€æœ‰Zåæ ‡å°†åœ¨åŽŸåŸºç¡€ä¸Šå¢žå¤§ï¼ˆæˆ–å‡å°‘)该数值。用æ¥å¯¹ç³Ÿç³•çš„Z终点挡" -"æ¿ä½ç½®è¿›è¡Œè¡¥å¿ï¼Œå¦‚果你的终点挡æ¿ä¸ºé›¶æ—¶ï¼Œå–·å˜´ç¦»æ‰“å°çƒ­åºŠè¿˜æœ‰0.3毫米,将该值设" -"为-0.3(或者调整你的终点挡æ¿ï¼‰ã€‚" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:137 -msgid "None" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:138 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:80 -msgid "Perimeter" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:139 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:81 -msgid "External perimeter" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:140 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:82 -msgid "Overhang perimeter" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:141 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:83 -msgid "Internal infill" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:144 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:86 -msgid "Bridge infill" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:151 -msgid "Mixed" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:330 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:68 -msgid "Feature type" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:332 -msgid "Height (mm)" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:334 -msgid "Width (mm)" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:336 -msgid "Speed (mm/s)" -msgstr "" - -#: c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp:338 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:72 -msgid "Tool" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI.pm:286 -msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66 -msgid "Version " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:66 -msgid "" -" - Remember to check for updates at http://github.com/supermerill/slic3r/releases" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:118 -msgid "Plater" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:120 -msgid "Controller" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192 -msgid "No Bonjour device found" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:192 -msgid "Device Browser" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:211 -msgid "Connection to OctoPrint works correctly." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:214 -msgid "I wasn't able to connect to OctoPrint (" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:215 -msgid "). Check hostname and OctoPrint version (at least 1.1.0 is required)." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251 -msgid "Open STL/OBJ/AMF…\tCtrl+O" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:251 -msgid "Open a model" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254 -msgid "&Load Config…\tCtrl+L" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:254 -msgid "Load exported configuration file" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257 -msgid "&Export Config…\tCtrl+E" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:257 -msgid "Export current configuration to file" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260 -msgid "&Load Config Bundle…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:260 -msgid "Load presets from a bundle" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263 -msgid "&Export Config Bundle…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:263 -msgid "Export all presets to file" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268 -msgid "Q&uick Slice…\tCtrl+U" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:268 -msgid "Slice a file into a G-code" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274 -msgid "Quick Slice and Save &As…\tCtrl+Alt+U" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:274 -msgid "Slice a file into a G-code, save as" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280 -msgid "&Repeat Last Quick Slice\tCtrl+Shift+U" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:280 -msgid "Repeat last quick slice" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287 -msgid "Slice to SV&G…\tCtrl+G" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:287 -msgid "Slice file to a multi-layer SVG" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291 -msgid "(&Re)Slice Now\tCtrl+S" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:291 -msgid "Start new slicing process" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294 -msgid "Repair STL file…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:294 -msgid "Automatically repair an STL file" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299 -msgid "Preferences…\tCtrl+," -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:299 -msgid "Application preferences" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304 -msgid "&Quit" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:304 -msgid "Quit Slic3r" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314 -msgid "Export G-code..." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:314 -msgid "Export current plate as G-code" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317 -msgid "Export plate as STL..." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:317 -msgid "Export current plate as STL" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320 -msgid "Export plate as AMF..." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:320 -msgid "Export current plate as AMF" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323 -msgid "Export plate as 3MF..." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:323 -msgid "Export current plate as 3MF" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336 -msgid "Select &Plater Tab\tCtrl+1" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:336 -msgid "Show the plater" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342 -msgid "Select &Controller Tab\tCtrl+T" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:342 -msgid "Show the printer controller" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350 -msgid "Select P&rint Settings Tab\tCtrl+2" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:350 -msgid "Show the print settings" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353 -msgid "Select &Filament Settings Tab\tCtrl+3" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:353 -msgid "Show the filament settings" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356 -msgid "Select Print&er Settings Tab\tCtrl+4" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:356 -msgid "Show the printer settings" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368 -msgid "Iso" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:368 -msgid "Iso View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:369 -msgid "Top View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:370 -msgid "Bottom View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371 -msgid "Front" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:371 -msgid "Front View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372 -msgid "Rear" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:372 -msgid "Rear View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373 -msgid "Left" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:373 -msgid "Left View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374 -msgid "Right" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:374 -msgid "Right View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380 -msgid "&Configuration " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:380 -msgid "Run Configuration " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385 -msgid "Prusa 3D Drivers" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:385 -msgid "Open the Prusa3D drivers download page in your browser" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388 -msgid "Slic3r++ Releases" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:388 -msgid "Open the Slic3r++ releases page in your browser" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395 -msgid "Slic3r &Website" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:395 -msgid "Open the Slic3r website in your browser" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398 -msgid "Slic3r &Manual" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:398 -msgid "Open the Slic3r manual in your browser" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402 -msgid "System Info" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:402 -msgid "Show system information" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405 -msgid "Report an Issue" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:405 -msgid "Report an issue on the Slic3r Slic3r++" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408 -msgid "&About Slic3r" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:408 -msgid "Show about dialog" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:418 -msgid "&File" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:419 -msgid "&Plater" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:420 -msgid "&Object" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:421 -msgid "&Window" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:422 -msgid "&View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:426 -msgid "&Help" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:457 -msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:469 -msgid "No previously sliced file." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474 -msgid "Previously sliced file (" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:474 -msgid ") not found." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:475 -msgid "File Not Found" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -msgid "SVG" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -msgid "G-code" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:514 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1645 -msgid " file as:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528 -msgid "Slicing…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:528 -msgid "Processing " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:548 -msgid " was successfully sliced." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:550 -msgid "Slicing Done!" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:566 -msgid "Select the STL file to repair:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:580 -msgid "Save OBJ file (less prone to coordinate errors than STL) as:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594 -msgid "Your file was repaired." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:594 -msgid "Repair" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:605 -msgid "Save configuration as:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:623 -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:667 -msgid "Select configuration to load:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:646 -msgid "Save presets bundle as:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:687 -#, perl-format -msgid "%d presets successfully imported." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749 -msgid "You have unsaved changes " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:749 -msgid ". Discard changes and continue anyway?" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm:750 -msgid "Unsaved Presets" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:104 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2124 -msgid "3D" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:138 -msgid "2D" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:157 -msgid "Layers" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:177 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:195 -msgid "Add…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:179 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:197 -msgid "Delete All" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:180 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:198 -msgid "Arrange" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:182 -msgid "More" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:183 -msgid "Fewer" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:185 -msgid "45° ccw" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:186 -msgid "45° cw" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:187 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:203 -msgid "Scale…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:188 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:204 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099 -msgid "Split" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:189 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:205 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102 -msgid "Cut…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:191 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:206 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106 -msgid "Settings…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:192 -msgid "Layer Editing" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:207 -msgid "Layer editing" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:220 -msgid "Name" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:221 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900 -msgid "Copies" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:222 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068 -msgid "Scale" -msgstr "缩放" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:236 -msgid "Export G-code…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:237 -msgid "Slice now" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:238 -msgid "Print…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:239 -msgid "Send to printer" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:240 -msgid "Export STL…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:367 -msgid "Print settings" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:369 -msgid "Printer" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:398 -msgid "Info" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:409 -msgid "Volume" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:410 -msgid "Facets" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:411 -msgid "Materials" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:412 -msgid "Manifold" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:438 -msgid "Sliced Info" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:447 -msgid "Used Filament (m)" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:448 -msgid "Used Filament (mm³)" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:449 -msgid "Used Filament (g)" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:451 -msgid "Estimated printing time" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629 -msgid "Loading…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:629 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:643 -msgid "Processing input file\n" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:663 -msgid "" -"This file contains several objects positioned at multiple heights. Instead " -"of considering them as multiple objects, should I consider\n" -"this file as a single object having multiple parts?\n" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:666 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:683 -msgid "Multi-part object detected" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:680 -msgid "" -"Multiple objects were loaded for a multi-material printer.\n" -"Instead of considering them as multiple objects, should I consider\n" -"these files to represent a single object having multiple parts?\n" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:692 -msgid "Loaded " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:744 -msgid "" -"Your object appears to be too large, so it was automatically scaled down to " -"fit your print bed." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:745 -msgid "Object too large?" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:900 -msgid "Enter the number of copies of the selected object:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:927 -msgid "" -"\n" -"Non-positive value." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:928 -msgid "" -"\n" -"Not a numeric value." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:929 -msgid "Slic3r Error" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950 -msgid "Enter the rotation angle:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950 -msgid "Rotate around " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:950 -msgid "Invalid rotation angle entered" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1030 -#, perl-format -msgid "Enter the new size for the selected object (print bed: %smm):" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035 -msgid "Scale along " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1031 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061 -msgid "Invalid scaling value entered" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1035 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1061 -#, no-perl-format -msgid "Enter the scale % for the selected object:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1056 -msgid "Enter the new max size for the selected object:" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1112 -msgid "" -"The selected object can't be split because it contains more than one volume/" -"material." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1121 -msgid "" -"The selected object couldn't be split because it contains only one part." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1286 -msgid "Slicing cancelled" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1300 -msgid "Another export job is currently running." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1445 -msgid "File added to print queue" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1448 -msgid "Sending G-code file to the OctoPrint server..." -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1451 -msgid "G-code file exported to " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1454 -msgid "Export failed" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1524 -msgid "G-code file successfully uploaded to the OctoPrint server" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1526 -msgid "Error while uploading to the OctoPrint server: " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1539 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1581 -msgid "STL file exported to " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1592 -msgid "AMF file exported to " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1596 -msgid "Error exporting AMF file " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1608 -msgid "3MF file exported to " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1612 -msgid "Error exporting 3MF file " -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1958 -#, perl-format -msgid "%d (%d shells)" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1960 -#, perl-format -msgid "Auto-repaired (%d errors)" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1965 -#, perl-format -msgid "" -"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d " -"facets reversed, %d backwards edges" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:1970 -msgid "Yes" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2021 -msgid "Remove the selected object" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024 -msgid "Increase copies" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2024 -msgid "Place one more copy of the selected object" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027 -msgid "Decrease copies" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2027 -msgid "Remove one copy of the selected object" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030 -msgid "Set number of copies…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2030 -msgid "Change the number of copies of the selected object" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034 -msgid "Rotate 45° clockwise" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2034 -msgid "Rotate the selected object by 45° clockwise" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037 -msgid "Rotate 45° counter-clockwise" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2037 -msgid "Rotate the selected object by 45° counter-clockwise" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042 -msgid "Rotate" -msgstr "旋转" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2042 -msgid "Rotate the selected object by an arbitrary angle" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044 -msgid "Around X axis…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2044 -msgid "Rotate the selected object by an arbitrary angle around X axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047 -msgid "Around Y axis…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2047 -msgid "Rotate the selected object by an arbitrary angle around Y axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050 -msgid "Around Z axis…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2050 -msgid "Rotate the selected object by an arbitrary angle around Z axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055 -msgid "Mirror" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2055 -msgid "Mirror the selected object" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089 -msgid "Along X axis…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2057 -msgid "Mirror the selected object along the X axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092 -msgid "Along Y axis…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2060 -msgid "Mirror the selected object along the Y axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095 -msgid "Along Z axis…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2063 -msgid "Mirror the selected object along the Z axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2068 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084 -msgid "Scale the selected object along a single axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086 -msgid "Uniformly…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2070 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2086 -msgid "Scale the selected object along the XYZ axes" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2073 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2089 -msgid "Scale the selected object along the X axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2076 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2092 -msgid "Scale the selected object along the Y axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2079 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2095 -msgid "Scale the selected object along the Z axis" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2084 -msgid "Scale to size" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2099 -msgid "Split the selected object into individual parts" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2102 -msgid "Open the 3D cutting tool" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2106 -msgid "Open the object editor dialog" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110 -msgid "Reload from Disk" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2110 -msgid "Reload the selected file from Disk" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113 -msgid "Export object as STL…" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm:2113 -msgid "Export this single object as STL file" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:131 -msgid "What do you want to print today? â„¢" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm:132 -msgid "Drag your objects here" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:63 -msgid "1 Layer" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:65 -msgid "View" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:75 -msgid "Show" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:78 -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:79 -msgid "Feature types" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:96 -msgid "Retractions" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:97 -msgid "Unretractions" -msgstr "" - -#: c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm:98 -msgid "Shells" -msgstr "" - -#~ msgid "Rectilinear" -#~ msgstr "折线å¼" - -#~ msgid "Concentric" -#~ msgstr "åŒè½´å¼" - -#~ msgid "Hilbert Curve" -#~ msgstr "希尔伯特曲线å¼" - -#~ msgid "Archimedean Chords" -#~ msgstr "阿基米德和铉å¼" - -# Not so sure about how to put "Octagram Spiral" in Chinese. Or maybe "Octagram螺旋“ is good. -#~ msgid "Octagram Spiral" -#~ msgstr "八角星螺旋å¼" - -#~ msgid "Has heated bed" -#~ msgstr "有热床" - -#~ msgid "" -#~ "Unselecting this will suppress automatic generation of bed heating gcode." -#~ msgstr "ä¸å‹¾é€‰æ­¤é¡¹å°†ä¸è‡ªåŠ¨ç”ŸæˆæœºåºŠåŠ çƒ­çš„G代ç ã€‚" - -#~ msgid "Bed temperature for layers after the first one." -#~ msgstr "第一层之åŽçš„æœºåºŠæ¸©åº¦ã€‚" - -#~ msgid "Bottom infill pattern" -#~ msgstr "底部填充样å¼" - -#~ msgid "" -#~ "Infill pattern for bottom layers. This only affects the external visible " -#~ "layer, and not its adjacent solid shells." -#~ msgstr "底层的填充样å¼ã€‚此项仅影å“外部å¯è§å±‚,ä¸å½±å“其相邻的å¯é å±‚。" - -#~ msgid "Speed > Acceleration" -#~ msgstr "速度 > 加速度" - -#~ msgid "Brim connections width" -#~ msgstr "裙边连接宽度" - -#~ msgid "" -#~ "If set to a positive value, straight connections will be built on the " -#~ "first layer between adjacent objects." -#~ msgstr "如果设为正值,第一层相邻的物体间将建立直接连接。" - -#~ msgid "Exterior brim width" -#~ msgstr "外围裙边宽度" - -#~ msgid "" -#~ "This disables the fan completely for the first N layers to aid in the " -#~ "adhesion of media to the bed. (default 3)" -#~ msgstr "此项在打å°å‰N层时完全ç¦ç”¨é£Žæ‰‡ï¼Œä»¥å¸®åŠ©ææ–™æ›´å¥½åœ°é»åˆçƒ­åºŠã€‚(默认3)" - -#~ msgid "↳ external" -#~ msgstr "↳外部的" - -#~ msgid "External perimeters extrusion width" -#~ msgstr "外围轮廓挤出宽度" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for external " -#~ "perimeters. If auto is chosen, a value will be used that maximizes " -#~ "accuracy of the external visible surfaces. If expressed as percentage " -#~ "(for example 200%) it will be computed over layer height." -#~ msgstr "" -#~ "该值若éž0,æ„为外围轮廓的手动挤出宽度。如果选择自动,将使用一个使得外围å¯" -#~ "è§å±‚精度最高的值。如果表示为百分数(如200%),则该值以层高为基准。" - -#~ msgid "External perimeters speed" -#~ msgstr "外围轮廓速度" - -#~ msgid "" -#~ "This separate setting will affect the speed of external perimeters (the " -#~ "visible ones). If expressed as percentage (for example: 80%) it will be " -#~ "calculated on the perimeters speed setting above." -#~ msgstr "" -#~ "è¯¥å‚æ•°å°†å½±å“外围å¯è§å±‚的打å°é€Ÿåº¦ã€‚如果表示为百分数(如80%),数值将以上é¢" -#~ "è®¾ç½®çš„å¤–å›´é€Ÿåº¦å‚æ•°ä¸ºåŸºå‡†ã€‚" - -#~ msgid "Add more perimeters when needed for avoiding gaps in sloping walls." -#~ msgstr "为é¿å…在打å°å€¾æ–œçš„å¤–å¢™ä¸­äº§ç”Ÿé—´éš™ï¼Œæœ‰å¿…è¦æ—¶å¢žåŠ æ›´å¤šçš„è½®å»“ã€‚" - -#~ msgid "" -#~ "The extruder to use (unless more specific extruder settings are " -#~ "specified)." -#~ msgstr "ä½¿ç”¨çš„æŒ¤å‡ºå¤´ï¼ˆé™¤éžæŒ‡æ˜Žäº†æ›´å¤šè¯¦ç»†çš„æŒ¤å‡ºå¤´å‚数)。" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width. If " -#~ "expressed as percentage (for example: 230%) it will be computed over " -#~ "layer height." -#~ msgstr "" -#~ "该值若为éž0,则代表手动挤出宽度。如果设为百分数(如230%),则值是以层高为" -#~ "基准。" - -#~ msgid "Fill gaps" -#~ msgstr "å¡«å……é—´éš™" - -#~ msgid "" -#~ "If this is enabled, gaps will be filled with single passes. Enable this " -#~ "for better quality, disable it for shorter printing times." -#~ msgstr "" -#~ "如果勾选该项,间隙将被å•通é“填充。å¯ç”¨è¯¥é¡¹å¯ä¼˜åŒ–打å°è´¨é‡ï¼Œç¦ç”¨åˆ™å¯ä»¥èŠ‚çœæ—¶" -#~ "间。" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for first " -#~ "layer. You can use this to force fatter extrudates for better adhesion. " -#~ "If expressed as percentage (for example 120%) it will be computed over " -#~ "first layer height." -#~ msgstr "" -#~ "若为éž0,则表示首层手动挤出宽度。å¯ç”¨äºŽå¼ºåˆ¶æ›´å®½çš„æŒ¤å‡ºé‡ä¾¿äºŽé»ç€ã€‚如果表示" -#~ "为百分数(如120%),则该值是相对于首层高度。" - -#~ msgid "↳ gaps" -#~ msgstr "↳ é—´éš™" - -#~ msgid "" -#~ "Speed for filling gaps. Since these are usually single lines you might " -#~ "want to use a low speed for better sticking. If expressed as percentage " -#~ "(for example: 80%) it will be calculated on the infill speed setting " -#~ "above." -#~ msgstr "" -#~ "填充间隙的速度。由于这些通常是独立的直线,所以尽é‡ä½¿ç”¨ä½Žé€Ÿæ¥ä¿è¯é»ç€ã€‚如果" -#~ "表示为百分数(如80%),则以上é¢è®¾ç½®çš„填充速度为基准。" - -#~ msgid "Use native G-code arcs" -#~ msgstr "使用本地的G代ç å¼§çº¿" - -#~ msgid "" -#~ "This experimental feature tries to detect arcs from segments and " -#~ "generates G2/G3 arc commands instead of multiple straight G1 commands." -#~ msgstr "" -#~ "这个试验性能å°è¯•ä»Žæ®µä¸­ä¾¦æµ‹å‡ºå¼§çº¿ï¼Œç”Ÿæˆ G2/G3 å¼§çº¿æŒ‡ä»¤ï¼Œè€Œä¸æ˜¯ç”Ÿæˆå¤šä¸ªG1ç›´" -#~ "线指令。" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for infill. " -#~ "You may want to use fatter extrudates to speed up the infill and make " -#~ "your parts stronger. If expressed as percentage (for example 90%) it will " -#~ "be computed over layer height." -#~ msgstr "" -#~ "该值若为éž0,则表示填充的手动挤出宽度。å¯ä½¿ç”¨è¾ƒå®½çš„æŒ¤å‡ºæ¥åŠ é€Ÿå¡«å……å¹¶ä½¿éƒ¨ä»¶" -#~ "牢固。如果表示为百分数(如90%),则该值以层高为基准。" - -#~ msgid "Speed for printing the internal fill." -#~ msgstr "打å°å†…部填充的速度。" - -#~ msgid "Interior brim width" -#~ msgstr "内部裙边宽度" - -#~ msgid "" -#~ "Horizontal width of the brim that will be printed inside object holes on " -#~ "the first layer." -#~ msgstr "第一层打å°äºŽç‰©ä»¶å­”洞内部的裙边宽度。" - -#~ msgid "" -#~ "During multi-extruder prints, this option will drop the temperature of " -#~ "the inactive extruders to prevent oozing. It will enable a tall skirt " -#~ "automatically and move extruders outside such skirt when changing " -#~ "temperatures." -#~ msgstr "" -#~ "在多挤出头的打å°è¿‡ç¨‹ä¸­ï¼Œè¯¥é€‰é¡¹å°†é™ä½Žéžæ´»è·ƒæŒ¤å‡ºå¤´çš„æ¸©åº¦ä»¥é¿å…滴垂现象。å¯åЍ" -#~ "å®ƒå°†è‡ªåŠ¨ä½¿èƒ½ä¸€ä¸ªé«˜çŽ¯è¾¹ï¼Œå¹¶åœ¨æ”¹å˜æ¸©åº¦æ—¶å°†æŒ¤å‡ºå¤´ç§»é™¤è¯¥çŽ¯è¾¹ã€‚" - -#~ msgid "Overridable options" -#~ msgstr "å¯è¦†ç›–的选项" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for " -#~ "perimeters. You may want to use thinner extrudates to get more accurate " -#~ "surfaces. If expressed as percentage (for example 200%) it will be " -#~ "computed over layer height." -#~ msgstr "" -#~ "该值若éž0,则表示轮廓的手动基础宽度。å¯ä»¥ä½¿ç”¨æ›´ç»†çš„æŒ¤å‡ºå®½åº¦æ¥èŽ·å¾—æ›´ç²¾ç¡®çš„" -#~ "表é¢ã€‚如果表示为百分数(如200%),则该值以层高为基准。" - -#~ msgid "Speed for perimeters (contours, aka vertical shells)." -#~ msgstr "轮廓的打å°é€Ÿåº¦ï¼ˆè½®å»“,åˆå垂直外壳)。" - -#~ msgid "" -#~ "If you want to process the output G-code through custom scripts, just " -#~ "list their absolute paths here. Separate multiple scripts on individual " -#~ "lines. Scripts will be passed the absolute path to the G-code file as the " -#~ "first argument, and they can access the Slic3r config settings by reading " -#~ "environment variables." -#~ msgstr "" -#~ "如果你想è¦é€šè¿‡è‡ªå®šä¹‰è„šæœ¬æ¥å¤„ç†è¾“出G代ç ï¼Œåœ¨è¿™é‡Œåˆ—出它们的ç»å¯¹è·¯å¾„å³å¯ã€‚å°†" -#~ "多个脚本分行输入。脚本的ç»å¯¹è·¯å¾„å°†è¢«ä»¥ç¬¬ä¸€ä¸ªå‚æ•°ä¼ é€’ç»™Gä»£ç æ–‡ä»¶ï¼Œè€Œä¸”它们" -#~ "å¯ä»¥é€šè¿‡è¯»å–环境å˜é‡æ¥èŽ·å–Slic3rçš„é…ç½®å‚æ•°ã€‚" - -#~ msgid "Pressure advance" -#~ msgstr "压力高级设置" - -#~ msgid "" -#~ "When set to a non-zero value, this experimental option enables pressure " -#~ "regulation. It's the K constant for the advance algorithm that pushes " -#~ "more or less filament upon speed changes. It's useful for Bowden-tube " -#~ "extruders. Reasonable values are in range 0-10." -#~ msgstr "" -#~ "若为éž0,该试验选项å¯ç”¨åŽ‹åŠ›è°ƒèŠ‚ã€‚è¯¥å€¼ä¸ºä¸€ä¸ªé«˜çº§ç®—æ³•çš„K常数。这个算法根æ®é€Ÿ" -#~ "度å˜åŒ–æ¥æ”¹å˜æŽ¨åЍ䏿–™å¤šå°‘。适用于é²ç™»ç®¡æŒ¤å‡ºå¤´ã€‚åˆç†çš„值范围是0-10." - -#~ msgid "Raft offset" -#~ msgstr "ç­åç½®" - -#~ msgid "Horizontal margin between object base layer and raft contour." -#~ msgstr "物体基层和ç­è½®å»“之间的水平è·ç¦»ã€‚" - -#~ msgid "Resolution (deprecated)" -#~ msgstr "精度(ä¸èµžæˆ)" - -#~ msgid "" -#~ "The speed for retractions (it only applies to the extruder motor). If you " -#~ "use the Firmware Retraction option, please note this value still affects " -#~ "the auto-speed pressure regulator." -#~ msgstr "" -#~ "回缩速度(仅适用于挤出头电机)。如果试用了固件回缩选项,请注æ„该值ä»å½±å“自" -#~ "动速度电压调节器。" - -#~ msgid "↳ small" -#~ msgstr "↳ å°" - -#~ msgid "" -#~ "This separate setting will affect the speed of perimeters having radius " -#~ "<= 6.5mm (usually holes). If expressed as percentage (for example: 80%) " -#~ "it will be calculated on the perimeters speed setting above." -#~ msgstr "" -#~ "è¯¥å‚æ•°å½±å“åŠå¾„ <= 6.5mm(通常是孔洞)的轮廓打å°é€Ÿåº¦ã€‚如果表示为百分比(如" -#~ "80%),则以上é¢è®¾ç½®çš„轮廓速度为基准计算。" - -#~ msgid "↳ solid" -#~ msgstr "↳ å¯é çš„" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for infill " -#~ "for solid surfaces. If expressed as percentage (for example 90%) it will " -#~ "be computed over layer height." -#~ msgstr "" -#~ "设为éž0值,则表示å¯é è¡¨é¢å¡«å……的手动挤出宽度。若表示为百分数(如90%),将以" -#~ "层高为基准计算。" - -#~ msgid "" -#~ "Speed for printing solid regions (top/bottom/internal horizontal shells). " -#~ "This can be expressed as a percentage (for example: 80%) over the default " -#~ "infill speed above." -#~ msgstr "" -#~ "打å°å¯é åŒºåŸŸçš„速度(顶部的/底部的/内部水平外壳)。以百分数(如80%)表示," -#~ "则以上述的默认填充速度为基准计算。" - -#~ msgid "" -#~ "Temperature difference to be applied when an extruder is not active. " -#~ "Enables a full-height \"sacrificial\" skirt on which the nozzles are " -#~ "periodically wiped." -#~ msgstr "" -#~ "å½“æŒ¤å‡ºå¤´å¤„äºŽéžæ´»è·ƒçŠ¶æ€æ—¶ç”¨åˆ°çš„æ¸©åº¦å·®ã€‚å¯ç”¨ä¸€ä¸ªå…¨é«˜åº¦çš„环边,纯用于定期给喷" -#~ "嘴擦拭。" - -#~ msgid "" -#~ "This start procedure is inserted at the beginning, after bed has reached " -#~ "the target temperature and extruder just started heating, and before " -#~ "extruder has finished heating. If Slic3r detects M104, M109, M140 or M190 " -#~ "in your custom codes, such commands will not be prepended automatically " -#~ "so you're free to customize the order of heating commands and other " -#~ "custom actions. Note that you can use placeholder variables for all " -#~ "Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" " -#~ "command wherever you want." -#~ msgstr "" -#~ "è¯¥æ®µä»£ç æ”¾åœ¨G代ç å¼€å¤´ï¼Œåœ¨çƒ­åºŠè¾¾åˆ°ç›®æ ‡æ¸©åº¦ã€æŒ¤å‡ºå¤´å¼€å§‹åŠ çƒ­åŽï¼ŒæŒ¤å‡ºå¤´å®ŒæˆåŠ " -#~ "çƒ­å‰æ’入。如果其中ä¸åŒ…嫿œ‰M104, M109, M140 或 M190,这段指令就会在Slic3r自" -#~ "动放置的M指令之åŽï¼›å¦åˆ™Slic3rå°†ä¸ä¼šè‡ªåŠ¨ç”ŸæˆM指令,这样你å¯ä»¥è‡ªç”±å®šä¹‰åŠ çƒ­å‘½" -#~ "令和其他自定义动作的顺åºã€‚注æ„å¯ä»¥ä½¿ç”¨å ä½ç¬¦å˜é‡æ›¿ä»£æ‰€æœ‰Slic3r傿•°ï¼Œæ‰€ä»¥ä½ " -#~ "å¯ä»¥æŠŠä¸€ä¸ªâ€œM109 S[ first_layer_temperature ]â€å‘½ä»¤æ”¾åœ¨ä»»æ„处。" - -#~ msgid "The extruder to use when printing support material, raft and skirt." -#~ msgstr "æ‰“å°æ”¯æ’‘ææ–™ã€ç­å’ŒçŽ¯è¾¹æ—¶ä½¿ç”¨çš„æŒ¤å‡ºå¤´ã€‚" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for support " -#~ "material. If expressed as percentage (for example 90%) it will be " -#~ "computed over layer height." -#~ msgstr "" -#~ "设为éž0å€¼ï¼Œè¡¨ç¤ºå¯¹æ”¯æ’‘ææ–™çš„æ‰‹åŠ¨æŒ¤å‡ºå®½åº¦ã€‚å¦‚æžœè¡¨ç¤ºä¸ºç™¾åˆ†æ•°ï¼ˆå¦‚90%),则以层" -#~ "高为基准计算。" - -#~ msgid "" -#~ "The extruder to use when printing support material interface. This " -#~ "affects raft too." -#~ msgstr "æ‰“å°æ”¯æ’‘ææ–™è¡¨é¢æ—¶ä½¿ç”¨çš„æŒ¤å‡ºå¤´ã€‚也影å“ç­ã€‚" - -#~ msgid "↳ interface" -#~ msgstr "↳ 表é¢" - -#~ msgid "Interface Speed" -#~ msgstr "表é¢é€Ÿåº¦" - -#~ msgid "Support material interface speed" -#~ msgstr "æ”¯æ’‘ææ–™è¡¨é¢é€Ÿåº¦" - -# "% o“ format mistake? -#~ msgid "" -#~ "Support material will not be generated for overhangs whose slope angle " -#~ "(90° = vertical) is above the given threshold. In other words, this value " -#~ "represent the most horizontal slope (measured from the horizontal plane) " -#~ "that you can print without support material. Set to a percentage to " -#~ "automatically detect based on some % of overhanging perimeter width " -#~ "instead (recommended)." -#~ msgstr "" -#~ "对于倾斜度(90° = 垂直)高于指定阈值的悬空部ä½ï¼Œä¸ç”Ÿæˆç›¸åº”çš„æ”¯æ’‘ææ–™ã€‚æ¢å¥" -#~ "è¯è¯´ï¼Œè¯¥å€¼è¡¨ç¤ºä¸ç”¨æ”¯æ’‘ææ–™æ‰€èƒ½æ‰“å°çš„æœ€æ°´å¹³çš„角度。设为百分数,则以悬空轮廓" -#~ "宽度的 % o自动计算(推è)。" - -#~ msgid "↳ top solid" -#~ msgstr "↳ 顶部å¯é å±‚" - -#~ msgid "" -#~ "Set this to a non-zero value to set a manual extrusion width for infill " -#~ "for top surfaces. You may want to use thinner extrudates to fill all " -#~ "narrow regions and get a smoother finish. If expressed as percentage (for " -#~ "example 90%) it will be computed over layer height." -#~ msgstr "" -#~ "设为éž0值,表示顶层表é¢å¡«å……的手动挤出宽度。å¯ä»¥ä½¿ç”¨è¾ƒç»†çš„æŒ¤å‡ºå®½åº¦æ¥å¯¹æ‰€æœ‰" -#~ "的狭长区域进行填充并获得较光滑的尾部。如果表示为百分数(如90%),则以层高" -#~ "为基准计算。" - -#~ msgid "" -#~ "Infill pattern for top layers. This only affects the external visible " -#~ "layer, and not its adjacent solid shells." -#~ msgstr "顶层填充样å¼ã€‚ä»…å½±å“外部å¯è§å±‚,ä¸å½±å“其相邻å¯é å±‚。" - -#~ msgid "" -#~ "Speed for printing top solid layers (it only applies to the uppermost " -#~ "external layers and not to their internal solid layers). You may want to " -#~ "slow down this to get a nicer surface finish. This can be expressed as a " -#~ "percentage (for example: 80%) over the solid infill speed above." -#~ msgstr "" -#~ "打å°é¡¶éƒ¨å¯é å±‚的速度(仅适用于最外部的顶层,而éžå®ƒä»¬çš„内部å¯é å¡«å……层)。å¯" -#~ "é™ä½Žè¯¥é€Ÿåº¦å€¼ä»¥èŽ·å¾—è¾ƒå¥½çš„è¡¨é¢å°¾å¤„ç†ã€‚若表示为百分数(如80%),则以å¯é å¡«å……" -#~ "速度为基准计算。" - -#~ msgid "Vibration limit (deprecated)" -#~ msgstr "振动é™åˆ¶(赞æˆ)" - -#~ msgid "" -#~ "This experimental option will slow down those moves hitting the " -#~ "configured frequency limit. The purpose of limiting vibrations is to " -#~ "avoid mechanical resonance. Set zero to disable." -#~ msgstr "" -#~ "该试验选项将å‡ç¼“达到指定频率值的打å°åŠ¨ä½œã€‚ç›®çš„ä¸ºé¿å…机械共振。设为0以ç¦" -#~ "用。" - -#~ msgid "Z full steps/mm" -#~ msgstr "Z全部步数/毫米" - -#~ msgid "" -#~ "Set this to the number of *full* steps (not microsteps) needed for moving " -#~ "the Z axis by 1mm; you can calculate this by dividing the number of " -#~ "microsteps configured in your firmware by the microstepping amount (8, " -#~ "16, 32). Slic3r will round your configured layer height to the nearest " -#~ "multiple of that value in order to ensure the best accuracy. This is most " -#~ "useful for machines with imperial leadscrews or belt-driven Z or for " -#~ "unusual layer heights with metric leadscrews. Set to zero to disable this " -#~ "experimental feature." -#~ msgstr "" -#~ "将该值设为移动Zè½´1毫米所需的*全部*æ­¥æ•°ï¼ˆè€Œä¸æ˜¯ç»†åˆ†ï¼‰ï¼›å¯ä»¥è¿™æ ·è®¡ç®—:把固件" -#~ "中已é…置的细分数除以å€å¢žç³»æ•°ï¼ˆ8,16,32)。Sli3r会把你设置的层高四èˆäº”入到" -#~ "è¯¥å€¼çš„æœ€è¿‘å€æ•°ä»¥ç¡®ä¿ç²¾åº¦ã€‚æ­¤é¡¹è®¾ç½®å¯¹äºŽä½¿ç”¨è‹±åˆ¶ä¸æ ã€çš®å¸¦ä¼ åЍZ轴的机器,或" -#~ "è€…æœºå™¨ä½¿ç”¨å…¬åˆ¶ä¸æ ä¸”层高值特别时比较适用。设为0以ç¦ç”¨è¯¥åŠŸèƒ½ã€‚" - -#~ msgid "Cut" -#~ msgstr "切割" - -#~ msgid "Cut model at the given Z." -#~ msgstr "在给定Z处切割模型。" - -#~ msgid "Cut model in the XY plane into tiles of the specified max size." -#~ msgstr "å°†XYé¢çš„æ¨¡åž‹åˆ‡å‰²æˆæŒ‡å®šæœ€å¤§å°ºå¯¸çš„å°å—。" - -#~ msgid "Cut model at the given X." -#~ msgstr "在指定X处切割模型。" - -#~ msgid "Cut model at the given Y." -#~ msgstr "在指定Y处切割模型。" - -#~ msgid "Export SVG" -#~ msgstr "导出SVG" - -#~ msgid "Export the model as OBJ." -#~ msgstr "将模型以OBJæ ¼å¼å¯¼å‡ºã€‚" - -#~ msgid "Export POV" -#~ msgstr "导出POV" - -# POV-Ray? -#~ msgid "Export the model as POV-Ray definition." -#~ msgstr "" -#~ "将模型以POV-Ray定义导出。(å‚è§å¼€æºå°„线æè¿¹è½¯ä»¶ï¼šhttp://www.povray." -#~ "org/)。" - -#~ msgid "Slice the model and export slices as SVG." -#~ msgstr "切割模型并以SVGæ ¼å¼å¯¼å‡ºåˆ‡ç‰‡ç»“果。" - -#~ msgid "Output Model Info" -#~ msgstr "输出模型信æ¯" - -#~ msgid "Write information about the model to the console." -#~ msgstr "给控制å°å†™å…¥æ¨¡åž‹çš„ä¿¡æ¯ã€‚" - -#~ msgid "Load config file" -#~ msgstr "加载é…置文件" - -#~ msgid "" -#~ "Load configuration from the specified file. It can be used more than once " -#~ "to load options from multiple files." -#~ msgstr "从指定文件加载é…置。å¯å¤šæ¬¡ä½¿ç”¨ä»¥ä»Žå¤šä¸ªæ–‡ä»¶ä¸­åŠ è½½å‚æ•°ã€‚" - -#~ msgid "Output File" -#~ msgstr "输出文件" - -#~ msgid "" -#~ "The file where the output will be written (if not specified, it will be " -#~ "based on the input file)." -#~ msgstr "è¾“å‡ºçš„æ–‡ä»¶ï¼ˆå¦‚æžœæœªæŒ‡å®šï¼Œåˆ™å°†ä¾æ®è¾“入文件)。" - -#~ msgid "Rotation angle around the Z axis in degrees (0-360, default: 0)." -#~ msgstr "绕Z轴旋转角度(0-360,默认:0)。" - -#~ msgid "Rotate around X" -#~ msgstr "绕X轴旋转" - -#~ msgid "Rotation angle around the X axis in degrees (0-360, default: 0)." -#~ msgstr "绕X轴旋转角度(0-360,默认:0)。" - -#~ msgid "Rotate around Y" -#~ msgstr "绕Y轴旋转" - -#~ msgid "Rotation angle around the Y axis in degrees (0-360, default: 0)." -#~ msgstr "绕Y轴旋转角度(0-360,默认:0)。" - -#~ msgid "Save config file" -#~ msgstr "ä¿å­˜é…置文件" - -#~ msgid "Save configuration to the specified file." -#~ msgstr "å°†é…ç½®å‚æ•°ä¿å­˜åˆ°æŒ‡å®šæ–‡ä»¶ã€‚" - -#~ msgid "Scaling factor (default: 1)." -#~ msgstr "缩放比例(默认:1)。" - -#~ msgid "Scale to Fit" -#~ msgstr "缩放到åˆé€‚大å°" - -#~ msgid "Scale to fit the given volume." -#~ msgstr "缩放到适åˆäºŽç»™å®šä½“积。" diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index a6f9deb28..f9849ad54 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,4 +1,9 @@ min_slic3r_version = 1.42.0-alpha6 +0.8.0-rc Updated for the PrusaSlicer 2.0.0-rc release +0.8.0-beta4 Updated SLA profiles +0.8.0-beta3 Updated SLA profiles +0.8.0-beta2 Updated SLA profiles +0.8.0-beta1 Updated SLA profiles 0.8.0-beta Updated SLA profiles 0.8.0-alpha9 Updated SLA and FFF profiles 0.8.0-alpha8 Updated SLA profiles @@ -10,6 +15,7 @@ min_slic3r_version = 1.42.0-alpha 0.4.0-alpha3 Update of SLA profiles 0.4.0-alpha2 First SLA profiles min_slic3r_version = 1.41.3-alpha +0.4.5 Enabled remaining time support for MK2/S/MMU1 0.4.4 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt 0.4.3 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt 0.4.2 Changelog: https://github.com/prusa3d/Slic3r-settings/blob/master/live/PrusaResearch/changelog.txt diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index 2d455ffb6..24d592469 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -8,9 +8,10 @@ full_name = Prusa {technology} Technology Printers # Configuration version of this file. Config file will only be installed, if the config_version differs. # This means, the server may force the Slic3r configuration to be downgraded. -config_version = 0.8.0-beta +config_version = 0.8.0-rc # Where to get the updates from? config_update_url = https://raw.githubusercontent.com/prusa3d/Slic3r-settings/master/live/PrusaResearch/ +changelog_url = http://files.prusa3d.com/?latest=slicer-profiles&lng=%1% # The printer models will be shown by the Configuration Wizard in this order, # also the first model installed & the first nozzle installed will be activated after install. @@ -32,13 +33,13 @@ family = MK3 [printer_model:MK3SMMU2S] name = Original Prusa i3 MK3S MMU2S -variants = 0.4 +variants = 0.4; 0.25; 0.6 technology = FFF family = MK3 [printer_model:MK3MMU2] name = Original Prusa i3 MK3 MMU2 -variants = 0.4 +variants = 0.4; 0.25; 0.6 technology = FFF family = MK3 @@ -56,13 +57,13 @@ family = MK2.5 [printer_model:MK2.5SMMU2S] name = Original Prusa i3 MK2.5S MMU2S -variants = 0.4 +variants = 0.4; 0.25; 0.6 technology = FFF family = MK2.5 [printer_model:MK2.5MMU2] name = Original Prusa i3 MK2.5 MMU2 -variants = 0.4 +variants = 0.4; 0.25; 0.6 technology = FFF family = MK2.5 @@ -1312,7 +1313,7 @@ temperature = 220 inherits = *PET* filament_cost = 27.82 filament_density = 1.27 -filament_notes = "List of manufacturers tested with standard PET print settings:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladec PETG" +filament_notes = "List of manufacturers tested with standard PET print settings:\n\nE3D Edge\nPlasty Mladec PETG" compatible_printers_condition = nozzle_diameter[0]!=0.6 and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) [filament:Prusament PETG] @@ -1327,7 +1328,7 @@ compatible_printers_condition = nozzle_diameter[0]!=0.6 and ! (printer_notes=~/. inherits = *PET06* filament_cost = 27.82 filament_density = 1.27 -filament_notes = "List of manufacturers tested with standard PET print settings:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladec PETG" +filament_notes = "List of manufacturers tested with standard PET print settings:\n\nE3D Edge\nPlasty Mladec PETG" [filament:Prusament PETG 0.6 nozzle] inherits = *PET06* @@ -1551,6 +1552,7 @@ pad_max_merge_distance = 50 pad_wall_height = 0 pad_wall_thickness = 1 pad_wall_slope = 90 +slice_closing_radius = 0.005 support_base_diameter = 3 support_base_height = 1 support_critical_angle = 45 @@ -1592,8 +1594,7 @@ compatible_prints_condition = layer_height == 0.05 exposure_time = 12 initial_exposure_time = 45 initial_layer_height = 0.05 -material_correction_curing = 1,1,1 -material_correction_printing = 1,1,1 +material_correction = 1,1,1 material_notes = [sla_material:*common 0.025*] @@ -1624,15 +1625,10 @@ inherits = *common 0.025* exposure_time = 8 initial_exposure_time = 45 -[sla_material:Jamg He PJHC-30 Orange 0.025] +[sla_material:Prusa Orange Solid 0.025] inherits = *common 0.025* exposure_time = 5 -initial_exposure_time = 35 - -[sla_material:SL1 Orange solid 0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 +initial_exposure_time = 30 ########### Materials 0.05 @@ -1676,30 +1672,25 @@ inherits = *common 0.05* exposure_time = 10 initial_exposure_time = 60 -[sla_material:Jamg He PJHC-00 Yellow 0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 45 - -[sla_material:Jamg He PJHC-19 Skin 0.05] +[sla_material:Prusa Skin Solid 0.05] inherits = *common 0.05* exposure_time = 6 -initial_exposure_time = 45 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-30 Orange 0.05] +[sla_material:Prusa Orange Solid 0.05] inherits = *common 0.05* exposure_time = 7.5 -initial_exposure_time = 45 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-60 Gray 0.05] +[sla_material:Prusa Gray Solid 0.05] inherits = *common 0.05* exposure_time = 6 -initial_exposure_time = 45 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-70 Black 0.05] +[sla_material:Prusa Black Solid 0.05] inherits = *common 0.05* exposure_time = 6 -initial_exposure_time = 45 +initial_exposure_time = 30 [sla_material:Monocure 3D Black Rapid Resin 0.05] inherits = *common 0.05* @@ -1756,129 +1747,109 @@ inherits = *common 0.05* exposure_time = 9 initial_exposure_time = 40 -[sla_material:Jamg He LOC-19 Super Low Odor Skin 0.05] -inherits = *common 0.05* -exposure_time = 7.5 -initial_exposure_time = 40 +## [sla_material:Prusa Skin Super Low Odor 0.05] +## inherits = *common 0.05* +## exposure_time = 7.5 +## initial_exposure_time = 30 -[sla_material:Jamg He LOC-20 Super Low Odor White 0.05] -inherits = *common 0.05* -exposure_time = 6.5 -initial_exposure_time = 40 +## [sla_material:Prusa White Super Low Odor 0.05] +## inherits = *common 0.05* +## exposure_time = 6.5 +## initial_exposure_time = 30 -[sla_material:Jamg He LOC-60 Super Low Odor Grey 0.05] -inherits = *common 0.05* -exposure_time = 6.5 -initial_exposure_time = 40 +## [sla_material:Prusa Grey Super Low Odor 0.05] +## inherits = *common 0.05* +## exposure_time = 6.5 +## initial_exposure_time = 30 [sla_material:Harz Labs Model Resin Cherry 0.05] inherits = *common 0.05* exposure_time = 8 initial_exposure_time = 45 -[sla_material:Jamg He CRX-70C High Tenacity Black 0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 40 +## [sla_material:Prusa Black High Tenacity 0.05] +## inherits = *common 0.05* +## exposure_time = 7 +## initial_exposure_time = 30 -[sla_material:Jamg He MC-2000 Casting Green 0.05] +[sla_material:Prusa Green Casting 0.05] inherits = *common 0.05* exposure_time = 13 -initial_exposure_time = 40 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-00 Solid Yellow 0.05] +## [sla_material:Prusa Yellow Solid 0.05] +## inherits = *common 0.05* +## exposure_time = 7 +## initial_exposure_time = 30 + +[sla_material:Prusa White Solid 0.05] inherits = *common 0.05* exposure_time = 7 -initial_exposure_time = 40 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-20 White 0.05] +## [sla_material:Prusa Green Transparent 0.05] +## inherits = *common 0.05* +## exposure_time = 8 +## initial_exposure_time = 30 + +[sla_material:Prusa Red Transparent 0.05] inherits = *common 0.05* exposure_time = 7 -initial_exposure_time = 45 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-80 Transparent Green 0.05] +[sla_material:Prusa Maroon Solid 0.05] inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 45 +exposure_time = 9 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-80 Transparent Red 0.05] +[sla_material:Prusa Pink Solid 0.05] inherits = *common 0.05* exposure_time = 7 -initial_exposure_time = 45 +initial_exposure_time = 30 -[sla_material:Jamg He PJHC-81 Solid Maroon 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 45 +## [sla_material:Prusa Yellow Flexible 0.05] +## inherits = *common 0.05* +## exposure_time = 9 +## initial_exposure_time = 30 -[sla_material:Jamg He PJHC-90 Solid Pink 0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 40 +## [sla_material:Prusa Clear Flexible 0.05] +## inherits = *common 0.05* +## exposure_time = 9 +## initial_exposure_time = 30 -[sla_material:Jamg He RJHC-00 Yellow Flexible 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 40 +## [sla_material:Prusa White Flexible 0.05] +## inherits = *common 0.05* +## exposure_time = 9 +## initial_exposure_time = 30 -[sla_material:Jamg He RJHC-10 Clear Flexible 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 40 +## [sla_material:Prusa Blue Flexible 0.05] +## inherits = *common 0.05* +## exposure_time = 9 +## initial_exposure_time = 30 -[sla_material:Jamg He RJHC-20 White Flexible 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 40 +## [sla_material:Prusa Black Flexible 0.05] +## inherits = *common 0.05* +## exposure_time = 9 +## initial_exposure_time = 30 -[sla_material:Jamg He RJHC-50 Blue Flexible 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 40 - -[sla_material:Jamg He RJHC-70 Black Flexible 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 40 - -[sla_material:Jamg He RJHC-81 Red Flexible 0.05] -inherits = *common 0.05* -exposure_time = 9 -initial_exposure_time = 40 - -[sla_material:SL1 Orange solid 0.05] -inherits = *common 0.05* -exposure_time = 7.5 -initial_exposure_time = 45 - -[sla_material:SL1 Red transparent 0.05] -inherits = *common 0.05* -exposure_time = 7.5 -initial_exposure_time = 45 +## [sla_material:Prusa Red Flexible 0.05] +## inherits = *common 0.05* +## exposure_time = 9 +## initial_exposure_time = 30 ########### Materials 0.035 -[sla_material:Jamg He PJHC-30 Orange 0.035] +[sla_material:Prusa Orange Solid 0.035] inherits = *common 0.035* exposure_time = 6 -initial_exposure_time = 35 - -[sla_material:SL1 Orange solid 0.035] -inherits = *common 0.035* -exposure_time = 6 -initial_exposure_time = 35 +initial_exposure_time = 30 ########### Materials 0.1 -[sla_material:Jamg He PJHC-30 Orange 0.1] +[sla_material:Prusa Orange Solid 0.1] inherits = *common 0.1* exposure_time = 10 -initial_exposure_time = 45 - -[sla_material:SL1 Orange solid 0.1] -inherits = *common 0.1* -exposure_time = 10 -initial_exposure_time = 45 +initial_exposure_time = 30 [printer:*common*] printer_technology = FFF @@ -1886,12 +1857,12 @@ bed_shape = 0x0,250x0,250x210,0x210 before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n between_objects_gcode = deretract_speed = 0 -end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors +end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors extruder_colour = #FFFF00 extruder_offset = 0x0 gcode_flavor = marlin silent_mode = 0 -remaining_times = 0 +remaining_times = 1 machine_max_acceleration_e = 10000 machine_max_acceleration_extruding = 2000 machine_max_acceleration_retracting = 1500 @@ -1931,7 +1902,7 @@ retract_speed = 35 serial_port = serial_speed = 250000 single_extruder_multi_material = 0 -start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.1.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 toolchange_gcode = use_firmware_retraction = 0 use_relative_e_distances = 1 @@ -1968,7 +1939,7 @@ printer_model = MK2SMM inherits = *multimaterial* end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN -start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG92 E0.0 +start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG92 E0.0 default_print_profile = 0.15mm OPTIMAL [printer:*mm-multi*] @@ -1978,7 +1949,7 @@ end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes. extruder_colour = #FFAA55;#E37BA0;#4ECDD3;#FB7259 nozzle_diameter = 0.4,0.4,0.4,0.4 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN -start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_single_extruder_multi_material_priming}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\n{endif}\nG92 E0.0 +start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_single_extruder_multi_material_priming}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\n{endif}\nG92 E0.0 default_print_profile = 0.15mm OPTIMAL # XXXXXXXXXXXXXXXXX @@ -2046,19 +2017,19 @@ min_layer_height = 0.1 inherits = Original Prusa i3 MK2S printer_model = MK2.5 remaining_times = 1 -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5 0.25 nozzle] inherits = Original Prusa i3 MK2S 0.25 nozzle printer_model = MK2.5 remaining_times = 1 -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5 0.6 nozzle] inherits = Original Prusa i3 MK2S 0.6 nozzle printer_model = MK2.5 remaining_times = 1 -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5 MMU2 Single] inherits = Original Prusa i3 MK2.5; *mm2* @@ -2087,8 +2058,16 @@ machine_min_travel_rate = 0 default_print_profile = 0.15mm OPTIMAL MK2.5 default_filament_profile = Prusament PLA printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2.5\n -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; load to nozzle\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n +end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors + +[printer:Original Prusa i3 MK2.5 MMU2 Single 0.6 nozzle] +inherits = Original Prusa i3 MK2.5S MMU2S Single 0.6 nozzle +printer_model = MK2.5MMU2 + +[printer:Original Prusa i3 MK2.5 MMU2 Single 0.25 nozzle] +inherits = Original Prusa i3 MK2.5S MMU2S Single 0.25 nozzle +printer_model = MK2.5MMU2 [printer:Original Prusa i3 MK2.5 MMU2] inherits = Original Prusa i3 MK2.5; *mm2* @@ -2121,23 +2100,23 @@ single_extruder_multi_material = 1 # to be defined explicitely. nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors\n +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n +end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n [printer:Original Prusa i3 MK2.5S] inherits = Original Prusa i3 MK2.5 printer_model = MK2.5S -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5S 0.25 nozzle] inherits = Original Prusa i3 MK2.5 0.25 nozzle printer_model = MK2.5S -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5S 0.6 nozzle] inherits = Original Prusa i3 MK2.5 0.6 nozzle printer_model = MK2.5S -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0 [printer:Original Prusa i3 MK2.5S MMU2S Single] inherits = Original Prusa i3 MK2.5; *mm2s* @@ -2166,8 +2145,27 @@ machine_min_travel_rate = 0 default_print_profile = 0.15mm OPTIMAL MK2.5 default_filament_profile = Prusament PLA printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2.5\n -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n +end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors + +[printer:Original Prusa i3 MK2.5S MMU2S Single 0.6 nozzle] +inherits = Original Prusa i3 MK2.5S MMU2S Single +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n +max_layer_height = 0.35 +min_layer_height = 0.1 +nozzle_diameter = 0.6 +printer_variant = 0.6 +default_print_profile = 0.20mm NORMAL 0.6 nozzle + +[printer:Original Prusa i3 MK2.5S MMU2S Single 0.25 nozzle] +inherits = Original Prusa i3 MK2.5S MMU2S Single +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\n +max_layer_height = 0.15 +min_layer_height = 0.05 +nozzle_diameter = 0.25 +printer_variant = 0.25 +default_print_profile = 0.10mm DETAIL 0.25 nozzle +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n [printer:Original Prusa i3 MK2.5S MMU2S] inherits = Original Prusa i3 MK2.5; *mm2s* @@ -2200,8 +2198,8 @@ single_extruder_multi_material = 1 # to be defined explicitely. nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors\n +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n +end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n # XXXXXXXXXXXXXXXXX @@ -2210,7 +2208,7 @@ end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG [printer:Original Prusa i3 MK3] inherits = *common* -end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors +end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors machine_max_acceleration_e = 5000,5000 machine_max_acceleration_extruding = 1250,1250 machine_max_acceleration_retracting = 1250,1250 @@ -2232,7 +2230,7 @@ remaining_times = 1 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n retract_lift_below = 209 max_print_height = 210 -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} printer_model = MK3 default_print_profile = 0.15mm QUALITY MK3 @@ -2242,7 +2240,7 @@ nozzle_diameter = 0.25 max_layer_height = 0.15 min_layer_height = 0.05 printer_variant = 0.25 -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} default_print_profile = 0.10mm DETAIL 0.25 nozzle MK3 [printer:Original Prusa i3 MK3 0.6 nozzle] @@ -2256,17 +2254,17 @@ default_print_profile = 0.30mm QUALITY 0.6 nozzle MK3 [printer:Original Prusa i3 MK3S] inherits = Original Prusa i3 MK3 printer_model = MK3S -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} [printer:Original Prusa i3 MK3S 0.25 nozzle] inherits = Original Prusa i3 MK3 0.25 nozzle printer_model = MK3S -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E8.0 F700.0 ; intro line\nG1 X100.0 E12.5 F700.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} [printer:Original Prusa i3 MK3S 0.6 nozzle] inherits = Original Prusa i3 MK3 0.6 nozzle printer_model = MK3S -start_gcode = M115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif} [printer:*mm2*] inherits = Original Prusa i3 MK3 @@ -2296,8 +2294,27 @@ default_filament_profile = Prusament PLA MMU2 inherits = *mm2* single_extruder_multi_material = 0 default_filament_profile = Prusament PLA -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n +end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors + +[printer:Original Prusa i3 MK3 MMU2 Single 0.6 nozzle] +inherits = Original Prusa i3 MK3 MMU2 Single +single_extruder_multi_material = 0 +nozzle_diameter = 0.6 +max_layer_height = 0.40 +min_layer_height = 0.15 +printer_variant = 0.6 +default_print_profile = 0.30mm QUALITY 0.6 nozzle MK3 + +[printer:Original Prusa i3 MK3 MMU2 Single 0.25 nozzle] +inherits = Original Prusa i3 MK3 MMU2 Single +single_extruder_multi_material = 0 +nozzle_diameter = 0.25 +max_layer_height = 0.15 +min_layer_height = 0.05 +printer_variant = 0.25 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 E8.0 F1000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n +default_print_profile = 0.10mm DETAIL 0.25 nozzle MK3 [printer:Original Prusa i3 MK3 MMU2] inherits = *mm2* @@ -2307,31 +2324,60 @@ inherits = *mm2* machine_max_acceleration_e = 8000,8000 nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors\n +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n +end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n [printer:Original Prusa i3 MK3S MMU2S Single] inherits = *mm2s* single_extruder_multi_material = 0 default_filament_profile = Prusament PLA -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n +end_gcode = G1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors + +[printer:Original Prusa i3 MK3S MMU2S Single 0.6 nozzle] +inherits = Original Prusa i3 MK3S MMU2S Single +single_extruder_multi_material = 0 +nozzle_diameter = 0.6 +max_layer_height = 0.40 +min_layer_height = 0.15 +printer_variant = 0.6 +default_print_profile = 0.30mm QUALITY 0.6 nozzle MK3 + +[printer:Original Prusa i3 MK3S MMU2S Single 0.25 nozzle] +inherits = Original Prusa i3 MK3S MMU2S Single +single_extruder_multi_material = 0 +nozzle_diameter = 0.25 +max_layer_height = 0.15 +min_layer_height = 0.05 +printer_variant = 0.25 +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\nG21 ; set units to millimeters\n\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nTc\n; purge line\nG1 X55.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F1400.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n +default_print_profile = 0.10mm DETAIL 0.25 nozzle MK3 [printer:Original Prusa i3 MK3S MMU2S] inherits = *mm2s* machine_max_acceleration_e = 8000,8000 nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 extruder_colour = #FF8000;#DB5182;#00FFFF;#FF4F4F;#9FFF9F -start_gcode = M107\nM115 U3.6.0 ; tell printer latest fw version\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG92 E0.0\n -end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors\n +start_gcode = M115 U3.6.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG21 ; set units to millimeters\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0\n +end_gcode = {if has_wipe_tower}\nG1 E-15.0000 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15.0000 F5800\nG1 E-20.0000 F5500\nG1 E10.0000 F3000\nG1 E-10.0000 F3100\nG1 E10.0000 F3150\nG1 E-10.0000 F3250\nG1 E10.0000 F3300\n{endif}\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n; Lift print head a bit\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors\n + +# 0.6 nozzle MMU printer profile - only for single mode for now + +# [printer:Original Prusa i3 MK3S MMU2S 0.6 nozzle] +# inherits = Original Prusa i3 MK3S MMU2S +# nozzle_diameter = 0.6,0.6,0.6,0.6,0.6 +# max_layer_height = 0.40 +# min_layer_height = 0.15 +# printer_variant = 0.6 +# default_print_profile = 0.30mm QUALITY 0.6 nozzle MK3 [printer:Original Prusa SL1] printer_technology = SLA printer_model = SL1 printer_variant = default -default_sla_material_profile = Jamg He PJHC-30 Orange 0.05 +default_sla_material_profile = Prusa Orange Solid 0.05 default_sla_print_profile = 0.05 Normal -bed_shape = 0.98x1.02,119.98x1.02,119.98x68.02,0.98x68.02 +bed_shape = 0.98x1.02,119.98x1.02,119.98x67.02,0.98x67.02 display_height = 68.04 display_orientation = portrait display_pixels_x = 2560 diff --git a/resources/shaders/gouraud.fs b/resources/shaders/gouraud.fs index f6116eec7..09003f407 100644 --- a/resources/shaders/gouraud.fs +++ b/resources/shaders/gouraud.fs @@ -2,24 +2,21 @@ const vec3 ZERO = vec3(0.0, 0.0, 0.0); +varying vec3 clipping_planes_dots; + // x = tainted, y = specular; varying vec2 intensity; varying vec3 delta_box_min; varying vec3 delta_box_max; -varying float world_z; - uniform vec4 uniform_color; -// x = min z, y = max z; -uniform vec2 z_range; void main() { - if ((world_z < z_range.x) || (z_range.y < world_z)) + if (any(lessThan(clipping_planes_dots, ZERO))) discard; - // if the fragment is outside the print volume -> use darker color vec3 color = (any(lessThan(delta_box_min, ZERO)) || any(greaterThan(delta_box_max, ZERO))) ? mix(uniform_color.rgb, ZERO, 0.3333) : uniform_color.rgb; gl_FragColor = vec4(vec3(intensity.y, intensity.y, intensity.y) + color * intensity.x, uniform_color.a); diff --git a/resources/shaders/gouraud.vs b/resources/shaders/gouraud.vs index 84ae51391..cc54c1c44 100644 --- a/resources/shaders/gouraud.vs +++ b/resources/shaders/gouraud.vs @@ -28,13 +28,18 @@ struct PrintBoxDetection uniform PrintBoxDetection print_box; +// Clipping plane, x = min z, y = max z. Used by the FFF and SLA previews to clip with a top / bottom plane. +uniform vec2 z_range; +// Clipping plane - general orientation. Used by the SLA gizmo. +uniform vec4 clipping_plane; + // x = tainted, y = specular; varying vec2 intensity; varying vec3 delta_box_min; varying vec3 delta_box_max; -varying float world_z; +varying vec3 clipping_planes_dots; void main() { @@ -66,8 +71,11 @@ void main() { delta_box_min = ZERO; delta_box_max = ZERO; - } + } gl_Position = ftransform(); - world_z = vec3(print_box.volume_world_matrix * gl_Vertex).z; -} + // Point in homogenous coordinates. + vec4 world_pos = print_box.volume_world_matrix * gl_Vertex; + // Fill in the scalars for fragment shader clipping. Fragments with any of these components lower than zero are discarded. + clipping_planes_dots = vec3(dot(world_pos, clipping_plane), world_pos.z - z_range.x, z_range.y - world_pos.z); +} diff --git a/sandboxes/slabasebed/slabasebed.cpp b/sandboxes/slabasebed/slabasebed.cpp index 323741609..0c34eb9f5 100644 --- a/sandboxes/slabasebed/slabasebed.cpp +++ b/sandboxes/slabasebed/slabasebed.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -14,7 +15,9 @@ const std::string USAGE_STR = { namespace Slic3r { namespace sla { -Contour3D convert(const Polygons& triangles, coord_t z, bool dir); +Contour3D create_base_pool(const ExPolygons &ground_layer, + const PoolConfig& cfg = PoolConfig()); + Contour3D walls(const Polygon& floor_plate, const Polygon& ceiling, double floor_z_mm, double ceiling_z_mm, double offset_difference_mm, ThrowOnCancel thr); @@ -47,31 +50,38 @@ int main(const int argc, const char *argv[]) { if(ground_slice.empty()) return EXIT_FAILURE; - ExPolygon bottom_plate = ground_slice.front(); - ExPolygon top_plate = bottom_plate; - sla::offset(top_plate, coord_t(3.0/SCALING_FACTOR)); - sla::offset(bottom_plate, coord_t(1.0/SCALING_FACTOR)); +// ExPolygon bottom_plate = ground_slice.front(); +// ExPolygon top_plate = bottom_plate; +// sla::offset(top_plate, coord_t(3.0/SCALING_FACTOR)); +// sla::offset(bottom_plate, coord_t(1.0/SCALING_FACTOR)); bench.start(); - Polygons top_plate_triangles, bottom_plate_triangles; - top_plate.triangulate_p2t(&top_plate_triangles); - bottom_plate.triangulate_p2t(&bottom_plate_triangles); - - auto top_plate_mesh = sla::convert(top_plate_triangles, coord_t(3.0/SCALING_FACTOR), false); - auto bottom_plate_mesh = sla::convert(bottom_plate_triangles, 0, true); - - mesh.merge(bottom_plate_mesh); - mesh.merge(top_plate_mesh); - - sla::Contour3D w = sla::walls(bottom_plate.contour, top_plate.contour, 0, 3, 2.0, [](){}); - - mesh.merge(w); -// sla::create_base_pool(ground_slice, basepool); +// TriangleMesh pool; + sla::PoolConfig cfg; + cfg.min_wall_height_mm = 0; + cfg.edge_radius_mm = 0.2; + mesh = sla::create_base_pool(ground_slice, cfg); + +// mesh.merge(triangulate_expolygon_3d(top_plate, 3.0, false)); +// mesh.merge(triangulate_expolygon_3d(bottom_plate, 0.0, true)); +// mesh = sla::walls(bottom_plate.contour, top_plate.contour, 0, 3, 2.0, [](){}); + bench.stop(); cout << "Base pool creation time: " << std::setprecision(10) << bench.getElapsedSec() << " seconds." << endl; + +// auto point = []() + for(auto& trind : mesh.indices) { + Vec3d p0 = mesh.points[size_t(trind[0])]; + Vec3d p1 = mesh.points[size_t(trind[1])]; + Vec3d p2 = mesh.points[size_t(trind[2])]; + Vec3d p01 = p1 - p0; + Vec3d p02 = p2 - p0; + auto a = p01.cross(p02).norm() / 2.0; + if(std::abs(a) < 1e-6) std::cout << "degenerate triangle" << std::endl; + } // basepool.write_ascii("out.stl"); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 36e8d22fc..6a36bd752 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,7 +12,6 @@ add_subdirectory(poly2tri) add_subdirectory(qhull) add_subdirectory(Shiny) add_subdirectory(semver) -add_subdirectory(imgui) add_subdirectory(test) # Adding libnest2d project for bin packing... @@ -22,33 +21,11 @@ add_subdirectory(libnest2d) include_directories(${LIBDIR}/qhull/src) #message(STATUS ${LIBDIR}/qhull/src) -# ############################################################################## -# Configure rasterizer target -# ############################################################################## - -find_package(PNG QUIET) - -option(RASTERIZER_FORCE_BUILTIN_LIBPNG "Force the usage of builting libpng instead of the system version." OFF) - -if(PNG_FOUND AND NOT RASTERIZER_FORCE_BUILTIN_LIBPNG) - message(STATUS "Using system libpng.") -else() - set(ZLIB_LIBRARY "") - message(WARNING "Using builtin libpng. This can cause crashes on some platforms.") - set(SKIP_INSTALL_ALL 1) # Prevent png+zlib from creating install targets - add_subdirectory(png/zlib) - set(ZLIB_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/png/zlib ${CMAKE_CURRENT_BINARY_DIR}/png/zlib) - include_directories(${ZLIB_INCLUDE_DIR}) - add_subdirectory(png/libpng) - set_target_properties(zlibstatic PROPERTIES POSITION_INDEPENDENT_CODE ON) - set_target_properties(png_static PROPERTIES POSITION_INDEPENDENT_CODE ON) - set(PNG_LIBRARIES png_static zlibstatic) - set(PNG_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR} ${PROJECT_SOURCE_DIR}/png/libpng ${CMAKE_CURRENT_BINARY_DIR}/png/libpng) -endif() - add_subdirectory(libslic3r) if (SLIC3R_GUI) + add_subdirectory(imgui) + if(WIN32) message(STATUS "WXWIN environment set to: $ENV{WXWIN}") elseif(UNIX) @@ -66,6 +43,7 @@ if (SLIC3R_GUI) find_package(wxWidgets 3.0 REQUIRED COMPONENTS base core adv html gl) else () find_package(wxWidgets 3.1 QUIET COMPONENTS base core adv html gl) + if (NOT wxWidgets_FOUND) message(FATAL_ERROR "\nCould not find wxWidgets 3.1.\n" "Hint: On Linux you can set -DSLIC3R_WX_STABLE=1 to use wxWidgets 3.0\n") @@ -80,27 +58,25 @@ if (SLIC3R_GUI) endif() include(${wxWidgets_USE_FILE}) + + add_subdirectory(slic3r) endif() -add_subdirectory(slic3r) # Create a slic3r executable # Process mainfests for various platforms. -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/slic3r.rc.in ${CMAKE_CURRENT_BINARY_DIR}/slic3r.rc @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/slic3r.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/slic3r.manifest @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/PrusaSlicer.rc.in ${CMAKE_CURRENT_BINARY_DIR}/slic3r.rc @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/PrusaSlicer.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/slic3r.manifest @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/osx/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist @ONLY) if (MSVC) - add_library(slic3r SHARED slic3r.cpp slic3r.hpp) + add_library(slic3r SHARED PrusaSlicer.cpp PrusaSlicer.hpp) else () - add_executable(slic3r slic3r.cpp slic3r.hpp) + add_executable(slic3r PrusaSlicer.cpp PrusaSlicer.hpp) endif () -add_library(slic3r_lib STATIC slic3r.cpp slic3r.hpp) +add_library(slic3r_lib STATIC PrusaSlicer.cpp PrusaSlicer.hpp) if (NOT MSVC) - if(SLIC3R_GUI) - set_target_properties(slic3r PROPERTIES OUTPUT_NAME "slic3r-gui") - else() - set_target_properties(slic3r PROPERTIES OUTPUT_NAME "slic3r-console") - endif() + # Binary name on unix like systems (OSX, Linux) + set_target_properties(slic3r PROPERTIES OUTPUT_NAME "slic3r++") endif () target_link_libraries(slic3r libslic3r) @@ -115,7 +91,8 @@ elseif (MSVC) # Manifest is provided through slic3r.rc, don't generate your own. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") else () - target_link_libraries(slic3r ${CMAKE_DL_LIBS} -lstdc++) + # Boost on Raspberry-Pi does not link to pthreads explicitely. + target_link_libraries(slic3r ${CMAKE_DL_LIBS} -lstdc++ Threads::Threads) target_link_libraries(slic3r_lib ${CMAKE_DL_LIBS} -lstdc++) endif () @@ -124,10 +101,14 @@ if (SLIC3R_GUI) target_link_libraries(slic3r libslic3r_gui ${wxWidgets_LIBRARIES}) target_link_libraries(slic3r_lib libslic3r_gui ${wxWidgets_LIBRARIES}) - # Configure libcurl & OpenSSL + # Configure libcurl and its dependencies OpenSSL & zlib find_package(CURL REQUIRED) + if (NOT MSVC) + # Required by libcurl + find_package(ZLIB REQUIRED) + endif() target_include_directories(slic3r PRIVATE ${CURL_INCLUDE_DIRS}) - target_link_libraries(slic3r CURL::libcurl) + target_link_libraries(slic3r ${CURL_LIBRARIES} ${ZLIB_LIBRARIES}) target_include_directories(slic3r_lib PRIVATE ${CURL_INCLUDE_DIRS}) target_link_libraries(slic3r_lib CURL::libcurl) if (SLIC3R_STATIC) @@ -151,6 +132,8 @@ if (SLIC3R_GUI) endif() if (MSVC) + # Generate debug symbols even in release mode. + #target_link_options(slic3r PUBLIC "$<$:/DEBUG>") target_link_libraries(slic3r user32.lib Setupapi.lib OpenGL32.Lib GlU32.Lib) target_link_libraries(slic3r_lib user32.lib Setupapi.lib OpenGL32.Lib GlU32.Lib) elseif (MINGW) @@ -168,15 +151,19 @@ endif () # On Windows, a shim application is required to produce a console / non console version of the Slic3r application. # Also the shim may load the Mesa software OpenGL renderer if the default renderer does not support OpenGL 2.0 and higher. if (MSVC) - add_executable(slic3r_app_gui WIN32 slic3r_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/slic3r.rc) + add_executable(slic3r_app_gui WIN32 PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/slic3r.rc) + # Generate debug symbols even in release mode. + #target_link_options(slic3r_app_gui PUBLIC "$<$:/DEBUG>") target_compile_definitions(slic3r_app_gui PRIVATE -DSLIC3R_WRAPPER_NOCONSOLE) add_dependencies(slic3r_app_gui slic3r) - set_target_properties(slic3r_app_gui PROPERTIES OUTPUT_NAME "slic3r") + set_target_properties(slic3r_app_gui PROPERTIES OUTPUT_NAME "slic3r++") - add_executable(slic3r_app_console slic3r_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/slic3r.rc) + add_executable(slic3r_app_console PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/slic3r.rc) + # Generate debug symbols even in release mode. + #target_link_options(slic3r_app_console PUBLIC "$<$:/DEBUG>") target_compile_definitions(slic3r_app_console PRIVATE -DSLIC3R_WRAPPER_CONSOLE) add_dependencies(slic3r_app_console slic3r) - set_target_properties(slic3r_app_console PROPERTIES OUTPUT_NAME "slic3r-console") + set_target_properties(slic3r_app_console PROPERTIES OUTPUT_NAME "slic3r++_console") endif () @@ -205,7 +192,7 @@ if (MSVC) ) endif () elseif (XCODE) - # Because of Debug/Release/etc. configurations (similar to MSVC) the slic3r binary is located in an extra level + # Because of Debug/Release/etc. configurations (similar to MSVC) the slic3r binary is located in an extra level add_custom_command(TARGET slic3r POST_BUILD COMMAND ln -sf "${SLIC3R_RESOURCES_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/resources" COMMENT "Symlinking the resources directory into the build tree" diff --git a/src/slic3r.cpp b/src/PrusaSlicer.cpp similarity index 95% rename from src/slic3r.cpp rename to src/PrusaSlicer.cpp index 7b37ba56c..90253cf38 100644 --- a/src/slic3r.cpp +++ b/src/PrusaSlicer.cpp @@ -6,10 +6,12 @@ #define NOMINMAX #include #include - // Let the NVIDIA and AMD know we want to use their graphics card - // on a dual graphics card system. - __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; - __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; + #ifdef SLIC3R_GUI + // Let the NVIDIA and AMD know we want to use their graphics card + // on a dual graphics card system. + __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; + __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; + #endif /* SLIC3R_GUI */ #endif /* WIN32 */ #include @@ -37,9 +39,12 @@ #include "libslic3r/Format/OBJ.hpp" #include "libslic3r/Utils.hpp" -#include "slic3r.hpp" -#include "slic3r/GUI/GUI.hpp" -#include "slic3r/GUI/GUI_App.hpp" +#include "PrusaSlicer.hpp" + +#ifdef SLIC3R_GUI + #include "slic3r/GUI/GUI.hpp" + #include "slic3r/GUI/GUI_App.hpp" +#endif /* SLIC3R_GUI */ using namespace Slic3r; @@ -361,6 +366,14 @@ int CLI::run(int argc, char **argv) std::string outfile = m_config.opt_string("output"); Print fff_print; SLAPrint sla_print; + + sla_print.set_status_callback( + [](const PrintBase::SlicingStatus& s) + { + if(s.percent >= 0) // FIXME: is this sufficient? + printf("%3d%s %s\n", s.percent, "% =>", s.text.c_str()); + }); + PrintBase *print = (printer_technology == ptFFF) ? static_cast(&fff_print) : static_cast(&sla_print); if (! m_config.opt_bool("dont_arrange")) { //FIXME make the min_object_distance configurable. @@ -389,9 +402,9 @@ int CLI::run(int argc, char **argv) outfile_final = fff_print.print_statistics().finalize_output_path(outfile); } else { outfile = sla_print.output_filepath(outfile); - //FIXME Tamas, please port it to miniz - // sla_print.export_raster(outfile); - outfile_final = sla_print.print_statistics().finalize_output_path(outfile); + // We need to finalize the filename beforehand because the export function sets the filename inside the zip metadata + outfile_final = sla_print.print_statistics().finalize_output_path(outfile); + sla_print.export_raster(outfile_final); } if (outfile != outfile_final && Slic3r::rename_file(outfile, outfile_final) != 0) { boost::nowide::cerr << "Renaming file " << outfile << " to " << outfile_final << " failed" << std::endl; @@ -440,7 +453,7 @@ int CLI::run(int argc, char **argv) } if (start_gui) { -#if 1 +#ifdef SLIC3R_GUI // #ifdef USE_WX GUI::GUI_App *gui = new GUI::GUI_App(); // gui->autosave = m_config.opt_string("autosave"); @@ -469,12 +482,12 @@ int CLI::run(int argc, char **argv) gui->mainframe->load_config(m_extra_config); }); return wxEntry(argc, argv); -#else +#else /* SLIC3R_GUI */ // No GUI support. Just print out a help. this->print_help(false); // If started without a parameter, consider it to be OK, otherwise report an error code (no action etc). return (argc == 0) ? 0 : 1; -#endif +#endif /* SLIC3R_GUI */ } return 0; @@ -555,8 +568,14 @@ bool CLI::setup(int argc, char **argv) void CLI::print_help(bool include_print_options, PrinterTechnology printer_technology) const { boost::nowide::cout - << "Slic3r++ " << SLIC3R_BUILD << std::endl - << "https://github.com/prusa3d/Slic3r" << std::endl << std::endl + << SLIC3R_BUILD_ID << " " << "based on Slic3r" +#ifdef SLIC3R_GUI + << " (with GUI support)" +#else /* SLIC3R_GUI */ + << " (without GUI support)" +#endif /* SLIC3R_GUI */ + << std::endl + << "https://github.com/supermerill/slic3r" << std::endl << std::endl << "Usage: slic3r [ ACTIONS ] [ TRANSFORM ] [ OPTIONS ] [ file.stl ... ]" << std::endl << std::endl << "Actions:" << std::endl; @@ -609,7 +628,7 @@ std::string CLI::output_filepath(const Model &model, IO::ExportFormat format) co { std::string ext; switch (format) { - case IO::AMF: ext = ".amf"; break; + case IO::AMF: ext = ".zip.amf"; break; case IO::OBJ: ext = ".obj"; break; case IO::STL: ext = ".stl"; break; case IO::TMF: ext = ".3mf"; break; diff --git a/src/slic3r.hpp b/src/PrusaSlicer.hpp similarity index 100% rename from src/slic3r.hpp rename to src/PrusaSlicer.hpp diff --git a/src/slic3r_app_msvc.cpp b/src/PrusaSlicer_app_msvc.cpp similarity index 86% rename from src/slic3r_app_msvc.cpp rename to src/PrusaSlicer_app_msvc.cpp index 48c166406..c100f8fd9 100644 --- a/src/slic3r_app_msvc.cpp +++ b/src/PrusaSlicer_app_msvc.cpp @@ -6,14 +6,20 @@ #include #include #include -// Let the NVIDIA and AMD know we want to use their graphics card -// on a dual graphics card system. -__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; -__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; + +#ifdef SLIC3R_GUI + // Let the NVIDIA and AMD know we want to use their graphics card + // on a dual graphics card system. + __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; + __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; +#endif /* SLIC3R_GUI */ #include #include -#include + +#ifdef SLIC3R_GUI + #include +#endif /* SLIC3R_GUI */ #include #include @@ -23,6 +29,7 @@ __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; #include +#ifdef SLIC3R_GUI class OpenGLVersionCheck { public: @@ -188,6 +195,7 @@ protected: }; bool OpenGLVersionCheck::message_pump_exit = false; +#endif /* SLIC3R_GUI */ extern "C" { typedef int (__stdcall *Slic3rMainFunc)(int argc, wchar_t **argv); @@ -206,13 +214,33 @@ int wmain(int argc, wchar_t **argv) std::vector argv_extended; argv_extended.emplace_back(argv[0]); + +#ifdef SLIC3R_GUI // Here one may push some additional parameters based on the wrapper type. - for (int i = 1; i < argc; ++ i) + bool force_mesa = false; +#endif /* SLIC3R_GUI */ + for (int i = 1; i < argc; ++ i) { +#ifdef SLIC3R_GUI + if (wcscmp(argv[i], L"--sw-renderer") == 0) + force_mesa = true; + else if (wcscmp(argv[i], L"--no-sw-renderer") == 0) + force_mesa = false; +#endif /* SLIC3R_GUI */ argv_extended.emplace_back(argv[i]); + } argv_extended.emplace_back(nullptr); +#ifdef SLIC3R_GUI OpenGLVersionCheck opengl_version_check; - bool load_mesa = ! opengl_version_check.load_opengl_dll() || ! opengl_version_check.is_version_greater_or_equal_to(2, 0); + bool load_mesa = + // Forced from the command line. + force_mesa || + // Running over a rempote desktop, and the RemoteFX is not enabled, therefore Windows will only provide SW OpenGL 1.1 context. + // In that case, use Mesa. + ::GetSystemMetrics(SM_REMOTESESSION) || + // Try to load the default OpenGL driver and test its context version. + ! opengl_version_check.load_opengl_dll() || ! opengl_version_check.is_version_greater_or_equal_to(2, 0); +#endif /* SLIC3R_GUI */ wchar_t path_to_exe[MAX_PATH + 1] = { 0 }; ::GetModuleFileNameW(nullptr, path_to_exe, MAX_PATH); @@ -223,6 +251,7 @@ int wmain(int argc, wchar_t **argv) _wsplitpath(path_to_exe, drive, dir, fname, ext); _wmakepath(path_to_exe, drive, dir, nullptr, nullptr); +#ifdef SLIC3R_GUI // https://wiki.qt.io/Cross_compiling_Mesa_for_Windows // http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/ if (load_mesa) { @@ -237,6 +266,8 @@ int wmain(int argc, wchar_t **argv) } else printf("MESA OpenGL library was loaded sucessfully\n"); } +#endif /* SLIC3R_GUI */ + wchar_t path_to_slic3r[MAX_PATH + 1] = { 0 }; wcscpy(path_to_slic3r, path_to_exe); @@ -262,5 +293,5 @@ int wmain(int argc, wchar_t **argv) return -1; } // argc minus the trailing nullptr of the argv - return slic3r_main(argv_extended.size() - 1, argv_extended.data()); + return slic3r_main((int)argv_extended.size() - 1, argv_extended.data()); } diff --git a/src/admesh/connect.cpp b/src/admesh/connect.cpp index 5fc992b63..fb3213219 100644 --- a/src/admesh/connect.cpp +++ b/src/admesh/connect.cpp @@ -39,8 +39,7 @@ static void stl_record_neighbors(stl_file *stl, stl_hash_edge *edge_a, stl_hash_edge *edge_b); static void stl_initialize_facet_check_exact(stl_file *stl); static void stl_initialize_facet_check_nearby(stl_file *stl); -static void stl_load_edge_exact(stl_file *stl, stl_hash_edge *edge, - stl_vertex *a, stl_vertex *b); +static void stl_load_edge_exact(stl_file *stl, stl_hash_edge *edge, const stl_vertex *a, const stl_vertex *b); static int stl_load_edge_nearby(stl_file *stl, stl_hash_edge *edge, stl_vertex *a, stl_vertex *b, float tolerance); static void insert_hash_edge(stl_file *stl, stl_hash_edge edge, @@ -60,41 +59,40 @@ extern int stl_check_normal_vector(stl_file *stl, int facet_num, int normal_fix_flag); static void stl_update_connects_remove_1(stl_file *stl, int facet_num); - -void -stl_check_facets_exact(stl_file *stl) { - /* This function builds the neighbors list. No modifications are made - * to any of the facets. The edges are said to match only if all six - * floats of the first edge matches all six floats of the second edge. - */ - - stl_hash_edge edge; - stl_facet facet; - int i; - int j; - - if (stl->error) return; +// This function builds the neighbors list. No modifications are made +// to any of the facets. The edges are said to match only if all six +// floats of the first edge matches all six floats of the second edge. +void stl_check_facets_exact(stl_file *stl) +{ + if (stl->error) + return; stl->stats.connected_edges = 0; stl->stats.connected_facets_1_edge = 0; stl->stats.connected_facets_2_edge = 0; stl->stats.connected_facets_3_edge = 0; - stl_initialize_facet_check_exact(stl); + // If any two of the three vertices are found to be exactally the same, call them degenerate and remove the facet. + // Do it before the next step, as the next step stores references to the face indices in the hash tables and removing a facet + // will break the references. + for (int i = 0; i < stl->stats.number_of_facets;) { + stl_facet &facet = stl->facet_start[i]; + if (facet.vertex[0] == facet.vertex[1] || facet.vertex[1] == facet.vertex[2] || facet.vertex[0] == facet.vertex[2]) { + // Remove the degenerate facet. + facet = stl->facet_start[--stl->stats.number_of_facets]; + stl->stats.facets_removed += 1; + stl->stats.degenerate_facets += 1; + } else + ++ i; + } - for(i = 0; i < stl->stats.number_of_facets; i++) { - facet = stl->facet_start[i]; - // If any two of the three vertices are found to be exactally the same, call them degenerate and remove the facet. - if (facet.vertex[0] == facet.vertex[1] || - facet.vertex[1] == facet.vertex[2] || - facet.vertex[0] == facet.vertex[2]) { - stl->stats.degenerate_facets += 1; - stl_remove_facet(stl, i); - -- i; - continue; - } - for(j = 0; j < 3; j++) { - edge.facet_number = i; + // Connect neighbor edges. + stl_initialize_facet_check_exact(stl); + for (int i = 0; i < stl->stats.number_of_facets; i++) { + const stl_facet &facet = stl->facet_start[i]; + for (int j = 0; j < 3; j++) { + stl_hash_edge edge; + edge.facet_number = i; edge.which_edge = j; stl_load_edge_exact(stl, &edge, &facet.vertex[j], &facet.vertex[(j + 1) % 3]); insert_hash_edge(stl, edge, stl_record_neighbors); @@ -109,9 +107,7 @@ stl_check_facets_exact(stl_file *stl) { #endif } -static void -stl_load_edge_exact(stl_file *stl, stl_hash_edge *edge, - stl_vertex *a, stl_vertex *b) { +static void stl_load_edge_exact(stl_file *stl, stl_hash_edge *edge, const stl_vertex *a, const stl_vertex *b) { if (stl->error) return; @@ -333,7 +329,9 @@ static void stl_free_edges(stl_file *stl) } } free(stl->heads); + stl->heads = nullptr; free(stl->tail); + stl->tail = nullptr; } static void stl_initialize_facet_check_nearby(stl_file *stl) diff --git a/src/admesh/normals.cpp b/src/admesh/normals.cpp index a8faa44bd..ecf08b59c 100644 --- a/src/admesh/normals.cpp +++ b/src/admesh/normals.cpp @@ -108,6 +108,9 @@ stl_fix_normal_directions(stl_file *stl) { if (stl->error) return; + // this may happen for malformed models, see: https://github.com/prusa3d/PrusaSlicer/issues/2209 + if (stl->stats.number_of_facets == 0) return; + /* Initialize linked list. */ head = (struct stl_normal*)malloc(sizeof(struct stl_normal)); if(head == NULL) perror("stl_fix_normal_directions"); diff --git a/src/admesh/stl.h b/src/admesh/stl.h index afff3deac..f867e197b 100644 --- a/src/admesh/stl.h +++ b/src/admesh/stl.h @@ -43,11 +43,21 @@ typedef Eigen::Matrix stl_normal; static_assert(sizeof(stl_vertex) == 12, "size of stl_vertex incorrect"); static_assert(sizeof(stl_normal) == 12, "size of stl_normal incorrect"); -typedef struct { +struct stl_facet { stl_normal normal; stl_vertex vertex[3]; char extra[2]; -} stl_facet; + + stl_facet rotated(const Eigen::Quaternion &rot) { + stl_facet out; + out.normal = rot * this->normal; + out.vertex[0] = rot * this->vertex[0]; + out.vertex[1] = rot * this->vertex[1]; + out.vertex[2] = rot * this->vertex[2]; + return out; + } +}; + #define SIZEOF_STL_FACET 50 static_assert(offsetof(stl_facet, normal) == 0, "stl_facet.normal has correct offset"); @@ -127,7 +137,6 @@ typedef struct { typedef struct { FILE *fp; stl_facet *facet_start; - stl_edge *edge_start; stl_hash_edge **heads; stl_hash_edge *tail; int M; @@ -142,7 +151,6 @@ typedef struct { extern void stl_open(stl_file *stl, const char *file); extern void stl_close(stl_file *stl); extern void stl_stats_out(stl_file *stl, FILE *file, char *input_file); -extern void stl_print_edges(stl_file *stl, FILE *file); extern void stl_print_neighbors(stl_file *stl, char *file); extern void stl_put_little_int(FILE *fp, int value_in); extern void stl_put_little_float(FILE *fp, float value_in); @@ -172,8 +180,67 @@ extern void stl_rotate_z(stl_file *stl, float angle); extern void stl_mirror_xy(stl_file *stl); extern void stl_mirror_yz(stl_file *stl); extern void stl_mirror_xz(stl_file *stl); -extern void stl_transform(stl_file *stl, float *trafo3x4); -extern void stl_transform(stl_file *stl, const Eigen::Transform& t); + +extern void stl_get_size(stl_file *stl); + +template +extern void stl_transform(stl_file *stl, T *trafo3x4) +{ + if (stl->error) + return; + + for (uint32_t i_face = 0; i_face < stl->stats.number_of_facets; ++ i_face) { + stl_facet &face = stl->facet_start[i_face]; + for (int i_vertex = 0; i_vertex < 3; ++ i_vertex) { + stl_vertex &v_dst = face.vertex[i_vertex]; + stl_vertex v_src = v_dst; + v_dst(0) = T(trafo3x4[0] * v_src(0) + trafo3x4[1] * v_src(1) + trafo3x4[2] * v_src(2) + trafo3x4[3]); + v_dst(1) = T(trafo3x4[4] * v_src(0) + trafo3x4[5] * v_src(1) + trafo3x4[6] * v_src(2) + trafo3x4[7]); + v_dst(2) = T(trafo3x4[8] * v_src(0) + trafo3x4[9] * v_src(1) + trafo3x4[10] * v_src(2) + trafo3x4[11]); + } + stl_vertex &v_dst = face.normal; + stl_vertex v_src = v_dst; + v_dst(0) = T(trafo3x4[0] * v_src(0) + trafo3x4[1] * v_src(1) + trafo3x4[2] * v_src(2)); + v_dst(1) = T(trafo3x4[4] * v_src(0) + trafo3x4[5] * v_src(1) + trafo3x4[6] * v_src(2)); + v_dst(2) = T(trafo3x4[8] * v_src(0) + trafo3x4[9] * v_src(1) + trafo3x4[10] * v_src(2)); + } + + stl_get_size(stl); +} + +template +inline void stl_transform(stl_file *stl, const Eigen::Transform& t) +{ + if (stl->error) + return; + + const Eigen::Matrix r = t.matrix().template block<3, 3>(0, 0); + for (size_t i = 0; i < stl->stats.number_of_facets; ++i) { + stl_facet &f = stl->facet_start[i]; + for (size_t j = 0; j < 3; ++j) + f.vertex[j] = (t * f.vertex[j].template cast()).template cast().eval(); + f.normal = (r * f.normal.template cast()).template cast().eval(); + } + + stl_get_size(stl); +} + +template +inline void stl_transform(stl_file *stl, const Eigen::Matrix& m) +{ + if (stl->error) + return; + + for (size_t i = 0; i < stl->stats.number_of_facets; ++i) { + stl_facet &f = stl->facet_start[i]; + for (size_t j = 0; j < 3; ++j) + f.vertex[j] = (m * f.vertex[j].template cast()).template cast().eval(); + f.normal = (m * f.normal.template cast()).template cast().eval(); + } + + stl_get_size(stl); +} + extern void stl_open_merge(stl_file *stl, char *file); extern void stl_invalidate_shared_vertices(stl_file *stl); extern void stl_generate_shared_vertices(stl_file *stl); @@ -206,7 +273,6 @@ extern void stl_read(stl_file *stl, int first_facet, bool first); extern void stl_facet_stats(stl_file *stl, stl_facet facet, bool &first); extern void stl_reallocate(stl_file *stl); extern void stl_add_facet(stl_file *stl, stl_facet *new_facet); -extern void stl_get_size(stl_file *stl); extern void stl_clear_error(stl_file *stl); extern int stl_get_error(stl_file *stl); diff --git a/src/admesh/stl_io.cpp b/src/admesh/stl_io.cpp index 71e434cbc..85f66785b 100644 --- a/src/admesh/stl_io.cpp +++ b/src/admesh/stl_io.cpp @@ -33,24 +33,6 @@ #define SEEK_END 2 #endif -void -stl_print_edges(stl_file *stl, FILE *file) { - int i; - int edges_allocated; - - if (stl->error) return; - - edges_allocated = stl->stats.number_of_facets * 3; - for(i = 0; i < edges_allocated; i++) { - fprintf(file, "%d, %f, %f, %f, %f, %f, %f\n", - stl->edge_start[i].facet_number, - stl->edge_start[i].p1(0), stl->edge_start[i].p1(1), - stl->edge_start[i].p1(2), stl->edge_start[i].p2(0), - stl->edge_start[i].p2(1), stl->edge_start[i].p2(2)); - } -} - - void stl_stats_out(stl_file *stl, FILE *file, char *input_file) { if (stl->error) return; diff --git a/src/admesh/stlinit.cpp b/src/admesh/stlinit.cpp index e2939b8af..911f4f5e8 100644 --- a/src/admesh/stlinit.cpp +++ b/src/admesh/stlinit.cpp @@ -41,10 +41,12 @@ stl_open(stl_file *stl, const char *file) { stl_count_facets(stl, file); stl_allocate(stl); stl_read(stl, 0, true); - if (!stl->error) fclose(stl->fp); + if (stl->fp != nullptr) { + fclose(stl->fp); + stl->fp = nullptr; + } } - void stl_initialize(stl_file *stl) { memset(stl, 0, sizeof(stl_file)); @@ -118,7 +120,7 @@ stl_count_facets(stl_file *stl, const char *file) { } /* Read the int following the header. This should contain # of facets */ - bool header_num_faces_read = fread(&header_num_facets, sizeof(uint32_t), 1, stl->fp); + bool header_num_faces_read = fread(&header_num_facets, sizeof(uint32_t), 1, stl->fp) != 0; #ifndef BOOST_LITTLE_ENDIAN // Convert from little endian to big endian. stl_internal_reverse_quads((char*)&header_num_facets, 4); @@ -257,7 +259,6 @@ stl_reallocate(stl_file *stl) { time running this for the stl and therefore we should reset our max and min stats. */ void stl_read(stl_file *stl, int first_facet, bool first) { stl_facet facet; - int i; if (stl->error) return; @@ -268,7 +269,7 @@ void stl_read(stl_file *stl, int first_facet, bool first) { } char normal_buf[3][32]; - for(i = first_facet; i < stl->stats.number_of_facets; i++) { + for(uint32_t i = first_facet; i < stl->stats.number_of_facets; i++) { if(stl->stats.type == binary) /* Read a single facet from a binary .STL file */ { @@ -366,17 +367,19 @@ void stl_facet_stats(stl_file *stl, stl_facet facet, bool &first) } } -void -stl_close(stl_file *stl) { - if (stl->error) return; +void stl_close(stl_file *stl) +{ + assert(stl->fp == nullptr); + assert(stl->heads == nullptr); + assert(stl->tail == nullptr); - if(stl->neighbors_start != NULL) - free(stl->neighbors_start); - if(stl->facet_start != NULL) - free(stl->facet_start); - if(stl->v_indices != NULL) - free(stl->v_indices); - if(stl->v_shared != NULL) - free(stl->v_shared); + if (stl->facet_start != NULL) + free(stl->facet_start); + if (stl->neighbors_start != NULL) + free(stl->neighbors_start); + if (stl->v_indices != NULL) + free(stl->v_indices); + if (stl->v_shared != NULL) + free(stl->v_shared); + memset(stl, 0, sizeof(stl_file)); } - diff --git a/src/admesh/util.cpp b/src/admesh/util.cpp index 7cb69bccd..305a58e22 100644 --- a/src/admesh/util.cpp +++ b/src/admesh/util.cpp @@ -137,65 +137,6 @@ static void calculate_normals(stl_file *stl) } } -void stl_transform(stl_file *stl, float *trafo3x4) { - int i_face, i_vertex; - if (stl->error) - return; - for (i_face = 0; i_face < stl->stats.number_of_facets; ++ i_face) { - stl_vertex *vertices = stl->facet_start[i_face].vertex; - for (i_vertex = 0; i_vertex < 3; ++ i_vertex) { - stl_vertex &v_dst = vertices[i_vertex]; - stl_vertex v_src = v_dst; - v_dst(0) = trafo3x4[0] * v_src(0) + trafo3x4[1] * v_src(1) + trafo3x4[2] * v_src(2) + trafo3x4[3]; - v_dst(1) = trafo3x4[4] * v_src(0) + trafo3x4[5] * v_src(1) + trafo3x4[6] * v_src(2) + trafo3x4[7]; - v_dst(2) = trafo3x4[8] * v_src(0) + trafo3x4[9] * v_src(1) + trafo3x4[10] * v_src(2) + trafo3x4[11]; - } - } - stl_get_size(stl); - calculate_normals(stl); -} - -void stl_transform(stl_file *stl, const Eigen::Transform& t) -{ - if (stl->error) - return; - - unsigned int vertices_count = 3 * (unsigned int)stl->stats.number_of_facets; - if (vertices_count == 0) - return; - - Eigen::MatrixXf src_vertices(3, vertices_count); - stl_facet* facet_ptr = stl->facet_start; - unsigned int v_id = 0; - while (facet_ptr < stl->facet_start + stl->stats.number_of_facets) - { - for (int i = 0; i < 3; ++i) - { - ::memcpy((void*)src_vertices.col(v_id).data(), (const void*)&facet_ptr->vertex[i], 3 * sizeof(float)); - ++v_id; - } - facet_ptr += 1; - } - - Eigen::MatrixXf dst_vertices(3, vertices_count); - dst_vertices = t.cast() * src_vertices.colwise().homogeneous(); - - facet_ptr = stl->facet_start; - v_id = 0; - while (facet_ptr < stl->facet_start + stl->stats.number_of_facets) - { - for (int i = 0; i < 3; ++i) - { - ::memcpy((void*)&facet_ptr->vertex[i], (const void*)dst_vertices.col(v_id).data(), 3 * sizeof(float)); - ++v_id; - } - facet_ptr += 1; - } - - stl_get_size(stl); - calculate_normals(stl); -} - void stl_rotate_x(stl_file *stl, float angle) { int i; diff --git a/src/avrdude/ac_cfg.h b/src/avrdude/ac_cfg.h index 41d648bf1..1dd40de41 100644 --- a/src/avrdude/ac_cfg.h +++ b/src/avrdude/ac_cfg.h @@ -172,7 +172,7 @@ #define PACKAGE "avrdude-slic3r" /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "https://github.com/prusa3d/Slic3r/issues" +#define PACKAGE_BUGREPORT "https://github.com/supermerill/Slic3r/issues" /* Define to the full name of this package. */ #define PACKAGE_NAME "avrdude-slic3r" @@ -184,7 +184,7 @@ #define PACKAGE_TARNAME "avrdude-slic3r" /* Define to the home page for this package. */ -#define PACKAGE_URL "https://github.com/prusa3d/Slic3r" +#define PACKAGE_URL "https://github.com/supermerill/Slic3r" /* Define to the version of this package. */ #define PACKAGE_VERSION "6.3-20160220" diff --git a/src/libnest2d/include/libnest2d/backends/clipper/CMakeLists.txt b/src/libnest2d/include/libnest2d/backends/clipper/CMakeLists.txt index 995afcc76..462d1dd06 100644 --- a/src/libnest2d/include/libnest2d/backends/clipper/CMakeLists.txt +++ b/src/libnest2d/include/libnest2d/backends/clipper/CMakeLists.txt @@ -64,6 +64,7 @@ endif() target_include_directories(ClipperBackend INTERFACE ${Boost_INCLUDE_DIRS} ) target_sources(ClipperBackend INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/geometries.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/clipper_polygon.hpp ${SRC_DIR}/libnest2d/utils/boost_alg.hpp ) target_compile_definitions(ClipperBackend INTERFACE LIBNEST2D_BACKEND_CLIPPER) diff --git a/src/libnest2d/include/libnest2d/backends/clipper/clipper_polygon.hpp b/src/libnest2d/include/libnest2d/backends/clipper/clipper_polygon.hpp new file mode 100644 index 000000000..e9fbfbd18 --- /dev/null +++ b/src/libnest2d/include/libnest2d/backends/clipper/clipper_polygon.hpp @@ -0,0 +1,72 @@ +#ifndef CLIPPER_POLYGON_HPP +#define CLIPPER_POLYGON_HPP + +#include + +namespace ClipperLib { + +struct Polygon { + Path Contour; + Paths Holes; + + inline Polygon() = default; + + inline explicit Polygon(const Path& cont): Contour(cont) {} + inline explicit Polygon(const Paths& holes): + Holes(holes) {} + inline Polygon(const Path& cont, const Paths& holes): + Contour(cont), Holes(holes) {} + + inline explicit Polygon(Path&& cont): Contour(std::move(cont)) {} + inline explicit Polygon(Paths&& holes): Holes(std::move(holes)) {} + inline Polygon(Path&& cont, Paths&& holes): + Contour(std::move(cont)), Holes(std::move(holes)) {} +}; + +inline IntPoint& operator +=(IntPoint& p, const IntPoint& pa ) { + // This could be done with SIMD + p.X += pa.X; + p.Y += pa.Y; + return p; +} + +inline IntPoint operator+(const IntPoint& p1, const IntPoint& p2) { + IntPoint ret = p1; + ret += p2; + return ret; +} + +inline IntPoint& operator -=(IntPoint& p, const IntPoint& pa ) { + p.X -= pa.X; + p.Y -= pa.Y; + return p; +} + +inline IntPoint operator -(IntPoint& p ) { + IntPoint ret = p; + ret.X = -ret.X; + ret.Y = -ret.Y; + return ret; +} + +inline IntPoint operator-(const IntPoint& p1, const IntPoint& p2) { + IntPoint ret = p1; + ret -= p2; + return ret; +} + +inline IntPoint& operator *=(IntPoint& p, const IntPoint& pa ) { + p.X *= pa.X; + p.Y *= pa.Y; + return p; +} + +inline IntPoint operator*(const IntPoint& p1, const IntPoint& p2) { + IntPoint ret = p1; + ret *= p2; + return ret; +} + +} + +#endif // CLIPPER_POLYGON_HPP diff --git a/src/libnest2d/include/libnest2d/backends/clipper/geometries.hpp b/src/libnest2d/include/libnest2d/backends/clipper/geometries.hpp index 9f881e7e0..232668f61 100644 --- a/src/libnest2d/include/libnest2d/backends/clipper/geometries.hpp +++ b/src/libnest2d/include/libnest2d/backends/clipper/geometries.hpp @@ -10,84 +10,15 @@ #include #include -#include - -namespace ClipperLib { -using PointImpl = IntPoint; -using PathImpl = Path; -using HoleStore = std::vector; - -struct PolygonImpl { - PathImpl Contour; - HoleStore Holes; - - inline PolygonImpl() = default; - - inline explicit PolygonImpl(const PathImpl& cont): Contour(cont) {} - inline explicit PolygonImpl(const HoleStore& holes): - Holes(holes) {} - inline PolygonImpl(const Path& cont, const HoleStore& holes): - Contour(cont), Holes(holes) {} - - inline explicit PolygonImpl(PathImpl&& cont): Contour(std::move(cont)) {} - inline explicit PolygonImpl(HoleStore&& holes): Holes(std::move(holes)) {} - inline PolygonImpl(Path&& cont, HoleStore&& holes): - Contour(std::move(cont)), Holes(std::move(holes)) {} -}; - -inline PointImpl& operator +=(PointImpl& p, const PointImpl& pa ) { - // This could be done with SIMD - p.X += pa.X; - p.Y += pa.Y; - return p; -} - -inline PointImpl operator+(const PointImpl& p1, const PointImpl& p2) { - PointImpl ret = p1; - ret += p2; - return ret; -} - -inline PointImpl& operator -=(PointImpl& p, const PointImpl& pa ) { - p.X -= pa.X; - p.Y -= pa.Y; - return p; -} - -inline PointImpl operator -(PointImpl& p ) { - PointImpl ret = p; - ret.X = -ret.X; - ret.Y = -ret.Y; - return ret; -} - -inline PointImpl operator-(const PointImpl& p1, const PointImpl& p2) { - PointImpl ret = p1; - ret -= p2; - return ret; -} - -inline PointImpl& operator *=(PointImpl& p, const PointImpl& pa ) { - p.X *= pa.X; - p.Y *= pa.Y; - return p; -} - -inline PointImpl operator*(const PointImpl& p1, const PointImpl& p2) { - PointImpl ret = p1; - ret *= p2; - return ret; -} - -} +#include "clipper_polygon.hpp" namespace libnest2d { // Aliases for convinience -using ClipperLib::PointImpl; -using ClipperLib::PathImpl; -using ClipperLib::PolygonImpl; -using ClipperLib::HoleStore; +using PointImpl = ClipperLib::IntPoint; +using PathImpl = ClipperLib::Path; +using HoleStore = ClipperLib::Paths; +using PolygonImpl = ClipperLib::Polygon; // Type of coordinate units used by Clipper template<> struct CoordType { @@ -158,33 +89,24 @@ template<> inline TCoord& y(PointImpl& p) #define DISABLE_BOOST_AREA namespace _smartarea { + template inline double area(const PolygonImpl& /*sh*/) { return std::nan(""); } template<> -inline double area(const PolygonImpl& sh) { - double a = 0; - - std::for_each(sh.Holes.begin(), sh.Holes.end(), [&a](const PathImpl& h) - { - a -= ClipperLib::Area(h); +inline double area(const PolygonImpl& sh) { + return std::accumulate(sh.Holes.begin(), sh.Holes.end(), + ClipperLib::Area(sh.Contour), + [](double a, const ClipperLib::Path& pt){ + return a + ClipperLib::Area(pt); }); - - return -ClipperLib::Area(sh.Contour) + a; } template<> -inline double area(const PolygonImpl& sh) { - double a = 0; - - std::for_each(sh.Holes.begin(), sh.Holes.end(), [&a](const PathImpl& h) - { - a += ClipperLib::Area(h); - }); - - return ClipperLib::Area(sh.Contour) + a; +inline double area(const PolygonImpl& sh) { + return -area(sh); } } @@ -228,9 +150,10 @@ template<> inline void offset(PolygonImpl& sh, TCoord distance) // but throwing would be an overkill. Instead, we should warn the // caller about the inability to create correct geometries if(!found_the_contour) { - sh.Contour = r; + sh.Contour = std::move(r); ClipperLib::ReversePath(sh.Contour); - sh.Contour.push_back(sh.Contour.front()); + auto front_p = sh.Contour.front(); + sh.Contour.emplace_back(std::move(front_p)); found_the_contour = true; } else { dout() << "Warning: offsetting result is invalid!"; @@ -240,9 +163,10 @@ template<> inline void offset(PolygonImpl& sh, TCoord distance) // TODO If there are multiple contours we can't be sure which hole // belongs to the first contour. (But in this case the situation is // bad enough to let it go...) - sh.Holes.push_back(r); + sh.Holes.emplace_back(std::move(r)); ClipperLib::ReversePath(sh.Holes.back()); - sh.Holes.back().push_back(sh.Holes.back().front()); + auto front_p = sh.Holes.back().front(); + sh.Holes.back().emplace_back(std::move(front_p)); } } } @@ -390,34 +314,53 @@ inline void rotate(PolygonImpl& sh, const Radians& rads) } // namespace shapelike #define DISABLE_BOOST_NFP_MERGE -inline std::vector _merge(ClipperLib::Clipper& clipper) { +inline std::vector clipper_execute( + ClipperLib::Clipper& clipper, + ClipperLib::ClipType clipType, + ClipperLib::PolyFillType subjFillType = ClipperLib::pftEvenOdd, + ClipperLib::PolyFillType clipFillType = ClipperLib::pftEvenOdd) +{ shapelike::Shapes retv; ClipperLib::PolyTree result; - clipper.Execute(ClipperLib::ctUnion, result, ClipperLib::pftNegative); + clipper.Execute(clipType, result, subjFillType, clipFillType); + retv.reserve(static_cast(result.Total())); std::function processHole; auto processPoly = [&retv, &processHole](ClipperLib::PolyNode *pptr) { - PolygonImpl poly(pptr->Contour); - poly.Contour.push_back(poly.Contour.front()); + PolygonImpl poly; + poly.Contour.swap(pptr->Contour); + + assert(!pptr->IsHole()); + + if(pptr->IsOpen()) { + auto front_p = poly.Contour.front(); + poly.Contour.emplace_back(front_p); + } + for(auto h : pptr->Childs) { processHole(h, poly); } retv.push_back(poly); }; processHole = [&processPoly](ClipperLib::PolyNode *pptr, PolygonImpl& poly) { - poly.Holes.push_back(pptr->Contour); - poly.Holes.back().push_back(poly.Holes.back().front()); + poly.Holes.emplace_back(std::move(pptr->Contour)); + + assert(pptr->IsHole()); + + if(pptr->IsOpen()) { + auto front_p = poly.Holes.back().front(); + poly.Holes.back().emplace_back(front_p); + } + for(auto c : pptr->Childs) processPoly(c); }; auto traverse = [&processPoly] (ClipperLib::PolyNode *node) { - for(auto ch : node->Childs) { - processPoly(ch); - } + for(auto ch : node->Childs) processPoly(ch); }; traverse(&result); @@ -438,14 +381,13 @@ merge(const std::vector& shapes) for(auto& path : shapes) { valid &= clipper.AddPath(path.Contour, ClipperLib::ptSubject, closed); - for(auto& hole : path.Holes) { - valid &= clipper.AddPath(hole, ClipperLib::ptSubject, closed); - } + for(auto& h : path.Holes) + valid &= clipper.AddPath(h, ClipperLib::ptSubject, closed); } if(!valid) throw GeometryException(GeomErr::MERGE); - return _merge(clipper); + return clipper_execute(clipper, ClipperLib::ctUnion, ClipperLib::pftNegative); } } diff --git a/src/libnest2d/include/libnest2d/libnest2d.hpp b/src/libnest2d/include/libnest2d/libnest2d.hpp index 49baa65f2..c7b252e5d 100644 --- a/src/libnest2d/include/libnest2d/libnest2d.hpp +++ b/src/libnest2d/include/libnest2d/libnest2d.hpp @@ -966,7 +966,7 @@ private: for(size_t i = 0; i < pckgrp.size(); i++) { auto items = pckgrp[i]; - pg.push_back({}); + pg.emplace_back(); pg[i].reserve(items.size()); for(Item& itemA : items) { diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index 6fb717a7a..91affe978 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -261,7 +261,7 @@ template class EdgeCache { while(next != endit) { contour_.emap.emplace_back(*(first++), *(next++)); contour_.full_distance += contour_.emap.back().length(); - contour_.distances.push_back(contour_.full_distance); + contour_.distances.emplace_back(contour_.full_distance); } } @@ -276,10 +276,10 @@ template class EdgeCache { while(next != endit) { hc.emap.emplace_back(*(first++), *(next++)); hc.full_distance += hc.emap.back().length(); - hc.distances.push_back(hc.full_distance); + hc.distances.emplace_back(hc.full_distance); } - holes_.push_back(hc); + holes_.emplace_back(std::move(hc)); } } diff --git a/src/libnest2d/include/libnest2d/placers/placer_boilerplate.hpp b/src/libnest2d/include/libnest2d/placers/placer_boilerplate.hpp index 309a5007d..abcd86183 100644 --- a/src/libnest2d/include/libnest2d/placers/placer_boilerplate.hpp +++ b/src/libnest2d/include/libnest2d/placers/placer_boilerplate.hpp @@ -63,7 +63,7 @@ public: bool pack(Item& item, const Range& rem = Range()) { auto&& r = static_cast(this)->trypack(item, rem); if(r) { - items_.push_back(*(r.item_ptr_)); + items_.emplace_back(*(r.item_ptr_)); farea_valid_ = false; } return r; @@ -78,7 +78,7 @@ public: if(r) { r.item_ptr_->translation(r.move_); r.item_ptr_->rotation(r.rot_); - items_.push_back(*(r.item_ptr_)); + items_.emplace_back(*(r.item_ptr_)); farea_valid_ = false; } } diff --git a/src/libnest2d/include/libnest2d/selections/djd_heuristic.hpp b/src/libnest2d/include/libnest2d/selections/djd_heuristic.hpp index b03534dc4..25007e580 100644 --- a/src/libnest2d/include/libnest2d/selections/djd_heuristic.hpp +++ b/src/libnest2d/include/libnest2d/selections/djd_heuristic.hpp @@ -667,7 +667,7 @@ public: addBin(); ItemList& not_packed = not_packeds[b]; for(unsigned idx = b; idx < store_.size(); idx+=bincount_guess) { - not_packed.push_back(store_[idx]); + not_packed.emplace_back(store_[idx]); } } diff --git a/src/libnest2d/include/libnest2d/utils/boost_alg.hpp b/src/libnest2d/include/libnest2d/utils/boost_alg.hpp index a6988ca00..baf1c6a10 100644 --- a/src/libnest2d/include/libnest2d/utils/boost_alg.hpp +++ b/src/libnest2d/include/libnest2d/utils/boost_alg.hpp @@ -463,7 +463,7 @@ template<> inline std::string serialize( auto& v = *it; hf.emplace_back(getX(v)*scale, getY(v)*scale); }; - holes.push_back(hf); + holes.emplace_back(std::move(hf)); } Polygonf poly; diff --git a/src/libnest2d/tests/printer_parts.h b/src/libnest2d/tests/printer_parts.h index b9a4eb8fa..1e65826bd 100644 --- a/src/libnest2d/tests/printer_parts.h +++ b/src/libnest2d/tests/printer_parts.h @@ -2,36 +2,10 @@ #define PRINTER_PARTS_H #include -#include - -#ifndef CLIPPER_BACKEND_HPP -namespace ClipperLib { -using PointImpl = IntPoint; -using PathImpl = Path; -using HoleStore = std::vector; - -struct PolygonImpl { - PathImpl Contour; - HoleStore Holes; - - inline PolygonImpl() {} - - inline explicit PolygonImpl(const PathImpl& cont): Contour(cont) {} - inline explicit PolygonImpl(const HoleStore& holes): - Holes(holes) {} - inline PolygonImpl(const Path& cont, const HoleStore& holes): - Contour(cont), Holes(holes) {} - - inline explicit PolygonImpl(PathImpl&& cont): Contour(std::move(cont)) {} - inline explicit PolygonImpl(HoleStore&& holes): Holes(std::move(holes)) {} - inline PolygonImpl(Path&& cont, HoleStore&& holes): - Contour(std::move(cont)), Holes(std::move(holes)) {} -}; -} -#endif +#include using TestData = std::vector; -using TestDataEx = std::vector; +using TestDataEx = std::vector; extern const TestData PRINTER_PART_POLYGONS; extern const TestData STEGOSAUR_POLYGONS; diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 7c248b095..b3e8f3500 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -165,6 +165,8 @@ add_library(libslic3r STATIC utils.cpp Utils.hpp MTUtils.hpp + Zipper.hpp + Zipper.cpp SLA/SLABoilerPlate.hpp SLA/SLABasePool.hpp SLA/SLABasePool.cpp @@ -181,8 +183,8 @@ if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY) add_precompiled_header(libslic3r pchheader.hpp FORCEINCLUDE) endif () -target_compile_definitions(libslic3r PUBLIC -DUSE_TBB ${PNG_DEFINITIONS}) -target_include_directories(libslic3r PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIBNEST2D_INCLUDES} ${PNG_INCLUDE_DIRS} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) +target_compile_definitions(libslic3r PUBLIC -DUSE_TBB) +target_include_directories(libslic3r PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIBNEST2D_INCLUDES} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(libslic3r libnest2d admesh @@ -191,8 +193,6 @@ target_link_libraries(libslic3r clipper nowide ${EXPAT_LIBRARIES} - ${GLEW_LIBRARIES} - ${PNG_LIBRARIES} glu-libtess polypartition poly2tri diff --git a/src/libslic3r/ClipperUtils.cpp b/src/libslic3r/ClipperUtils.cpp index 9c685b0c3..649d52c0d 100644 --- a/src/libslic3r/ClipperUtils.cpp +++ b/src/libslic3r/ClipperUtils.cpp @@ -120,7 +120,7 @@ Slic3r::Polygon ClipperPath_to_Slic3rPolygon(const ClipperLib::Path &input) { Polygon retval; for (ClipperLib::Path::const_iterator pit = input.begin(); pit != input.end(); ++pit) - retval.points.push_back(Point( (*pit).X, (*pit).Y )); + retval.points.emplace_back(pit->X, pit->Y); return retval; } @@ -128,7 +128,7 @@ Slic3r::Polyline ClipperPath_to_Slic3rPolyline(const ClipperLib::Path &input) { Polyline retval; for (ClipperLib::Path::const_iterator pit = input.begin(); pit != input.end(); ++pit) - retval.points.push_back(Point( (*pit).X, (*pit).Y )); + retval.points.emplace_back(pit->X, pit->Y); return retval; } @@ -137,7 +137,7 @@ Slic3r::Polygons ClipperPaths_to_Slic3rPolygons(const ClipperLib::Paths &input) Slic3r::Polygons retval; retval.reserve(input.size()); for (ClipperLib::Paths::const_iterator it = input.begin(); it != input.end(); ++it) - retval.push_back(ClipperPath_to_Slic3rPolygon(*it)); + retval.emplace_back(ClipperPath_to_Slic3rPolygon(*it)); return retval; } @@ -146,7 +146,7 @@ Slic3r::Polylines ClipperPaths_to_Slic3rPolylines(const ClipperLib::Paths &input Slic3r::Polylines retval; retval.reserve(input.size()); for (ClipperLib::Paths::const_iterator it = input.begin(); it != input.end(); ++it) - retval.push_back(ClipperPath_to_Slic3rPolyline(*it)); + retval.emplace_back(ClipperPath_to_Slic3rPolyline(*it)); return retval; } @@ -171,7 +171,7 @@ Slic3rMultiPoint_to_ClipperPath(const MultiPoint &input) { ClipperLib::Path retval; for (Points::const_iterator pit = input.points.begin(); pit != input.points.end(); ++pit) - retval.push_back(ClipperLib::IntPoint( (*pit)(0), (*pit)(1) )); + retval.emplace_back((*pit)(0), (*pit)(1)); return retval; } @@ -181,7 +181,7 @@ Slic3rMultiPoint_to_ClipperPath_reversed(const Slic3r::MultiPoint &input) ClipperLib::Path output; output.reserve(input.points.size()); for (Slic3r::Points::const_reverse_iterator pit = input.points.rbegin(); pit != input.points.rend(); ++pit) - output.push_back(ClipperLib::IntPoint( (*pit)(0), (*pit)(1) )); + output.emplace_back((*pit)(0), (*pit)(1)); return output; } @@ -189,7 +189,7 @@ ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const Polygons &input) { ClipperLib::Paths retval; for (Polygons::const_iterator it = input.begin(); it != input.end(); ++it) - retval.push_back(Slic3rMultiPoint_to_ClipperPath(*it)); + retval.emplace_back(Slic3rMultiPoint_to_ClipperPath(*it)); return retval; } @@ -197,7 +197,7 @@ ClipperLib::Paths Slic3rMultiPoints_to_ClipperPaths(const Polylines &input) { ClipperLib::Paths retval; for (Polylines::const_iterator it = input.begin(); it != input.end(); ++it) - retval.push_back(Slic3rMultiPoint_to_ClipperPath(*it)); + retval.emplace_back(Slic3rMultiPoint_to_ClipperPath(*it)); return retval; } @@ -226,7 +226,7 @@ ClipperLib::Paths _offset(ClipperLib::Paths &&input, ClipperLib::EndType endType ClipperLib::Paths _offset(ClipperLib::Path &&input, ClipperLib::EndType endType, const double delta, ClipperLib::JoinType joinType, double miterLimit) { ClipperLib::Paths paths; - paths.push_back(std::move(input)); + paths.emplace_back(std::move(input)); return _offset(std::move(paths), endType, delta, joinType, miterLimit); } @@ -585,7 +585,7 @@ Polylines _clipper_pl(ClipperLib::ClipType clipType, const Polygons &subject, co Polylines polylines; polylines.reserve(subject.size()); for (Polygons::const_iterator polygon = subject.begin(); polygon != subject.end(); ++polygon) - polylines.push_back(*polygon); // implicit call to split_at_first_point() + polylines.emplace_back(polygon->operator Polyline()); // implicit call to split_at_first_point() // perform clipping Polylines retval = _clipper_pl(clipType, polylines, clip, safety_offset_); @@ -643,7 +643,7 @@ _clipper_ln(ClipperLib::ClipType clipType, const Lines &subject, const Polygons // convert Polylines to Lines Lines retval; for (Polylines::const_iterator polyline = polylines.begin(); polyline != polylines.end(); ++polyline) - retval.push_back(*polyline); + retval.emplace_back(polyline->operator Line()); return retval; } @@ -673,7 +673,7 @@ void traverse_pt(ClipperLib::PolyNodes &nodes, Polygons* retval) ordering_points.reserve(nodes.size()); for (ClipperLib::PolyNodes::const_iterator it = nodes.begin(); it != nodes.end(); ++it) { Point p((*it)->Contour.front().X, (*it)->Contour.front().Y); - ordering_points.push_back(p); + ordering_points.emplace_back(p); } // perform the ordering @@ -684,7 +684,7 @@ void traverse_pt(ClipperLib::PolyNodes &nodes, Polygons* retval) for (ClipperLib::PolyNodes::iterator it = ordered_nodes.begin(); it != ordered_nodes.end(); ++it) { // traverse the next depth traverse_pt((*it)->Childs, retval); - retval->push_back(ClipperPath_to_Slic3rPolygon((*it)->Contour)); + retval->emplace_back(ClipperPath_to_Slic3rPolygon((*it)->Contour)); if ((*it)->IsHole()) retval->back().reverse(); // ccw } } @@ -791,8 +791,8 @@ Polygons top_level_islands(const Slic3r::Polygons &polygons) Polygons out; out.reserve(polytree.ChildCount()); for (int i = 0; i < polytree.ChildCount(); ++i) - out.push_back(ClipperPath_to_Slic3rPolygon(polytree.Childs[i]->Contour)); + out.emplace_back(ClipperPath_to_Slic3rPolygon(polytree.Childs[i]->Contour)); return out; } -} \ No newline at end of file +} diff --git a/src/libslic3r/ClipperUtils.hpp b/src/libslic3r/ClipperUtils.hpp index cf06f1b5f..4c8742279 100644 --- a/src/libslic3r/ClipperUtils.hpp +++ b/src/libslic3r/ClipperUtils.hpp @@ -28,8 +28,8 @@ namespace Slic3r { //----------------------------------------------------------- // legacy code from Clipper documentation -void AddOuterPolyNodeToExPolygons(ClipperLib::PolyNode& polynode, Slic3r::ExPolygons& expolygons); -void PolyTreeToExPolygons(ClipperLib::PolyTree& polytree, Slic3r::ExPolygons& expolygons); +void AddOuterPolyNodeToExPolygons(ClipperLib::PolyNode& polynode, Slic3r::ExPolygons *expolygons); +Slic3r::ExPolygons PolyTreeToExPolygons(ClipperLib::PolyTree& polytree); //----------------------------------------------------------- ClipperLib::Path Slic3rMultiPoint_to_ClipperPath(const Slic3r::MultiPoint &input); @@ -236,4 +236,4 @@ Polygons top_level_islands(const Slic3r::Polygons &polygons); } -#endif \ No newline at end of file +#endif diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 968bcd474..94aa57533 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -280,7 +280,7 @@ std::ostream& ConfigDef::print_cli_help(std::ostream& out, bool show_defaults, s // right: option description std::string descr = def.tooltip; - if (show_defaults && def.default_value != nullptr && def.type != coBool + if (show_defaults && def.default_value && def.type != coBool && (def.type != coString || !def.default_value->serialize().empty())) { descr += " ("; if (!def.sidetext.empty()) { @@ -653,7 +653,7 @@ ConfigOption* DynamicConfig::optptr(const t_config_option_key &opt_key, bool cre // Let the parent decide what to do if the opt_key is not defined by this->def(). return nullptr; ConfigOption *opt = nullptr; - if (optdef->default_value != nullptr) { + if (optdef->default_value) { opt = (optdef->default_value->type() == coEnum) ? // Special case: For a DynamicConfig, convert a templated enum to a generic enum. new ConfigOptionEnumGeneric(optdef->enum_keys_map, optdef->default_value->getInt()) : @@ -809,8 +809,8 @@ void StaticConfig::set_defaults() for (const std::string &key : this->keys()) { const ConfigOptionDef *def = defs->get(key); ConfigOption *opt = this->option(key); - if (def != nullptr && opt != nullptr && def->default_value != nullptr) - opt->set(def->default_value); + if (def != nullptr && opt != nullptr && def->default_value) + opt->set(def->default_value.get()); } } } diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 3505b7ef4..5835a7b07 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -12,6 +12,7 @@ #include #include #include "libslic3r.h" +#include "clonable_ptr.hpp" #include "Point.hpp" #include @@ -1031,7 +1032,10 @@ public: // What type? bool, int, string etc. ConfigOptionType type = coNone; // Default value of this option. The default value object is owned by ConfigDef, it is released in its destructor. - const ConfigOption *default_value = nullptr; + Slic3r::clonable_ptr default_value; + void set_default_value(const ConfigOption* ptr) { this->default_value = Slic3r::clonable_ptr(ptr); } + template + const T* get_default_value() const { return static_cast(this->default_value.get()); } // Usually empty. // Special values - "i_enum_open", "f_enum_open" to provide combo box for int or float selection, @@ -1120,12 +1124,6 @@ typedef std::map t_optiondef_map; class ConfigDef { public: - ~ConfigDef() { - for (std::pair &def : this->options) - delete def.second.default_value; - this->options.clear(); - } - t_optiondef_map options; bool has(const t_config_option_key &opt_key) const { return this->options.count(opt_key) > 0; } diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 72e8616e5..f733dee21 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -173,7 +173,7 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T // Toolchangeresult.gcode assumes the wipe tower corner is at the origin // We want to rotate and shift all extrusions (gcode postprocessing) and starting and ending position - float alpha = m_wipe_tower_rotation/180.f * M_PI; + float alpha = m_wipe_tower_rotation/180.f * float(M_PI); WipeTower::xy start_pos = tcr.start_pos; WipeTower::xy end_pos = tcr.end_pos; start_pos.rotate(alpha); @@ -184,7 +184,7 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T // Disable linear advance for the wipe tower operations. - gcode += "M900 K0\n"; + gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n")); // Move over the wipe tower. // Retract for a tool change, using the toolchange retract value and setting the priming extra length. gcode += gcodegen.retract(true); @@ -201,12 +201,13 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T // Let the m_writer know the current extruder_id, but ignore the generated G-code. if (new_extruder_id >= 0 && gcodegen.writer().need_toolchange(new_extruder_id)) gcodegen.writer().toolchange(new_extruder_id); + gcodegen.placeholder_parser().set("current_extruder", new_extruder_id); + // Always append the filament start G-code even if the extruder did not switch, // because the wipe tower resets the linear advance and we want it to be re-enabled. const std::string &start_filament_gcode = gcodegen.config().start_filament_gcode.get_at(new_extruder_id); if (! start_filament_gcode.empty()) { // Process the start_filament_gcode for the active filament only. - gcodegen.placeholder_parser().set("current_extruder", new_extruder_id); DynamicConfig config; config.set_key_value("filament_extruder_id", new ConfigOptionInt(new_extruder_id)); gcode += gcodegen.placeholder_parser_process("start_filament_gcode", start_filament_gcode, new_extruder_id, &config); @@ -289,7 +290,7 @@ std::string WipeTowerIntegration::prime(GCode &gcodegen) if (&m_priming != nullptr && ! m_priming.extrusions.empty()) { // Disable linear advance for the wipe tower operations. - gcode += "M900 K0\n"; + gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n")); // Let the tool change be executed by the wipe tower class. // Inform the G-code writer about the changes done behind its back. gcode += m_priming.gcode; @@ -519,43 +520,43 @@ void GCode::_do_export(Print &print, FILE *file) // this->print_machine_envelope(file, print); // shall be adjusted as well to produce a G-code block compatible with the particular firmware flavor. if (print.config().gcode_flavor.value == gcfMarlin) { - m_normal_time_estimator.set_max_acceleration(print.config().machine_max_acceleration_extruding.values[0]); - m_normal_time_estimator.set_retract_acceleration(print.config().machine_max_acceleration_retracting.values[0]); - m_normal_time_estimator.set_minimum_feedrate(print.config().machine_min_extruding_rate.values[0]); - m_normal_time_estimator.set_minimum_travel_feedrate(print.config().machine_min_travel_rate.values[0]); - m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, print.config().machine_max_acceleration_x.values[0]); - m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, print.config().machine_max_acceleration_y.values[0]); - m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, print.config().machine_max_acceleration_z.values[0]); - m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, print.config().machine_max_acceleration_e.values[0]); - m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, print.config().machine_max_feedrate_x.values[0]); - m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, print.config().machine_max_feedrate_y.values[0]); - m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, print.config().machine_max_feedrate_z.values[0]); - m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, print.config().machine_max_feedrate_e.values[0]); - m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, print.config().machine_max_jerk_x.values[0]); - m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, print.config().machine_max_jerk_y.values[0]); - m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, print.config().machine_max_jerk_z.values[0]); - m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, print.config().machine_max_jerk_e.values[0]); + m_normal_time_estimator.set_max_acceleration((float)print.config().machine_max_acceleration_extruding.values[0]); + m_normal_time_estimator.set_retract_acceleration((float)print.config().machine_max_acceleration_retracting.values[0]); + m_normal_time_estimator.set_minimum_feedrate((float)print.config().machine_min_extruding_rate.values[0]); + m_normal_time_estimator.set_minimum_travel_feedrate((float)print.config().machine_min_travel_rate.values[0]); + m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, (float)print.config().machine_max_acceleration_x.values[0]); + m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, (float)print.config().machine_max_acceleration_y.values[0]); + m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, (float)print.config().machine_max_acceleration_z.values[0]); + m_normal_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, (float)print.config().machine_max_acceleration_e.values[0]); + m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, (float)print.config().machine_max_feedrate_x.values[0]); + m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, (float)print.config().machine_max_feedrate_y.values[0]); + m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, (float)print.config().machine_max_feedrate_z.values[0]); + m_normal_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, (float)print.config().machine_max_feedrate_e.values[0]); + m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, (float)print.config().machine_max_jerk_x.values[0]); + m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, (float)print.config().machine_max_jerk_y.values[0]); + m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, (float)print.config().machine_max_jerk_z.values[0]); + m_normal_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, (float)print.config().machine_max_jerk_e.values[0]); if (m_silent_time_estimator_enabled && print.config().machine_max_acceleration_extruding.values.size() > 1) { m_silent_time_estimator.reset(); m_silent_time_estimator.set_dialect(print.config().gcode_flavor); - m_silent_time_estimator.set_max_acceleration(print.config().machine_max_acceleration_extruding.values[1]); - m_silent_time_estimator.set_retract_acceleration(print.config().machine_max_acceleration_retracting.values[1]); - m_silent_time_estimator.set_minimum_feedrate(print.config().machine_min_extruding_rate.values[1]); - m_silent_time_estimator.set_minimum_travel_feedrate(print.config().machine_min_travel_rate.values[1]); - m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, print.config().machine_max_acceleration_x.values[1]); - m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, print.config().machine_max_acceleration_y.values[1]); - m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, print.config().machine_max_acceleration_z.values[1]); - m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, print.config().machine_max_acceleration_e.values[1]); - m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, print.config().machine_max_feedrate_x.values[1]); - m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, print.config().machine_max_feedrate_y.values[1]); - m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, print.config().machine_max_feedrate_z.values[1]); - m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, print.config().machine_max_feedrate_e.values[1]); - m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, print.config().machine_max_jerk_x.values[1]); - m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, print.config().machine_max_jerk_y.values[1]); - m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, print.config().machine_max_jerk_z.values[1]); - m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, print.config().machine_max_jerk_e.values[1]); + m_silent_time_estimator.set_max_acceleration((float)print.config().machine_max_acceleration_extruding.values[1]); + m_silent_time_estimator.set_retract_acceleration((float)print.config().machine_max_acceleration_retracting.values[1]); + m_silent_time_estimator.set_minimum_feedrate((float)print.config().machine_min_extruding_rate.values[1]); + m_silent_time_estimator.set_minimum_travel_feedrate((float)print.config().machine_min_travel_rate.values[1]); + m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::X, (float)print.config().machine_max_acceleration_x.values[1]); + m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Y, (float)print.config().machine_max_acceleration_y.values[1]); + m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::Z, (float)print.config().machine_max_acceleration_z.values[1]); + m_silent_time_estimator.set_axis_max_acceleration(GCodeTimeEstimator::E, (float)print.config().machine_max_acceleration_e.values[1]); + m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::X, (float)print.config().machine_max_feedrate_x.values[1]); + m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Y, (float)print.config().machine_max_feedrate_y.values[1]); + m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::Z, (float)print.config().machine_max_feedrate_z.values[1]); + m_silent_time_estimator.set_axis_max_feedrate(GCodeTimeEstimator::E, (float)print.config().machine_max_feedrate_e.values[1]); + m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::X, (float)print.config().machine_max_jerk_x.values[1]); + m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Y, (float)print.config().machine_max_jerk_y.values[1]); + m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::Z, (float)print.config().machine_max_jerk_z.values[1]); + m_silent_time_estimator.set_axis_max_jerk(GCodeTimeEstimator::E, (float)print.config().machine_max_jerk_e.values[1]); if (print.config().single_extruder_multi_material) { // As of now the fields are shown at the UI dialog in the same combo box as the ramming values, so they // are considered to be active for the single extruder multi-material printers only. @@ -1051,6 +1052,15 @@ void GCode::_do_export(Print &print, FILE *file) } _write(file, m_writer.update_progress(m_layer_count, m_layer_count, true)); // 100% _write(file, m_writer.postamble()); + + // adds tags for time estimators + if (print.config().remaining_times.value) + { + _writeln(file, GCodeTimeEstimator::Normal_Last_M73_Output_Placeholder_Tag); + if (m_silent_time_estimator_enabled) + _writeln(file, GCodeTimeEstimator::Silent_Last_M73_Output_Placeholder_Tag); + } + print.throw_if_canceled(); // calculates estimated printing time @@ -1062,26 +1072,54 @@ void GCode::_do_export(Print &print, FILE *file) print.m_print_statistics.clear(); print.m_print_statistics.estimated_normal_print_time = m_normal_time_estimator.get_time_dhms(); print.m_print_statistics.estimated_silent_print_time = m_silent_time_estimator_enabled ? m_silent_time_estimator.get_time_dhms() : "N/A"; - for (const Extruder &extruder : m_writer.extruders()) { - double used_filament = extruder.used_filament() + (has_wipe_tower ? print.wipe_tower_data().used_filament[extruder.id()] : 0.f); - double extruded_volume = extruder.extruded_volume() + (has_wipe_tower ? print.wipe_tower_data().used_filament[extruder.id()] * 2.4052f : 0.f); // assumes 1.75mm filament diameter - double filament_weight = extruded_volume * extruder.filament_density() * 0.001; - double filament_cost = filament_weight * extruder.filament_cost() * 0.001; - print.m_print_statistics.filament_stats.insert(std::pair(extruder.id(), (float)used_filament)); - _write_format(file, "; filament used = %.1lfmm (%.1lfcm3)\n", used_filament, extruded_volume * 0.001); - if (filament_weight > 0.) { - print.m_print_statistics.total_weight = print.m_print_statistics.total_weight + filament_weight; - _write_format(file, "; filament used = %.1lf\n", filament_weight); - if (filament_cost > 0.) { - print.m_print_statistics.total_cost = print.m_print_statistics.total_cost + filament_cost; - _write_format(file, "; filament cost = %.1lf\n", filament_cost); + std::vector extruders = m_writer.extruders(); + if (! extruders.empty()) { + std::pair out_filament_used_mm ("; filament used [mm] = ", 0); + std::pair out_filament_used_cm3("; filament used [cm3] = ", 0); + std::pair out_filament_used_g ("; filament used [g] = ", 0); + std::pair out_filament_cost ("; filament cost = ", 0); + for (const Extruder &extruder : extruders) { + double used_filament = extruder.used_filament() + (has_wipe_tower ? print.wipe_tower_data().used_filament[extruder.id()] : 0.f); + double extruded_volume = extruder.extruded_volume() + (has_wipe_tower ? print.wipe_tower_data().used_filament[extruder.id()] * 2.4052f : 0.f); // assumes 1.75mm filament diameter + double filament_weight = extruded_volume * extruder.filament_density() * 0.001; + double filament_cost = filament_weight * extruder.filament_cost() * 0.001; + auto append = [&extruder, &extruders](std::pair &dst, const char *tmpl, double value) { + while (dst.second < extruder.id()) { + // Fill in the non-printing extruders with zeros. + dst.first += (dst.second > 0) ? ", 0" : "0"; + ++ dst.second; + } + if (dst.second > 0) + dst.first += ", "; + char buf[64]; + sprintf(buf, tmpl, value); + dst.first += buf; + ++ dst.second; + }; + print.m_print_statistics.filament_stats.insert(std::pair(extruder.id(), (float)used_filament)); + append(out_filament_used_mm, "%.1lf", used_filament); + append(out_filament_used_cm3, "%.1lf", extruded_volume * 0.001); + if (filament_weight > 0.) { + print.m_print_statistics.total_weight = print.m_print_statistics.total_weight + filament_weight; + append(out_filament_used_g, "%.1lf", filament_weight); + if (filament_cost > 0.) { + print.m_print_statistics.total_cost = print.m_print_statistics.total_cost + filament_cost; + append(out_filament_cost, "%.1lf", filament_cost); + } } + print.m_print_statistics.total_used_filament += used_filament; + print.m_print_statistics.total_extruded_volume += extruded_volume; + print.m_print_statistics.total_wipe_tower_filament += has_wipe_tower ? used_filament - extruder.used_filament() : 0.; + print.m_print_statistics.total_wipe_tower_cost += has_wipe_tower ? (extruded_volume - extruder.extruded_volume())* extruder.filament_density() * 0.001 * extruder.filament_cost() * 0.001 : 0.; } - print.m_print_statistics.total_used_filament += used_filament; - print.m_print_statistics.total_extruded_volume += extruded_volume; - print.m_print_statistics.total_wipe_tower_filament += has_wipe_tower ? used_filament - extruder.used_filament() : 0.; - print.m_print_statistics.total_wipe_tower_cost += has_wipe_tower ? (extruded_volume - extruder.extruded_volume())* extruder.filament_density() * 0.001 * extruder.filament_cost() * 0.001 : 0.; + _writeln(file, out_filament_used_mm.first); + _writeln(file, out_filament_used_cm3.first); + if (out_filament_used_g.second) + _writeln(file, out_filament_used_g.first); + if (out_filament_cost.second) + _writeln(file, out_filament_cost.first); } + _write_format(file, "; total filament used [g] = %.1lf\n", print.m_print_statistics.total_weight); _write_format(file, "; total filament cost = %.1lf\n", print.m_print_statistics.total_cost); _write_format(file, "; estimated printing time (normal mode) = %s\n", m_normal_time_estimator.get_time_dhms().c_str()); if (m_silent_time_estimator_enabled) @@ -1536,7 +1574,7 @@ void GCode::process_layer( std::max(region.config().perimeter_extruder.value - 1, 0); // Let's recover vector of extruder overrides: - const ExtruderPerCopy* entity_overrides = const_cast(layer_tools).wiping_extrusions().get_extruder_overrides(fill, correct_extruder_id, layer_to_print.object()->copies().size()); + const ExtruderPerCopy* entity_overrides = const_cast(layer_tools).wiping_extrusions().get_extruder_overrides(fill, correct_extruder_id, (int)layer_to_print.object()->copies().size()); // Now we must add this extrusion into the by_extruder map, once for each extruder that will print it: for (unsigned int extruder : layer_tools.extruders) @@ -2584,9 +2622,12 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string &descri return gcode; } -std::string GCode::_before_extrude(const ExtrusionPath &path, const std::string &description, double speed) { +std::string GCode::_before_extrude(const ExtrusionPath &path, const std::string &description_in, double speed) { std::string gcode; - + std::string description{ description_in }; + if (is_bridge(path.role())) + description += " (bridge)"; + // go to first point of extrusion path if (!m_last_pos_defined || m_last_pos != path.first_point()) { gcode += this->travel_to( diff --git a/src/libslic3r/GCode/Analyzer.cpp b/src/libslic3r/GCode/Analyzer.cpp index 1be26c722..53c2934dc 100644 --- a/src/libslic3r/GCode/Analyzer.cpp +++ b/src/libslic3r/GCode/Analyzer.cpp @@ -776,6 +776,9 @@ void GCodeAnalyzer::_calc_gcode_preview_extrusion_layers(GCodePreviewData& previ preview_data.ranges.width.update_from(width_range); preview_data.ranges.feedrate.update_from(feedrate_range); preview_data.ranges.volumetric_rate.update_from(volumetric_rate_range); + + // we need to sort the layers by their z as they can be shuffled in case of sequential prints + std::sort(preview_data.extrusion.layers.begin(), preview_data.extrusion.layers.end(), [](const GCodePreviewData::Extrusion::Layer& l1, const GCodePreviewData::Extrusion::Layer& l2)->bool { return l1.z < l2.z; }); } void GCodeAnalyzer::_calc_gcode_preview_travel(GCodePreviewData& preview_data, std::function cancel_callback) @@ -855,6 +858,11 @@ void GCodeAnalyzer::_calc_gcode_preview_travel(GCodePreviewData& preview_data, s preview_data.ranges.height.update_from(height_range); preview_data.ranges.width.update_from(width_range); preview_data.ranges.feedrate.update_from(feedrate_range); + + // we need to sort the polylines by their min z as they can be shuffled in case of sequential prints + std::sort(preview_data.travel.polylines.begin(), preview_data.travel.polylines.end(), + [](const GCodePreviewData::Travel::Polyline& p1, const GCodePreviewData::Travel::Polyline& p2)->bool + { return unscale(p1.polyline.bounding_box().min(2)) < unscale(p2.polyline.bounding_box().min(2)); }); } void GCodeAnalyzer::_calc_gcode_preview_retractions(GCodePreviewData& preview_data, std::function cancel_callback) @@ -877,6 +885,11 @@ void GCodeAnalyzer::_calc_gcode_preview_retractions(GCodePreviewData& preview_da Vec3crd position(scale_(move.start_position.x()), scale_(move.start_position.y()), scale_(move.start_position.z())); preview_data.retraction.positions.emplace_back(position, move.data.width, move.data.height); } + + // we need to sort the positions by their z as they can be shuffled in case of sequential prints + std::sort(preview_data.retraction.positions.begin(), preview_data.retraction.positions.end(), + [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2)->bool + { return unscale(p1.position(2)) < unscale(p2.position(2)); }); } void GCodeAnalyzer::_calc_gcode_preview_unretractions(GCodePreviewData& preview_data, std::function cancel_callback) @@ -899,6 +912,11 @@ void GCodeAnalyzer::_calc_gcode_preview_unretractions(GCodePreviewData& preview_ Vec3crd position(scale_(move.start_position.x()), scale_(move.start_position.y()), scale_(move.start_position.z())); preview_data.unretraction.positions.emplace_back(position, move.data.width, move.data.height); } + + // we need to sort the positions by their z as they can be shuffled in case of sequential prints + std::sort(preview_data.unretraction.positions.begin(), preview_data.unretraction.positions.end(), + [](const GCodePreviewData::Retraction::Position& p1, const GCodePreviewData::Retraction::Position& p2)->bool + { return unscale(p1.position(2)) < unscale(p2.position(2)); }); } // Return an estimate of the memory consumed by the time estimator. diff --git a/src/libslic3r/GCode/PostProcessor.cpp b/src/libslic3r/GCode/PostProcessor.cpp index df4acc1bf..25982959b 100644 --- a/src/libslic3r/GCode/PostProcessor.cpp +++ b/src/libslic3r/GCode/PostProcessor.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #ifdef WIN32 @@ -11,6 +12,7 @@ #define WIN32_LEAN_AND_MEAN #define NOMINMAX #include +#include // https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/ // This routine appends the given argument to a command line such that CommandLineToArgvW will return the argument string unchanged. diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp index 6f9b488a3..85f6a4a87 100644 --- a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp +++ b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp @@ -40,7 +40,7 @@ namespace PrusaMultiMaterial { class Writer { public: - Writer(float layer_height, float line_width) : + Writer(float layer_height, float line_width, GCodeFlavor flavor) : m_current_pos(std::numeric_limits::max(), std::numeric_limits::max()), m_current_z(0.f), m_current_feedrate(0.f), @@ -48,7 +48,8 @@ public: m_extrusion_flow(0.f), m_preview_suppressed(false), m_elapsed_time(0.f), - m_default_analyzer_line_width(line_width) + m_default_analyzer_line_width(line_width), + m_gcode_flavor(flavor) { // adds tag for analyzer: char buf[64]; @@ -333,7 +334,10 @@ public: Writer& set_extruder_trimpot(int current) { char buf[128]; - sprintf(buf, "M907 E%d\n", current); + if (m_gcode_flavor == gcfRepRap) + sprintf(buf, "M906 E%d\n", current); + else + sprintf(buf, "M907 E%d\n", current); m_gcode += buf; return *this; }; @@ -407,6 +411,7 @@ private: int current_temp = -1; const float m_default_analyzer_line_width; float m_used_filament_length = 0.f; + GCodeFlavor m_gcode_flavor; std::string set_format_X(float x) { @@ -540,7 +545,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::prime( const float prime_section_width = std::min(240.f / tools.size(), 60.f); box_coordinates cleaning_box(xy(5.f, 0.01f + m_perimeter_width/2.f), prime_section_width, 100.f); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow) .set_z(m_z_pos) .set_initial_tool(m_current_tool) @@ -642,7 +647,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo (tool != (unsigned int)(-1) ? /*m_layer_info->depth*/wipe_area+m_depth_traversed-0.5*m_perimeter_width : m_wipe_tower_depth-m_perimeter_width)); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow) .set_z(m_z_pos) .set_initial_tool(m_current_tool) @@ -661,7 +666,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo // Increase the extruder driver current to allow fast ramming. if (m_set_extruder_trimpot) - writer.set_extruder_trimpot(550); + writer.set_extruder_trimpot(750); // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool. if (tool != (unsigned int)-1){ // This is not the last change. @@ -723,9 +728,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo m_wipe_tower_width, m_wipe_tower_depth); - //use first layer width parameter - - PrusaMultiMaterial::Writer writer(m_layer_height, m_brim_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_brim_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow * 1.1f) .set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop. .set_initial_tool(m_current_tool) @@ -1056,7 +1059,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer() // Otherwise the caller would likely travel to the wipe tower in vain. assert(! this->layer_finished()); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor); writer.set_extrusion_flow(m_extrusion_flow) .set_z(m_z_pos) .set_initial_tool(m_current_tool) diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp index d9de2229b..b6bc5af47 100644 --- a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp +++ b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp @@ -9,6 +9,7 @@ #include "PrintConfig.hpp" #include "WipeTower.hpp" +#include "PrintConfig.hpp" namespace Slic3r @@ -55,8 +56,7 @@ public: // y -- y coordinates of wipe tower in mm ( left bottom corner ) // width -- width of wipe tower in mm ( default 60 mm - leave as it is ) // wipe_area -- space available for one toolchange in mm - WipeTowerPrusaMM(PrintConfig &config, - const std::vector>& wiping_matrix, unsigned int initial_tool, float first_layer_width) : + WipeTowerPrusaMM(PrintConfig &config, const std::vector>& wiping_matrix, unsigned int initial_tool, float first_layer_width) : m_wipe_tower_pos(float(config.wipe_tower_x.value), float(config.wipe_tower_y.value)), m_wipe_tower_width(float(config.wipe_tower_width.value)), m_wipe_tower_rotation_angle(float(config.wipe_tower_rotation_angle.value)), @@ -69,6 +69,7 @@ public: m_extra_loading_move(float(config.extra_loading_move.value)), m_bridging(float(config.wipe_tower_bridging)), m_set_extruder_trimpot(config.high_current_on_filament_swap.value), + m_gcode_flavor(config.gcode_flavor), m_current_tool(initial_tool), wipe_volumes(wiping_matrix), m_brim_width(first_layer_width), @@ -206,7 +207,7 @@ private: const bool m_peters_wipe_tower = false; // sparse wipe tower inspired by Peter's post processor - not finished yet - const float Filament_Area = M_PI * 1.75f * 1.75f / 4.f; // filament area in mm^2 + const float Filament_Area = float(M_PI * 1.75f * 1.75f / 4.f); // filament area in mm^2 const float Width_To_Nozzle_Ratio = 1.25f; // desired line width (oval) in multiples of nozzle diameter - may not be actually neccessary to adjust const float WT_EPSILON = 1e-3f; @@ -233,11 +234,11 @@ private: bool m_set_extruder_trimpot = false; bool m_retain_speed_override = true; bool m_adhesion = true; + GCodeFlavor m_gcode_flavor; - float m_perimeter_width = 0.4 * Width_To_Nozzle_Ratio; // Width of an extrusion line, also a perimeter spacing for 100% infill. + float m_perimeter_width = 0.4f * Width_To_Nozzle_Ratio; // Width of an extrusion line, also a perimeter spacing for 100% infill. float m_brim_width = 0.4 * Width_To_Nozzle_Ratio * Width_To_Nozzle_Ratio; // Width of an extrusion line, also a perimeter spacing for 100% infill. - float m_extrusion_flow = 0.038; //0.029f;// Extrusion flow is derived from m_perimeter_width, layer height and filament diameter. - + float m_extrusion_flow = 0.038f; //0.029f;// Extrusion flow is derived from m_perimeter_width, layer height and filament diameter. struct FilamentParameters { material_type material = PLA; @@ -280,12 +281,12 @@ private: { if ( layer_height < 0 ) return m_extrusion_flow; - return layer_height * ( m_perimeter_width - layer_height * (1-M_PI/4.f)) / Filament_Area; + return layer_height * ( m_perimeter_width - layer_height * (1.f-float(M_PI)/4.f)) / Filament_Area; } // Calculates length of extrusion line to extrude given volume float volume_to_length(float volume, float line_width, float layer_height) const { - return std::max(0., volume / (layer_height * (line_width - layer_height * (1. - M_PI / 4.)))); + return std::max(0.f, volume / (layer_height * (line_width - layer_height * (1.f - float(M_PI) / 4.f)))); } // Calculates depth for all layers and propagates them downwards diff --git a/src/libslic3r/GCodeTimeEstimator.cpp b/src/libslic3r/GCodeTimeEstimator.cpp index 461b4cd35..60d7a4cdf 100644 --- a/src/libslic3r/GCodeTimeEstimator.cpp +++ b/src/libslic3r/GCodeTimeEstimator.cpp @@ -38,7 +38,6 @@ static const std::string MOVE_TYPE_STR[Slic3r::GCodeTimeEstimator::Block::Num_Ty #endif // ENABLE_MOVE_STATS namespace Slic3r { - void GCodeTimeEstimator::Feedrates::reset() { feedrate = 0.0f; @@ -171,6 +170,8 @@ namespace Slic3r { const std::string GCodeTimeEstimator::Normal_First_M73_Output_Placeholder_Tag = "; NORMAL_FIRST_M73_OUTPUT_PLACEHOLDER"; const std::string GCodeTimeEstimator::Silent_First_M73_Output_Placeholder_Tag = "; SILENT_FIRST_M73_OUTPUT_PLACEHOLDER"; + const std::string GCodeTimeEstimator::Normal_Last_M73_Output_Placeholder_Tag = "; NORMAL_LAST_M73_OUTPUT_PLACEHOLDER"; + const std::string GCodeTimeEstimator::Silent_Last_M73_Output_Placeholder_Tag = "; SILENT_LAST_M73_OUTPUT_PLACEHOLDER"; GCodeTimeEstimator::GCodeTimeEstimator(EMode mode) : _mode(mode) @@ -306,9 +307,17 @@ namespace Slic3r { sprintf(time_line, time_mask.c_str(), "0", _get_time_minutes(_time).c_str()); gcode_line = time_line; } + // replaces placeholders for final line M73 with the real lines + else if (((_mode == Normal) && (gcode_line == Normal_Last_M73_Output_Placeholder_Tag)) || + ((_mode == Silent) && (gcode_line == Silent_Last_M73_Output_Placeholder_Tag))) + { + sprintf(time_line, time_mask.c_str(), "100", "0"); + gcode_line = time_line; + } else gcode_line += "\n"; + // add remaining time lines where needed _parser.parse_line(gcode_line, [this, &it_line_id, &g1_lines_count, &last_recorded_time, &time_line, &gcode_line, time_mask, interval](GCodeReader& reader, const GCodeReader::GCodeLine& line) @@ -685,6 +694,8 @@ namespace Slic3r { set_axis_position(X, 0.0f); set_axis_position(Y, 0.0f); set_axis_position(Z, 0.0f); + if (get_e_local_positioning_type() == Absolute) + set_axis_position(E, 0.0f); set_additional_time(0.0f); @@ -705,7 +716,6 @@ namespace Slic3r { _blocks.clear(); } - void GCodeTimeEstimator::_calculate_time() { PROFILE_FUNC(); diff --git a/src/libslic3r/GCodeTimeEstimator.hpp b/src/libslic3r/GCodeTimeEstimator.hpp index ef91d5ff1..1fbc1c14b 100644 --- a/src/libslic3r/GCodeTimeEstimator.hpp +++ b/src/libslic3r/GCodeTimeEstimator.hpp @@ -19,6 +19,8 @@ namespace Slic3r { public: static const std::string Normal_First_M73_Output_Placeholder_Tag; static const std::string Silent_First_M73_Output_Placeholder_Tag; + static const std::string Normal_Last_M73_Output_Placeholder_Tag; + static const std::string Silent_Last_M73_Output_Placeholder_Tag; enum EMode : unsigned char { diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 80c40ca9d..1db8c2b70 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -1188,6 +1188,29 @@ Transformation Transformation::operator * (const Transformation& other) const return Transformation(get_matrix() * other.get_matrix()); } +Eigen::Quaterniond rotation_xyz_diff(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) +{ + return + // From the current coordinate system to world. + Eigen::AngleAxisd(rot_xyz_to(2), Vec3d::UnitZ()) * Eigen::AngleAxisd(rot_xyz_to(1), Vec3d::UnitY()) * Eigen::AngleAxisd(rot_xyz_to(0), Vec3d::UnitX()) * + // From world to the initial coordinate system. + Eigen::AngleAxisd(-rot_xyz_from(0), Vec3d::UnitX()) * Eigen::AngleAxisd(-rot_xyz_from(1), Vec3d::UnitY()) * Eigen::AngleAxisd(-rot_xyz_from(2), Vec3d::UnitZ()); +} + +// This should only be called if it is known, that the two rotations only differ in rotation around the Z axis. +double rotation_diff_z(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) +{ + Eigen::AngleAxisd angle_axis(rotation_xyz_diff(rot_xyz_from, rot_xyz_to)); + Vec3d axis = angle_axis.axis(); + double angle = angle_axis.angle(); +#ifndef NDEBUG + if (std::abs(angle) > 1e-8) { + assert(std::abs(axis.x()) < 1e-8); + assert(std::abs(axis.y()) < 1e-8); + } +#endif /* NDEBUG */ + return (axis.z() < 0) ? -angle : angle; +} //-------------- for tests ----------------------// Point diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 72489d618..79cdc7a84 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -226,6 +226,7 @@ public: const Vec3d& get_mirror() const { return m_mirror; } double get_mirror(Axis axis) const { return m_mirror(axis); } + bool is_left_handed() const { return m_mirror.x() * m_mirror.y() * m_mirror.z() < 0.; } void set_mirror(const Vec3d& mirror); void set_mirror(Axis axis, double mirror); @@ -241,6 +242,28 @@ public: Transformation operator * (const Transformation& other) const; }; +// Rotation when going from the first coordinate system with rotation rot_xyz_from applied +// to a coordinate system with rot_xyz_to applied. +extern Eigen::Quaterniond rotation_xyz_diff(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to); +// Rotation by Z to align rot_xyz_from to rot_xyz_to. +// This should only be called if it is known, that the two rotations only differ in rotation around the Z axis. +extern double rotation_diff_z(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to); + +// Is the angle close to a multiple of 90 degrees? +inline bool is_rotation_ninety_degrees(double a) +{ + a = fmod(std::abs(a), 0.5 * M_PI); + if (a > 0.25 * PI) + a = 0.5 * PI - a; + return a < 0.001; +} + +// Is the angle close to a multiple of 90 degrees? +inline bool is_rotation_ninety_degrees(const Vec3d &rotation) +{ + return is_rotation_ninety_degrees(rotation.x()) && is_rotation_ninety_degrees(rotation.y()) && is_rotation_ninety_degrees(rotation.z()); +} + //------------for tests------------// /// Find the center of the circle corresponding to the vector of Points as an arc. diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index 6b55f3234..370b01f1d 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -286,13 +286,18 @@ void LayerRegion::process_external_surfaces(const Layer* lower_layer) #ifdef SLIC3R_DEBUG printf("Processing bridge at layer " PRINTF_ZU ":\n", this->layer()->id()); #endif - if (bd.detect_angle(Geometry::deg2rad(this->region()->config().bridge_angle.value))) { + double custom_angle = Geometry::deg2rad(this->region()->config().bridge_angle.value); + if (bd.detect_angle(custom_angle)) { bridges[idx_last].bridge_angle = bd.angle; if (this->layer()->object()->config().support_material) { polygons_append(this->bridged, intersection(bd.coverage(), to_polygons(initial))); this->unsupported_bridge_edges.append(bd.unsupported_edges()); } - } + } else if (custom_angle > 0) { + // Bridge was not detected (likely it is only supported at one side). Still it is a surface filled in + // using a bridging flow, therefore it makes sense to respect the custom bridging direction. + bridges[idx_last].bridge_angle = custom_angle; + } // without safety offset, artifacts are generated (GH #2494) surfaces_append(bottom, union_ex(grown, true), bridges[idx_last]); } diff --git a/src/libslic3r/MTUtils.hpp b/src/libslic3r/MTUtils.hpp index 1f6ca1a23..7e91ace32 100644 --- a/src/libslic3r/MTUtils.hpp +++ b/src/libslic3r/MTUtils.hpp @@ -56,8 +56,18 @@ public: } }; -template +/// An std compatible random access iterator which uses indices to the source +/// vector thus resistant to invalidation caused by relocations. It also "knows" +/// its container. No comparison is neccesary to the container "end()" iterator. +/// The template can be instantiated with a different value type than that of +/// the container's but the types must be compatible. E.g. a base class of the +/// contained objects is compatible. +/// +/// For a constant iterator, one can instantiate this template with a value +/// type preceded with 'const'. +template class IndexBasedIterator { static const size_t NONE = size_t(-1); @@ -110,6 +120,8 @@ public: operator difference_type() { return difference_type(m_idx); } + /// Tesing the end of the container... this is not possible with std + /// iterators. inline bool is_end() const { return m_idx >= m_index_ref.get().size();} inline Value & operator*() const { @@ -122,6 +134,7 @@ public: return &m_index_ref.get().operator[](m_idx); } + /// If both iterators point past the container, they are equal... inline bool operator ==(const IndexBasedIterator& other) { size_t e = m_index_ref.get().size(); return m_idx == other.m_idx || (m_idx >= e && other.m_idx >= e); @@ -148,17 +161,23 @@ public: } }; +/// A very simple range concept implementation with iterator-like objects. template class Range { It from, to; public: + + // The class is ready for range based for loops. It begin() const { return from; } It end() const { return to; } + + // The iterator type can be obtained this way. using Type = It; Range() = default; Range(It &&b, It &&e): from(std::forward(b)), to(std::forward(e)) {} + // Some useful container-like methods... inline size_t size() const { return end() - begin(); } inline bool empty() const { return size() == 0; } }; diff --git a/src/libslic3r/MedialAxis.cpp b/src/libslic3r/MedialAxis.cpp index 4620e8881..f9b4c1954 100644 --- a/src/libslic3r/MedialAxis.cpp +++ b/src/libslic3r/MedialAxis.cpp @@ -1329,6 +1329,10 @@ void MedialAxis::simplify_polygon_frontier() { //simplify the boundary between us and the bounds. + ExPolygon simplified_poly = this->surface; + simplified_poly.contour.remove_colinear_points(SCALED_EPSILON); + for (Polygon &hole : simplified_poly.holes) + hole.remove_colinear_points(SCALED_EPSILON); //it will remove every point in the surface contour that aren't on the bounds contour this->expolygon = this->surface; this->expolygon.contour.remove_collinear_points(SCALED_EPSILON); diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 0528236f4..f43724538 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -24,6 +24,19 @@ unsigned int Model::s_auto_extruder_id = 1; size_t ModelBase::s_last_id = 0; +// Unique object / instance ID for the wipe tower. +ModelID wipe_tower_object_id() +{ + static ModelBase mine; + return mine.id(); +} + +ModelID wipe_tower_instance_id() +{ + static ModelBase mine; + return mine.id(); +} + Model& Model::assign_copy(const Model &rhs) { this->copy_id(rhs); @@ -61,7 +74,7 @@ Model& Model::assign_copy(Model &&rhs) this->objects = std::move(rhs.objects); for (ModelObject *model_object : this->objects) model_object->set_model(this); - rhs.objects.clear(); + rhs.objects.clear(); return *this; } @@ -556,19 +569,9 @@ std::string Model::propose_export_file_name_and_path() const for (const ModelObject *model_object : this->objects) for (ModelInstance *model_instance : model_object->instances) if (model_instance->is_printable()) { - input_file = model_object->input_file; - if (! model_object->name.empty()) { - if (input_file.empty()) - // model_object->input_file was empty, just use model_object->name - input_file = model_object->name; - else { - // Replace file name in input_file with model_object->name, but keep the path and file extension. - input_file = (boost::filesystem::path(model_object->name).parent_path().empty()) ? - (boost::filesystem::path(input_file).parent_path() / model_object->name).make_preferred().string() : - model_object->name; - } - } - if (! input_file.empty()) + input_file = model_object->get_export_filename(); + + if (!input_file.empty()) goto end; // Other instances will produce the same name, skip them. break; @@ -603,6 +606,8 @@ ModelObject& ModelObject::assign_copy(const ModelObject &rhs) this->origin_translation = rhs.origin_translation; m_bounding_box = rhs.m_bounding_box; m_bounding_box_valid = rhs.m_bounding_box_valid; + m_raw_bounding_box = rhs.m_raw_bounding_box; + m_raw_bounding_box_valid = rhs.m_raw_bounding_box_valid; m_raw_mesh_bounding_box = rhs.m_raw_mesh_bounding_box; m_raw_mesh_bounding_box_valid = rhs.m_raw_mesh_bounding_box_valid; @@ -637,6 +642,8 @@ ModelObject& ModelObject::assign_copy(ModelObject &&rhs) this->origin_translation = std::move(rhs.origin_translation); m_bounding_box = std::move(rhs.m_bounding_box); m_bounding_box_valid = std::move(rhs.m_bounding_box_valid); + m_raw_bounding_box = rhs.m_raw_bounding_box; + m_raw_bounding_box_valid = rhs.m_raw_bounding_box_valid; m_raw_mesh_bounding_box = rhs.m_raw_mesh_bounding_box; m_raw_mesh_bounding_box_valid = rhs.m_raw_mesh_bounding_box_valid; @@ -651,7 +658,7 @@ ModelObject& ModelObject::assign_copy(ModelObject &&rhs) for (ModelInstance *model_instance : this->instances) model_instance->set_model_object(this); - return *this; + return *this; } void ModelObject::assign_new_unique_ids_recursive() @@ -873,7 +880,7 @@ TriangleMesh ModelObject::full_raw_mesh() const return mesh; } -BoundingBoxf3 ModelObject::raw_mesh_bounding_box() const +const BoundingBoxf3& ModelObject::raw_mesh_bounding_box() const { if (! m_raw_mesh_bounding_box_valid) { m_raw_mesh_bounding_box_valid = true; @@ -894,33 +901,36 @@ BoundingBoxf3 ModelObject::full_raw_mesh_bounding_box() const } // A transformed snug bounding box around the non-modifier object volumes, without the translation applied. -// This bounding box is only used for the actual slicing. -BoundingBoxf3 ModelObject::raw_bounding_box() const +// This bounding box is only used for the actual slicing and for layer editing UI to calculate the layers. +const BoundingBoxf3& ModelObject::raw_bounding_box() const { - BoundingBoxf3 bb; -#if ENABLE_GENERIC_SUBPARTS_PLACEMENT - if (this->instances.empty()) - throw std::invalid_argument("Can't call raw_bounding_box() with no instances"); + if (! m_raw_bounding_box_valid) { + m_raw_bounding_box_valid = true; + m_raw_bounding_box.reset(); + #if ENABLE_GENERIC_SUBPARTS_PLACEMENT + if (this->instances.empty()) + throw std::invalid_argument("Can't call raw_bounding_box() with no instances"); - const Transform3d& inst_matrix = this->instances.front()->get_transformation().get_matrix(true); -#endif // ENABLE_GENERIC_SUBPARTS_PLACEMENT - for (const ModelVolume *v : this->volumes) - if (v->is_model_part()) { -#if !ENABLE_GENERIC_SUBPARTS_PLACEMENT - if (this->instances.empty()) - throw std::invalid_argument("Can't call raw_bounding_box() with no instances"); -#endif // !ENABLE_GENERIC_SUBPARTS_PLACEMENT + const Transform3d& inst_matrix = this->instances.front()->get_transformation().get_matrix(true); + #endif // ENABLE_GENERIC_SUBPARTS_PLACEMENT + for (const ModelVolume *v : this->volumes) + if (v->is_model_part()) { + #if !ENABLE_GENERIC_SUBPARTS_PLACEMENT + if (this->instances.empty()) + throw std::invalid_argument("Can't call raw_bounding_box() with no instances"); + #endif // !ENABLE_GENERIC_SUBPARTS_PLACEMENT - TriangleMesh vol_mesh(v->mesh); -#if ENABLE_GENERIC_SUBPARTS_PLACEMENT - vol_mesh.transform(inst_matrix * v->get_matrix()); - bb.merge(vol_mesh.bounding_box()); -#else - vol_mesh.transform(v->get_matrix()); - bb.merge(this->instances.front()->transform_mesh_bounding_box(vol_mesh, true)); -#endif // ENABLE_GENERIC_SUBPARTS_PLACEMENT - } - return bb; + #if ENABLE_GENERIC_SUBPARTS_PLACEMENT + m_raw_bounding_box.merge(v->mesh.transformed_bounding_box(inst_matrix * v->get_matrix())); + #else + // unmaintaned + assert(false); + // vol_mesh.transform(v->get_matrix()); + // m_raw_bounding_box_valid.merge(this->instances.front()->transform_mesh_bounding_box(vol_mesh, true)); + #endif // ENABLE_GENERIC_SUBPARTS_PLACEMENT + } + } + return m_raw_bounding_box; } // This returns an accurate snug bounding box of the transformed object instance, without the translation applied. @@ -934,13 +944,13 @@ BoundingBoxf3 ModelObject::instance_bounding_box(size_t instance_idx, bool dont_ { if (v->is_model_part()) { - TriangleMesh mesh(v->mesh); #if ENABLE_GENERIC_SUBPARTS_PLACEMENT - mesh.transform(inst_matrix * v->get_matrix()); - bb.merge(mesh.bounding_box()); + bb.merge(v->mesh.transformed_bounding_box(inst_matrix * v->get_matrix())); #else - mesh.transform(v->get_matrix()); - bb.merge(this->instances[instance_idx]->transform_mesh_bounding_box(mesh, dont_translate)); + // not maintained + assert(false); + //mesh.transform(v->get_matrix()); + //bb.merge(this->instances[instance_idx]->transform_mesh_bounding_box(mesh, dont_translate)); #endif // ENABLE_GENERIC_SUBPARTS_PLACEMENT } } @@ -950,7 +960,7 @@ BoundingBoxf3 ModelObject::instance_bounding_box(size_t instance_idx, bool dont_ // Calculate 2D convex hull of of a projection of the transformed printable volumes into the XY plane. // This method is cheap in that it does not make any unnecessary copy of the volume meshes. // This method is used by the auto arrange function. -Polygon ModelObject::convex_hull_2d(const Transform3d &trafo_instance) +Polygon ModelObject::convex_hull_2d(const Transform3d &trafo_instance) const { Points pts; for (const ModelVolume *v : this->volumes) @@ -974,8 +984,8 @@ Polygon ModelObject::convex_hull_2d(const Transform3d &trafo_instance) } } } - std::sort(pts.begin(), pts.end(), [](const Point& a, const Point& b) { return a(0) < b(0) || (a(0) == b(0) && a(1) < b(1)); }); - pts.erase(std::unique(pts.begin(), pts.end(), [](const Point& a, const Point& b) { return a(0) == b(0) && a(1) == b(1); }), pts.end()); + std::sort(pts.begin(), pts.end(), [](const Point& a, const Point& b) { return a(0) < b(0) || (a(0) == b(0) && a(1) < b(1)); }); + pts.erase(std::unique(pts.begin(), pts.end(), [](const Point& a, const Point& b) { return a(0) == b(0) && a(1) == b(1); }), pts.end()); Polygon hull; int n = (int)pts.size(); @@ -1191,10 +1201,12 @@ ModelObjectPtrs ModelObject::cut(size_t instance, coordf_t z, bool keep_upper, b else { TriangleMesh upper_mesh, lower_mesh; - // Transform the mesh by the combined transformation matrix - volume->mesh.transform(instance_matrix * volume_matrix); + // Transform the mesh by the combined transformation matrix. + // Flip the triangles in case the composite transformation is left handed. + volume->mesh.transform(instance_matrix * volume_matrix, true); // Perform cut + volume->mesh.require_shared_vertices(); // TriangleMeshSlicer needs this TriangleMeshSlicer tms(&volume->mesh); tms.cut(float(z), &upper_mesh, &lower_mesh); @@ -1295,11 +1307,11 @@ void ModelObject::split(ModelObjectPtrs* new_objects) // XXX: this seems to be the only real usage of m_model, maybe refactor this so that it's not needed? ModelObject* new_object = m_model->add_object(); - new_object->name = this->name; - new_object->config = this->config; - new_object->instances.reserve(this->instances.size()); - for (const ModelInstance *model_instance : this->instances) - new_object->add_instance(*model_instance); + new_object->name = this->name; + new_object->config = this->config; + new_object->instances.reserve(this->instances.size()); + for (const ModelInstance *model_instance : this->instances) + new_object->add_instance(*model_instance); ModelVolume* new_vol = new_object->add_volume(*volume, std::move(*mesh)); #if !ENABLE_VOLUMES_CENTERING_FIXES new_vol->center_geometry(); @@ -1325,6 +1337,58 @@ void ModelObject::repair() v->mesh.repair(); } +// Support for non-uniform scaling of instances. If an instance is rotated by angles, which are not multiples of ninety degrees, +// then the scaling in world coordinate system is not representable by the Geometry::Transformation structure. +// This situation is solved by baking in the instance transformation into the mesh vertices. +// Rotation and mirroring is being baked in. In case the instance scaling was non-uniform, it is baked in as well. +void ModelObject::bake_xy_rotation_into_meshes(size_t instance_idx) +{ + assert(instance_idx < this->instances.size()); + + const Geometry::Transformation reference_trafo = this->instances[instance_idx]->get_transformation(); + if (Geometry::is_rotation_ninety_degrees(reference_trafo.get_rotation())) + // nothing to do, scaling in the world coordinate space is possible in the representation of Geometry::Transformation. + return; + + bool left_handed = reference_trafo.is_left_handed(); + bool has_mirrorring = ! reference_trafo.get_mirror().isApprox(Vec3d(1., 1., 1.)); + bool uniform_scaling = std::abs(reference_trafo.get_scaling_factor().x() - reference_trafo.get_scaling_factor().y()) < EPSILON && + std::abs(reference_trafo.get_scaling_factor().x() - reference_trafo.get_scaling_factor().z()) < EPSILON; + double new_scaling_factor = uniform_scaling ? reference_trafo.get_scaling_factor().x() : 1.; + + // Adjust the instances. + for (size_t i = 0; i < this->instances.size(); ++ i) { + ModelInstance &model_instance = *this->instances[i]; + model_instance.set_rotation(Vec3d(0., 0., Geometry::rotation_diff_z(reference_trafo.get_rotation(), model_instance.get_rotation()))); + model_instance.set_scaling_factor(Vec3d(new_scaling_factor, new_scaling_factor, new_scaling_factor)); + model_instance.set_mirror(Vec3d(1., 1., 1.)); + } + + // Adjust the meshes. + // Transformation to be applied to the meshes. + Eigen::Matrix3d mesh_trafo_3x3 = reference_trafo.get_matrix(true, false, uniform_scaling, ! has_mirrorring).matrix().block<3, 3>(0, 0); + Transform3d volume_offset_correction = this->instances[instance_idx]->get_transformation().get_matrix().inverse() * reference_trafo.get_matrix(); + for (ModelVolume *model_volume : this->volumes) { + const Geometry::Transformation volume_trafo = model_volume->get_transformation(); + bool volume_left_handed = volume_trafo.is_left_handed(); + bool volume_has_mirrorring = ! volume_trafo.get_mirror().isApprox(Vec3d(1., 1., 1.)); + bool volume_uniform_scaling = std::abs(volume_trafo.get_scaling_factor().x() - volume_trafo.get_scaling_factor().y()) < EPSILON && + std::abs(volume_trafo.get_scaling_factor().x() - volume_trafo.get_scaling_factor().z()) < EPSILON; + double volume_new_scaling_factor = volume_uniform_scaling ? volume_trafo.get_scaling_factor().x() : 1.; + // Transform the mesh. + Matrix3d volume_trafo_3x3 = volume_trafo.get_matrix(true, false, volume_uniform_scaling, !volume_has_mirrorring).matrix().block<3, 3>(0, 0); + model_volume->transform_mesh(mesh_trafo_3x3 * volume_trafo_3x3, left_handed != volume_left_handed); + // Reset the rotation, scaling and mirroring. + model_volume->set_rotation(Vec3d(0., 0., 0.)); + model_volume->set_scaling_factor(Vec3d(volume_new_scaling_factor, volume_new_scaling_factor, volume_new_scaling_factor)); + model_volume->set_mirror(Vec3d(1., 1., 1.)); + // Move the reference point of the volume to compensate for the change of the instance trafo. + model_volume->set_offset(volume_offset_correction * volume_trafo.get_offset()); + } + + this->invalidate_bounding_box(); +} + double ModelObject::get_min_z() const { if (instances.empty()) @@ -1436,6 +1500,71 @@ void ModelObject::print_info() const cout << "volume = " << mesh.volume() << endl; } +std::string ModelObject::get_export_filename() const +{ + std::string ret = input_file; + + if (!name.empty()) + { + if (ret.empty()) + // input_file was empty, just use name + ret = name; + else + { + // Replace file name in input_file with name, but keep the path and file extension. + ret = (boost::filesystem::path(name).parent_path().empty()) ? + (boost::filesystem::path(ret).parent_path() / name).make_preferred().string() : name; + } + } + + return ret; +} + +stl_stats ModelObject::get_object_stl_stats() const +{ + if (this->volumes.size() == 1) + return this->volumes[0]->mesh.stl.stats; + + stl_stats full_stats; + memset(&full_stats, 0, sizeof(stl_stats)); + + // fill full_stats from all objet's meshes + for (ModelVolume* volume : this->volumes) + { + if (volume->id() == this->volumes[0]->id()) + continue; + + const stl_stats& stats = volume->mesh.stl.stats; + + // initialize full_stats (for repaired errors) + full_stats.degenerate_facets += stats.degenerate_facets; + full_stats.edges_fixed += stats.edges_fixed; + full_stats.facets_removed += stats.facets_removed; + full_stats.facets_added += stats.facets_added; + full_stats.facets_reversed += stats.facets_reversed; + full_stats.backwards_edges += stats.backwards_edges; + + // another used satistics value + if (volume->is_model_part()) { + full_stats.volume += stats.volume; + full_stats.number_of_parts += stats.number_of_parts; + } + } + + return full_stats; +} + +int ModelObject::get_mesh_errors_count(const int vol_idx /*= -1*/) const +{ + if (vol_idx >= 0) + return this->volumes[vol_idx]->get_mesh_errors_count(); + + const stl_stats& stats = get_object_stl_stats(); + + return stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + + stats.facets_added + stats.facets_reversed + stats.backwards_edges; +} + void ModelVolume::set_material_id(t_model_material_id material_id) { m_material_id = material_id; @@ -1471,9 +1600,9 @@ int ModelVolume::extruder_id() const bool ModelVolume::is_splittable() const { - // the call mesh.has_multiple_patches() is expensive, so cache the value to calculate it only once + // the call mesh.is_splittable() is expensive, so cache the value to calculate it only once if (m_is_splittable == -1) - m_is_splittable = (int)mesh.has_multiple_patches(); + m_is_splittable = (int)mesh.is_splittable(); return m_is_splittable == 1; } @@ -1501,6 +1630,14 @@ void ModelVolume::calculate_convex_hull() m_convex_hull = mesh.convex_hull_3d(); } +int ModelVolume::get_mesh_errors_count() const +{ + const stl_stats& stats = this->mesh.stl.stats; + + return stats.degenerate_facets + stats.edges_fixed + stats.facets_removed + + stats.facets_added + stats.facets_reversed + stats.backwards_edges; +} + const TriangleMesh& ModelVolume::get_convex_hull() const { return m_convex_hull; @@ -1613,6 +1750,7 @@ void ModelVolume::rotate(double angle, Axis axis) case X: { rotate(angle, Vec3d::UnitX()); break; } case Y: { rotate(angle, Vec3d::UnitY()); break; } case Z: { rotate(angle, Vec3d::UnitZ()); break; } + default: break; } } @@ -1629,6 +1767,7 @@ void ModelVolume::mirror(Axis axis) case X: { mirror(0) *= -1.0; break; } case Y: { mirror(1) *= -1.0; break; } case Z: { mirror(2) *= -1.0; break; } + default: break; } set_mirror(mirror); } @@ -1639,6 +1778,22 @@ void ModelVolume::scale_geometry(const Vec3d& versor) m_convex_hull.scale(versor); } +void ModelVolume::transform_mesh(const Transform3d &mesh_trafo, bool fix_left_handed) +{ + this->mesh.transform(mesh_trafo, fix_left_handed); + this->m_convex_hull.transform(mesh_trafo, fix_left_handed); + // Let the rest of the application know that the geometry changed, so the meshes have to be reloaded. + this->set_new_unique_id(); +} + +void ModelVolume::transform_mesh(const Matrix3d &matrix, bool fix_left_handed) +{ + this->mesh.transform(matrix, fix_left_handed); + this->m_convex_hull.transform(matrix, fix_left_handed); + // Let the rest of the application know that the geometry changed, so the meshes have to be reloaded. + this->set_new_unique_id(); +} + void ModelInstance::transform_mesh(TriangleMesh* mesh, bool dont_translate) const { mesh->transform(get_matrix(dont_translate)); @@ -1715,7 +1870,6 @@ bool model_object_list_extended(const Model &model_old, const Model &model_new) bool model_volume_list_changed(const ModelObject &model_object_old, const ModelObject &model_object_new, const ModelVolumeType type) { - bool modifiers_differ = false; size_t i_old, i_new; for (i_old = 0, i_new = 0; i_old < model_object_old.volumes.size() && i_new < model_object_new.volumes.size();) { const ModelVolume &mv_old = *model_object_old.volumes[i_old]; diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index f05939276..307588960 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -54,6 +54,10 @@ struct ModelID size_t id; }; +// Unique object / instance ID for the wipe tower. +extern ModelID wipe_tower_object_id(); +extern ModelID wipe_tower_instance_id(); + // Base for Model, ModelObject, ModelVolume, ModelInstance or ModelMaterial to provide a unique ID // to synchronize the front end (UI) with the back end (BackgroundSlicingProcess / Print / PrintObject). // Achtung! The s_last_id counter is not thread safe, so it is expected, that the ModelBase derived instances @@ -85,6 +89,9 @@ private: static inline ModelID generate_new_id() { return ModelID(++ s_last_id); } static size_t s_last_id; + + friend ModelID wipe_tower_object_id(); + friend ModelID wipe_tower_instance_id(); }; #define MODELBASE_DERIVED_COPY_MOVE_CLONE(TYPE) \ @@ -212,7 +219,7 @@ public: // This bounding box is approximate and not snug. // This bounding box is being cached. const BoundingBoxf3& bounding_box() const; - void invalidate_bounding_box() { m_bounding_box_valid = false; m_raw_mesh_bounding_box_valid = false; } + void invalidate_bounding_box() { m_bounding_box_valid = false; m_raw_bounding_box_valid = false; m_raw_mesh_bounding_box_valid = false; } // A mesh containing all transformed instances of this object. TriangleMesh mesh() const; @@ -223,18 +230,18 @@ public: TriangleMesh full_raw_mesh() const; // A transformed snug bounding box around the non-modifier object volumes, without the translation applied. // This bounding box is only used for the actual slicing. - BoundingBoxf3 raw_bounding_box() const; + const BoundingBoxf3& raw_bounding_box() const; // A snug bounding box around the transformed non-modifier object volumes. BoundingBoxf3 instance_bounding_box(size_t instance_idx, bool dont_translate = false) const; // A snug bounding box of non-transformed (non-rotated, non-scaled, non-translated) sum of non-modifier object volumes. - BoundingBoxf3 raw_mesh_bounding_box() const; + const BoundingBoxf3& raw_mesh_bounding_box() const; // A snug bounding box of non-transformed (non-rotated, non-scaled, non-translated) sum of all object volumes. BoundingBoxf3 full_raw_mesh_bounding_box() const; // Calculate 2D convex hull of of a projection of the transformed printable volumes into the XY plane. // This method is cheap in that it does not make any unnecessary copy of the volume meshes. // This method is used by the auto arrange function. - Polygon convex_hull_2d(const Transform3d &trafo_instance); + Polygon convex_hull_2d(const Transform3d &trafo_instance) const; #if ENABLE_VOLUMES_CENTERING_FIXES void center_around_origin(bool include_modifiers = true); @@ -265,6 +272,11 @@ public: ModelObjectPtrs cut(size_t instance, coordf_t z, bool keep_upper = true, bool keep_lower = true, bool rotate_lower = false); // Note: z is in world coordinates void split(ModelObjectPtrs* new_objects); void repair(); + // Support for non-uniform scaling of instances. If an instance is rotated by angles, which are not multiples of ninety degrees, + // then the scaling in world coordinate system is not representable by the Geometry::Transformation structure. + // This situation is solved by baking in the instance transformation into the mesh vertices. + // Rotation and mirroring is being baked in. In case the instance scaling was non-uniform, it is baked in as well. + void bake_xy_rotation_into_meshes(size_t instance_idx); double get_min_z() const; double get_instance_min_z(size_t instance_idx) const; @@ -275,6 +287,13 @@ public: // Print object statistics to console. void print_info() const; + std::string get_export_filename() const; + + // Get full stl statistics for all object's meshes + stl_stats get_object_stl_stats() const; + // Get count of errors in the mesh( or all object's meshes, if volume index isn't defined) + int get_mesh_errors_count(const int vol_idx = -1) const; + protected: friend class Print; friend class SLAPrint; @@ -283,7 +302,7 @@ protected: private: ModelObject(Model *model) : m_model(model), origin_translation(Vec3d::Zero()), - m_bounding_box_valid(false), m_raw_mesh_bounding_box_valid(false) {} + m_bounding_box_valid(false), m_raw_bounding_box_valid(false), m_raw_mesh_bounding_box_valid(false) {} ~ModelObject(); /* To be able to return an object from own copy / clone methods. Hopefully the compiler will do the "Copy elision" */ @@ -302,6 +321,8 @@ private: // Bounding box, cached. mutable BoundingBoxf3 m_bounding_box; mutable bool m_bounding_box_valid; + mutable BoundingBoxf3 m_raw_bounding_box; + mutable bool m_raw_bounding_box_valid; mutable BoundingBoxf3 m_raw_mesh_bounding_box; mutable bool m_raw_mesh_bounding_box_valid; }; @@ -366,6 +387,8 @@ public: void calculate_convex_hull(); const TriangleMesh& get_convex_hull() const; + // Get count of errors in the mesh + int get_mesh_errors_count() const; // Helpers for loading / storing into AMF / 3MF files. static ModelVolumeType type_from_string(const std::string &s); @@ -394,6 +417,7 @@ public: const Vec3d& get_mirror() const { return m_transformation.get_mirror(); } double get_mirror(Axis axis) const { return m_transformation.get_mirror(axis); } + bool is_left_handed() const { return m_transformation.is_left_handed(); } void set_mirror(const Vec3d& mirror) { m_transformation.set_mirror(mirror); } void set_mirror(Axis axis, double mirror) { m_transformation.set_mirror(axis, mirror); } @@ -409,6 +433,8 @@ protected: explicit ModelVolume(const ModelVolume &rhs) = default; void set_model_object(ModelObject *model_object) { object = model_object; } + void transform_mesh(const Transform3d& t, bool fix_left_handed); + void transform_mesh(const Matrix3d& m, bool fix_left_handed); private: // Parent object owning this ModelVolume. @@ -498,6 +524,7 @@ public: const Vec3d& get_mirror() const { return m_transformation.get_mirror(); } double get_mirror(Axis axis) const { return m_transformation.get_mirror(axis); } + bool is_left_handed() const { return m_transformation.is_left_handed(); } void set_mirror(const Vec3d& mirror) { m_transformation.set_mirror(mirror); } void set_mirror(Axis axis, double mirror) { m_transformation.set_mirror(axis, mirror); } diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 4942e35b6..bf334bf46 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -1,5 +1,6 @@ #include "ModelArrange.hpp" #include "Model.hpp" +#include "Geometry.hpp" #include "SVG.hpp" #include @@ -538,7 +539,7 @@ public: // 2D shape from top view. using ShapeData2D = std::vector>; -ShapeData2D projectModelFromTop(const Slic3r::Model &model) { +ShapeData2D projectModelFromTop(const Slic3r::Model &model, const WipeTowerInfo& wti) { ShapeData2D ret; // Count all the items on the bin (all the object's instances) @@ -551,7 +552,7 @@ ShapeData2D projectModelFromTop(const Slic3r::Model &model) { ret.reserve(s); for(ModelObject* objptr : model.objects) { - if(objptr) { + if (! objptr->instances.empty()) { // TODO export the exact 2D projection. Cannot do it as libnest2d // does not support concave shapes (yet). @@ -565,35 +566,62 @@ ShapeData2D projectModelFromTop(const Slic3r::Model &model) { rotation.z() = 0.; Transform3d trafo_instance = Geometry::assemble_transform(Vec3d::Zero(), rotation, finst->get_scaling_factor(), finst->get_mirror()); Polygon p = objptr->convex_hull_2d(trafo_instance); - assert(! p.points.empty()); - p.reverse(); - assert(! p.is_counter_clockwise()); + assert(! p.points.empty()); + + // this may happen for malformed models, see: https://github.com/prusa3d/PrusaSlicer/issues/2209 + if (p.points.empty()) + continue; + + p.reverse(); + assert(!p.is_counter_clockwise()); p.append(p.first_point()); clpath = Slic3rMultiPoint_to_ClipperPath(p); } + Vec3d rotation0 = objptr->instances.front()->get_rotation(); + rotation0(2) = 0.; for(ModelInstance* objinst : objptr->instances) { - if(objinst) { - ClipperLib::PolygonImpl pn; - pn.Contour = clpath; + ClipperLib::Polygon pn; + pn.Contour = clpath; - // Efficient conversion to item. - Item item(std::move(pn)); + // Efficient conversion to item. + Item item(std::move(pn)); - // Invalid geometries would throw exceptions when arranging - if(item.vertexCount() > 3) { - item.rotation(objinst->get_rotation(Z)); - item.translation({ - ClipperLib::cInt(objinst->get_offset(X)/SCALING_FACTOR), - ClipperLib::cInt(objinst->get_offset(Y)/SCALING_FACTOR) - }); - ret.emplace_back(objinst, item); - } + // Invalid geometries would throw exceptions when arranging + if(item.vertexCount() > 3) { + item.rotation(float(Geometry::rotation_diff_z(rotation0, objinst->get_rotation()))), + item.translation({ + ClipperLib::cInt(objinst->get_offset(X)/SCALING_FACTOR), + ClipperLib::cInt(objinst->get_offset(Y)/SCALING_FACTOR) + }); + ret.emplace_back(objinst, item); } } } } + // The wipe tower is a separate case (in case there is one), let's duplicate the code + if (wti.is_wipe_tower) { + Points pts; + pts.emplace_back(coord_t(scale_(0.)), coord_t(scale_(0.))); + pts.emplace_back(coord_t(scale_(wti.bb_size(0))), coord_t(scale_(0.))); + pts.emplace_back(coord_t(scale_(wti.bb_size(0))), coord_t(scale_(wti.bb_size(1)))); + pts.emplace_back(coord_t(scale_(-0.)), coord_t(scale_(wti.bb_size(1)))); + pts.emplace_back(coord_t(scale_(-0.)), coord_t(scale_(0.))); + Polygon p(std::move(pts)); + ClipperLib::Path clpath = Slic3rMultiPoint_to_ClipperPath(p); + ClipperLib::Polygon pn; + pn.Contour = clpath; + // Efficient conversion to item. + Item item(std::move(pn)); + item.rotation(wti.rotation), + item.translation({ + ClipperLib::cInt(wti.pos(0)/SCALING_FACTOR), + ClipperLib::cInt(wti.pos(1)/SCALING_FACTOR) + }); + ret.emplace_back(nullptr, item); + } + return ret; } @@ -602,7 +630,8 @@ ShapeData2D projectModelFromTop(const Slic3r::Model &model) { void applyResult( IndexedPackGroup::value_type& group, Coord batch_offset, - ShapeData2D& shapemap) + ShapeData2D& shapemap, + WipeTowerInfo& wti) { for(auto& r : group) { auto idx = r.first; // get the original item index @@ -611,18 +640,25 @@ void applyResult( // Get the model instance from the shapemap using the index ModelInstance *inst_ptr = shapemap[idx].first; - // Get the transformation data from the item object and scale it - // appropriately - auto off = item.translation(); - Radians rot = item.rotation(); + // Get the transformation data from the item object and scale it + // appropriately + auto off = item.translation(); + Radians rot = item.rotation(); - Vec3d foff(off.X*SCALING_FACTOR + batch_offset, - off.Y*SCALING_FACTOR, - inst_ptr->get_offset()(Z)); + Vec3d foff(off.X*SCALING_FACTOR + batch_offset, + off.Y*SCALING_FACTOR, + inst_ptr ? inst_ptr->get_offset()(Z) : 0.); - // write the transformation data into the model instance - inst_ptr->set_rotation(Z, rot); - inst_ptr->set_offset(foff); + if (inst_ptr) { + // write the transformation data into the model instance + inst_ptr->set_rotation(Z, rot); + inst_ptr->set_offset(foff); + } + else { // this is the wipe tower - we will modify the struct with the info + // and leave it up to the called to actually move the wipe tower + wti.pos = Vec2d(foff(0), foff(1)); + wti.rotation = rot; + } } } @@ -708,6 +744,7 @@ BedShapeHint bedShape(const Polyline &bed) { // The final client function to arrange the Model. A progress indicator and // a stop predicate can be also be passed to control the process. bool arrange(Model &model, // The model with the geometries + WipeTowerInfo& wti, // Wipe tower info coord_t min_obj_distance, // Has to be in scaled (clipper) measure const Polyline &bed, // The bed geometry. BedShapeHint bedhint, // Hint about the bed geometry type. @@ -720,7 +757,7 @@ bool arrange(Model &model, // The model with the geometries bool ret = true; // Get the 2D projected shapes with their 3D model instance pointers - auto shapemap = arr::projectModelFromTop(model); + auto shapemap = arr::projectModelFromTop(model, wti); // Copy the references for the shapes only as the arranger expects a // sequence of objects convertible to Item or ClipperPolygon @@ -790,7 +827,7 @@ bool arrange(Model &model, // The model with the geometries if(result.empty() || stopcondition()) return false; if(first_bin_only) { - applyResult(result.front(), 0, shapemap); + applyResult(result.front(), 0, shapemap, wti); } else { const auto STRIDE_PADDING = 1.2; @@ -800,7 +837,7 @@ bool arrange(Model &model, // The model with the geometries Coord batch_offset = 0; for(auto& group : result) { - applyResult(group, batch_offset, shapemap); + applyResult(group, batch_offset, shapemap, wti); // Only the first pack group can be placed onto the print bed. The // other objects which could not fit will be placed next to the @@ -817,10 +854,11 @@ bool arrange(Model &model, // The model with the geometries void find_new_position(const Model &model, ModelInstancePtrs toadd, coord_t min_obj_distance, - const Polyline &bed) + const Polyline &bed, + WipeTowerInfo& wti) { // Get the 2D projected shapes with their 3D model instance pointers - auto shapemap = arr::projectModelFromTop(model); + auto shapemap = arr::projectModelFromTop(model, wti); // Copy the references for the shapes only as the arranger expects a // sequence of objects convertible to Item or ClipperPolygon diff --git a/src/libslic3r/ModelArrange.hpp b/src/libslic3r/ModelArrange.hpp index d76769081..b61443da0 100644 --- a/src/libslic3r/ModelArrange.hpp +++ b/src/libslic3r/ModelArrange.hpp @@ -40,6 +40,13 @@ struct BedShapeHint { BedShapeHint bedShape(const Polyline& bed); +struct WipeTowerInfo { + bool is_wipe_tower = false; + Vec2d pos; + Vec2d bb_size; + double rotation; +}; + /** * \brief Arranges the model objects on the screen. * @@ -66,7 +73,9 @@ BedShapeHint bedShape(const Polyline& bed); * packed. The unsigned argument is the number of items remaining to pack. * \param stopcondition A predicate returning true if abort is needed. */ -bool arrange(Model &model, coord_t min_obj_distance, +bool arrange(Model &model, + WipeTowerInfo& wipe_tower_info, + coord_t min_obj_distance, const Slic3r::Polyline& bed, BedShapeHint bedhint, bool first_bin_only, @@ -78,7 +87,8 @@ bool arrange(Model &model, coord_t min_obj_distance, void find_new_position(const Model& model, ModelInstancePtrs instances_to_add, coord_t min_obj_distance, - const Slic3r::Polyline& bed); + const Slic3r::Polyline& bed, + WipeTowerInfo& wti); } // arr } // Slic3r diff --git a/src/libslic3r/Point.hpp b/src/libslic3r/Point.hpp index 2df30a61e..a411c6271 100644 --- a/src/libslic3r/Point.hpp +++ b/src/libslic3r/Point.hpp @@ -40,6 +40,11 @@ typedef std::vector Points3; typedef std::vector Pointfs; typedef std::vector Pointf3s; +typedef Eigen::Matrix Matrix2f; +typedef Eigen::Matrix Matrix2d; +typedef Eigen::Matrix Matrix3f; +typedef Eigen::Matrix Matrix3d; + typedef Eigen::Transform Transform2f; typedef Eigen::Transform Transform2d; typedef Eigen::Transform Transform3f; diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 2a6fa7fce..dc91b1eca 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -10,7 +10,7 @@ #include "GCode/WipeTowerPrusaMM.hpp" #include "Utils.hpp" -#include "PrintExport.hpp" +//#include "PrintExport.hpp" #include @@ -132,7 +132,6 @@ bool Print::invalidate_state_by_config_options(const std::vectormodel_object()->raw_mesh(); - ModelInstance * finst = object->model_object()->instances.front(); - // Object instances should carry the same scaling and - // x, y rotation that is why we use the first instance. - // The next line will apply only the full mirroring and scaling - rmesh.transform(finst->get_matrix(true, true, false, false)); - rmesh.rotate_x(float(finst->get_rotation()(X))); - rmesh.rotate_y(float(finst->get_rotation()(Y))); - - // TODO export the exact 2D projection. Cannot do it as libnest2d - // does not support concave shapes (yet). - auto p = rmesh.convex_hull(); - - p.make_clockwise(); - p.append(p.first_point()); - clpath = Slic3rMultiPoint_to_ClipperPath(p); - } - - std::vector convex_hull_items; - for (ModelInstance* objinst : object->model_object()->instances) { - if (objinst) { - ClipperLib::PolygonImpl pn; - pn.Contour = clpath; - // Efficient conversion to item. - libnest2d::Item item(std::move(pn)); - // Invalid geometries would throw exceptions when arranging - if (item.vertexCount() > 3) { - item.rotation(objinst->get_rotation(Z)); - item.translation({ - ClipperLib::cInt(objinst->get_offset(X) / SCALING_FACTOR), - ClipperLib::cInt(objinst->get_offset(Y) / SCALING_FACTOR) - }); - convex_hull_items.push_back(item); - } - } - } - Polygons convex_hull; - for (libnest2d::Item &item : convex_hull_items){ - //conversion to Polygons - ClipperLib::PolygonImpl var = item; - ClipperLib::Path cont = var.Contour; - convex_hull.push_back(ClipperPath_to_Slic3rPolygon(cont)); - } - - // Now we check that no instance of convex_hull intersects any of the previously checked object instances. - for (Polygon p : convex_hull){ + for (const PrintObject *print_object : m_objects) { + assert(! print_object->model_object()->instances.empty()); + assert(! print_object->copies().empty()); + // Get convex hull of all meshes assigned to this print object. + ModelInstance *model_instance0 = print_object->model_object()->instances.front(); + Vec3d rotation = model_instance0->get_rotation(); + rotation.z() = 0.; + // Calculate the convex hull of a printable object centered around X=0,Y=0. // Grow convex hull with the clearance margin. - p = offset(p, scale_(m_config.min_object_distance() / 2), jtRound, scale_(0.1)).front(); - if (!intersection(convex_hulls_other, p).empty()){ + // FIXME: Arrangement has different parameters for offsetting (jtMiter, limit 2) + // which causes that the warning will be showed after arrangement with the + // appropriate object distance. Even if I set this to jtMiter the warning still shows up. + Polygon convex_hull0 = offset( + print_object->model_object()->convex_hull_2d( + Geometry::assemble_transform(Vec3d::Zero(), rotation, model_instance0->get_scaling_factor(), model_instance0->get_mirror())), + scale_(m_config.extruder_clearance_radius.value) / 2., jtRound, scale_(0.1)).front(); + // Now we check that no instance of convex_hull intersects any of the previously checked object instances. + for (const Point © : print_object->m_copies) { + Polygon convex_hull = convex_hull0; + convex_hull.translate(copy); + if (! intersection(convex_hulls_other, convex_hull).empty()) return L("Some objects are too close; your extruder will collide with them."); - } - polygons_append(convex_hulls_other, p); + polygons_append(convex_hulls_other, convex_hull); } } } @@ -1266,7 +1229,7 @@ std::string Print::validate() const const SlicingParameters &slicing_params = object->slicing_parameters(); if (std::abs(slicing_params.first_print_layer_height - slicing_params0.first_print_layer_height) > EPSILON || std::abs(slicing_params.layer_height - slicing_params0.layer_height ) > EPSILON) - return L("The Wipe Tower is only supported for multiple objects if they have equal layer heigths"); + return L("The Wipe Tower is only supported for multiple objects if they have equal layer heights"); if (slicing_params.raft_layers() != slicing_params0.raft_layers()) return L("The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers"); if (object->config().support_material_contact_distance_type != m_objects.front()->config().support_material_contact_distance_type @@ -1358,7 +1321,7 @@ std::string Print::validate() const } // validate first_layer_height - double first_layer_height = object->config().get_abs_value(L("first_layer_height")); + double first_layer_height = object->config().get_abs_value("first_layer_height"); double first_layer_min_nozzle_diameter; if (object->config().raft_layers > 0) { // if we have raft layers, only support material extruder is used on first layer @@ -1521,7 +1484,7 @@ void Print::process() BOOST_LOG_TRIVIAL(info) << "Staring the slicing process." << log_memory_info(); for (PrintObject *obj : m_objects) obj->make_perimeters(); - this->set_status(70, "Infilling layers"); + this->set_status(70, L("Infilling layers")); for (PrintObject *obj : m_objects) obj->infill(); for (PrintObject *obj : m_objects) @@ -1529,7 +1492,7 @@ void Print::process() if (this->set_started(psSkirt)) { m_skirt.clear(); if (this->has_skirt()) { - this->set_status(88, "Generating skirt"); + this->set_status(88, L("Generating skirt")); if (config().complete_objects){ for (PrintObject *obj : m_objects){ //create a skirt "pattern" (one per object) @@ -1548,7 +1511,7 @@ void Print::process() if (this->set_started(psBrim)) { m_brim.clear(); if (m_config.brim_width > 0) { - this->set_status(88, "Generating brim"); + this->set_status(88, L("Generating brim")); if (config().complete_objects){ for (PrintObject *obj : m_objects){ //create a brim "pattern" (one per object) @@ -1574,7 +1537,7 @@ void Print::process() if (this->set_started(psWipeTower)) { m_wipe_tower_data.clear(); if (this->has_wipe_tower()) { - //this->set_status(95, "Generating wipe tower"); + //this->set_status(95, L("Generating wipe tower")); this->_make_wipe_tower(); } this->set_done(psWipeTower); @@ -1591,12 +1554,14 @@ std::string Print::export_gcode(const std::string &path_template, GCodePreviewDa // output everything to a G-code file // The following call may die if the output_filename_format template substitution fails. std::string path = this->output_filepath(path_template); - std::string message = "Exporting G-code"; + std::string message; if (! path.empty() && preview_data == nullptr) { // Only show the path if preview_data is not set -> running from command line. + message = L("Exporting G-code"); message += " to "; message += path; - } + } else + message = L("Generating G-code"); this->set_status(90, message); // The following line may die for multiple reasons. @@ -1955,7 +1920,7 @@ void Print::_make_wipe_tower() // Check whether there are any layers in m_tool_ordering, which are marked with has_wipe_tower, // they print neither object, nor support. These layers are above the raft and below the object, and they // shall be added to the support layers to be printed. - // see https://github.com/prusa3d/Slic3r/issues/607 + // see https://github.com/prusa3d/PrusaSlicer/issues/607 { size_t idx_begin = size_t(-1); size_t idx_end = m_wipe_tower_data.tool_ordering.layer_tools().size(); diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 8a1822f89..b06957cd4 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -132,7 +132,7 @@ public: // The slicing parameters are dependent on various configuration values // (layer height, first layer height, raft settings, print nozzle diameter etc). const SlicingParameters& slicing_parameters() const { return m_slicing_params; } - static SlicingParameters slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object); + static SlicingParameters slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object, float object_max_z); // returns 0-based indices of extruders used to print the object (without brim, support and other helper extrusions) std::vector object_extruders() const; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f7f3ec366..1afe84985 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -14,7 +14,8 @@ namespace Slic3r { //! macro used to mark string used at localization, //! return same string -#define L(s) Slic3r::I18N::translate(s) +#define L(s) (s) +#define _(s) Slic3r::I18N::translate(s) static void assign_printer_technology_to_unknown(t_optiondef_map &options, PrinterTechnology printer_technology) { @@ -45,12 +46,12 @@ void PrintConfigDef::init_common_params() def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("FFF"); def->enum_values.push_back("SLA"); - def->default_value = new ConfigOptionEnum(ptFFF); + def->set_default_value(new ConfigOptionEnum(ptFFF)); def = this->add("bed_shape", coPoints); def->label = L("Bed shape"); def->mode = comAdvanced; - def->default_value = new ConfigOptionPoints{ Vec2d(0, 0), Vec2d(200, 0), Vec2d(200, 200), Vec2d(0, 200) }; + def->set_default_value(new ConfigOptionPoints{ Vec2d(0, 0), Vec2d(200, 0), Vec2d(200, 200), Vec2d(0, 200) }); def = this->add("layer_height", coFloat); def->label = L("Base Layer height"); @@ -60,14 +61,14 @@ void PrintConfigDef::init_common_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.3); + def->set_default_value(new ConfigOptionFloat(0.3)); def = this->add("max_print_height", coFloat); def->label = L("Max print height"); def->tooltip = L("Set this to the maximum height that can be reached by your extruder while printing."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(200.0); + def->set_default_value(new ConfigOptionFloat(200.0)); def = this->add("slice_closing_radius", coFloat); def->label = L("Slice gap closing radius"); @@ -77,28 +78,28 @@ void PrintConfigDef::init_common_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.049); + def->set_default_value(new ConfigOptionFloat(0.049)); def = this->add("print_host", coString); def->label = L("Hostname, IP or URL"); def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printhost_apikey", coString); def->label = L("API Key / Password"); def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printhost_cafile", coString); - def->label = "HTTPS CA File"; - def->tooltip = "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. " - "If left blank, the default OS CA certificate repository is used."; + def->label = L("HTTPS CA File"); + def->tooltip = L("Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. " + "If left blank, the default OS CA certificate repository is used."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); } void PrintConfigDef::init_fff_params() @@ -115,7 +116,7 @@ void PrintConfigDef::init_fff_params() "This is mostly useful with Bowden extruders which suffer from oozing. " "This feature slows down both the print and the G-code generation."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("bed_temperature", coInts); def->label = L("Other layers"); @@ -125,7 +126,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°C"); def->min = 0; def->max = 300; - def->default_value = new ConfigOptionInts { 0 }; + def->set_default_value(new ConfigOptionInts { 0 }); def = this->add("before_layer_gcode", coString); def->label = L("Before layer change G-code"); @@ -134,25 +135,26 @@ void PrintConfigDef::init_fff_params() "as [layer_num] and [layer_z]."); def->multiline = true; def->full_width = true; - def->height = 50; + def->height = 5; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("between_objects_gcode", coString); def->label = L("Between objects G-code"); def->tooltip = L("This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("bottom_solid_layers", coInt); + //TRN To be shown in Print Settings "Bottom solid layers" def->label = L("Bottom"); def->category = L("Layers and Perimeters"); def->tooltip = L("Number of solid layers to generate on bottom surfaces."); def->full_label = L("Bottom solid layers"); def->min = 0; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("bridge_acceleration", coFloat); def->label = L("Bridge"); @@ -162,7 +164,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("bridge_angle", coFloat); def->label = L("Bridging"); @@ -174,7 +176,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.); + def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("bridge_fan_speed", coInts); def->label = L("Bridges fan speed"); @@ -183,7 +185,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comAdvanced; - def->default_value = new ConfigOptionInts { 100 }; + def->set_default_value(new ConfigOptionInts { 100 }); def = this->add("top_fan_speed", coInts); def->label = L("Top fan speed"); @@ -192,7 +194,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comAdvanced; - def->default_value = new ConfigOptionInts{ 100 }; + def->set_default_value(new ConfigOptionInts{ 100 }); def = this->add("bridge_flow_ratio", coFloat); def->label = L("Bridge"); @@ -205,7 +207,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 2; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1); + def->set_default_value(new ConfigOptionFloat(1)); def = this->add("over_bridge_flow_ratio", coFloat); def->label = L("Above the bridges"); @@ -216,7 +218,7 @@ void PrintConfigDef::init_fff_params() " You can increase it slightly to pull the top layer at the correct height. Recommended maximum: 1.2."); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1); + def->set_default_value(new ConfigOptionFloat(1)); def = this->add("bridge_speed", coFloat); def->label = L("Bridges"); @@ -227,7 +229,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "bridge_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("brim_width", coFloat); def->label = L("Brim width"); @@ -235,13 +237,13 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comSimple; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("brim_ears", coBool); def->label = L(" "); def->full_label = L("Brim ears"); def->tooltip = L("Only draw brim over the sharp edges of the model."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("brim_ears_max_angle", coFloat); def->label = L("max angle"); @@ -249,7 +251,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°"); def->min = 0; def->max = 180; - def->default_value = new ConfigOptionFloat(125); + def->set_default_value(new ConfigOptionFloat(125)); def = this->add("chamber_temperature", coInts); def->label = L("Chamber"); @@ -259,25 +261,25 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 300; def->mode = comExpert; - def->default_value = new ConfigOptionInts{ 0 }; + def->set_default_value(new ConfigOptionInts{ 0 }); def = this->add("clip_multipart_objects", coBool); def->label = L("Clip multi-part objects"); - def->tooltip = L("When printing multi-material objects, this settings will make slic3r " + def->tooltip = L("When printing multi-material objects, this settings will make Slic3r " "to clip the overlapping object parts one by the other " "(2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc)."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("colorprint_heights", coFloats); def->label = L("Colorprint height"); def->tooltip = L("Heights at which a filament change is to occur. "); - def->default_value = new ConfigOptionFloats { }; + def->set_default_value(new ConfigOptionFloats { }); def = this->add("compatible_printers", coStrings); def->label = L("Compatible printers"); def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_printers_condition", coString); @@ -286,13 +288,13 @@ void PrintConfigDef::init_fff_params() "If this expression evaluates to true, this profile is considered compatible " "with the active printer profile."); def->mode = comExpert; - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints", coStrings); def->label = L("Compatible print profiles"); def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints_condition", coString); @@ -301,16 +303,16 @@ void PrintConfigDef::init_fff_params() "If this expression evaluates to true, this profile is considered compatible " "with the active print profile."); def->mode = comExpert; - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; // The following value is to be stored into the project file (AMF, 3MF, Config ...) // and it contains a sum of "compatible_printers_condition" values over the print and filament profiles. def = this->add("compatible_printers_condition_cummulative", coStrings); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints_condition_cummulative", coStrings); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("complete_objects", coBool); @@ -320,30 +322,30 @@ void PrintConfigDef::init_fff_params() "This feature is useful to avoid the risk of ruined prints. " "Slic3r should warn and prevent you from extruder collisions, but beware."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("cooling", coBools); def->label = L("Enable auto cooling"); def->tooltip = L("This flag enables the automatic cooling logic that adjusts print speed " "and fan speed according to layer printing time."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { true }; + def->set_default_value(new ConfigOptionBools { true }); def = this->add("cooling_tube_retraction", coFloat); def->label = L("Cooling tube position"); - def->tooltip = L("Distance of the center-point of the cooling tube from the extruder tip "); + def->tooltip = L("Distance of the center-point of the cooling tube from the extruder tip."); def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(91.5f); + def->set_default_value(new ConfigOptionFloat(91.5f)); def = this->add("cooling_tube_length", coFloat); def->label = L("Cooling tube length"); - def->tooltip = L("Length of the cooling tube to limit space for cooling moves inside it "); + def->tooltip = L("Length of the cooling tube to limit space for cooling moves inside it."); def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(5.f); + def->set_default_value(new ConfigOptionFloat(5.f)); def = this->add("default_acceleration", coFloat); def->label = L("Default"); @@ -354,20 +356,20 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("default_filament_profile", coStrings); def->label = L("Default filament profile"); def->tooltip = L("Default filament profile associated with the current printer profile. " "On selection of the current printer profile, this filament profile will be activated."); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("default_print_profile", coString); def->label = L("Default print profile"); def->tooltip = L("Default print profile associated with the current printer profile. " "On selection of the current printer profile, this print profile will be activated."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("disable_fan_first_layers", coInts); @@ -378,7 +380,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 1000; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 3 }; + def->set_default_value(new ConfigOptionInts { 3 }); def = this->add("dont_support_bridges", coBool); def->label = L("Don't support bridges"); @@ -386,7 +388,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Experimental option for preventing support material from being generated " "under bridged areas."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("duplicate_distance", coFloat); def->label = L("Distance between copies"); @@ -394,7 +396,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->aliases = { "multiply_distance" }; def->min = 0; - def->default_value = new ConfigOptionFloat(6); + def->set_default_value(new ConfigOptionFloat(6)); def = this->add("elefant_foot_compensation", coFloat); def->label = L("First layer"); @@ -404,7 +406,7 @@ void PrintConfigDef::init_fff_params() "to compensate for the 1st layer squish aka an Elephant Foot effect. (should be negative = inwards)"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("end_gcode", coString); def->label = L("End G-code"); @@ -412,9 +414,9 @@ void PrintConfigDef::init_fff_params() "Note that you can use placeholder variables for all Slic3r settings."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n"); + def->set_default_value(new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n")); def = this->add("end_filament_gcode", coStrings); def->label = L("End G-code"); @@ -426,7 +428,7 @@ void PrintConfigDef::init_fff_params() def->full_width = true; def->height = 120; def->mode = comExpert; - def->default_value = new ConfigOptionStrings { "; Filament-specific end gcode \n;END gcode for filament\n" }; + def->set_default_value(new ConfigOptionStrings { "; Filament-specific end gcode \n;END gcode for filament\n" }); def = this->add("ensure_vertical_shell_thickness", coBool); def->label = L("Ensure vertical shell thickness"); @@ -434,7 +436,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Add solid infill near sloping surfaces to guarantee the vertical shell thickness " "(top+bottom solid layers)."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("top_fill_pattern", coEnum); def->label = L("Top"); @@ -463,7 +465,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Octagram Spiral")); def->enum_labels.push_back(L("Sawtooth")); def->enum_labels.push_back(L("Ironing")); - def->default_value = new ConfigOptionEnum(ipRectilinear); + def->set_default_value(new ConfigOptionEnum(ipRectilinear)); def = this->add("bottom_fill_pattern", coEnum); def->label = L("Bottom"); @@ -489,7 +491,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Octagram Spiral")); def->enum_labels.push_back(L("Ironing")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(ipRectilinear); + def->set_default_value(new ConfigOptionEnum(ipRectilinear)); def = this->add("solid_fill_pattern", coEnum); def->label = L("Solid pattern"); @@ -514,7 +516,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Archimedean Chords")); def->enum_labels.push_back(L("Octagram Spiral")); def->mode = comExpert; - def->default_value = new ConfigOptionEnum(ipRectilinearWGapFill); + def->set_default_value(new ConfigOptionEnum(ipRectilinearWGapFill)); def = this->add("enforce_full_fill_volume", coBool); def->label = L("Enforce 100% fill volume"); @@ -524,7 +526,7 @@ void PrintConfigDef::init_fff_params() "but it can go as high as +50% for infill in very small areas where rectilinear doesn't have good coverage). It has the advantage " "to remove the over-extrusion seen in thin infill areas, from the overlap ratio"); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("external_infill_margin", coFloatOrPercent); def->label = L("Default"); @@ -534,7 +536,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloatOrPercent(150, true); + def->set_default_value(new ConfigOptionFloatOrPercent(150, true)); def = this->add("bridged_infill_margin", coFloatOrPercent); def->label = L("Bridged"); @@ -544,7 +546,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloatOrPercent(200, true); + def->set_default_value(new ConfigOptionFloatOrPercent(200, true)); def = this->add("external_perimeter_extrusion_width", coFloatOrPercent); def->label = L("External perimeters"); @@ -553,9 +555,9 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Set this to a non-zero value to set a manual extrusion width for external perimeters. " "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. " "If expressed as percentage (for example 112.5%), it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("external_perimeter_speed", coFloatOrPercent); def->label = L("External"); @@ -568,7 +570,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "perimeter_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(50, true); + def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); def = this->add("external_perimeters_first", coBool); def->label = L("External perimeters first"); @@ -576,7 +578,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Print contour perimeters from the outermost one to the innermost one " "instead of the default inverse order."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("perimeter_loop", coBool); def->label = L(" "); @@ -585,7 +587,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Join the perimeters to create only one continuous extrusion without any z-hop." " Long inside travel (from external to holes) are not extruded to give some space to the infill."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("perimeter_loop_seam", coEnum); def->label = L("Seam position"); @@ -598,7 +600,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Nearest")); def->enum_labels.push_back(L("Rear")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(spRear); + def->set_default_value(new ConfigOptionEnum(spRear)); def = this->add("extra_perimeters", coBool); def->label = L("Extra perimeters if needed"); @@ -608,13 +610,13 @@ void PrintConfigDef::init_fff_params() "is supported, and keep adding periemter until all overhangs are filled." "\n!! this is a very slow algorithm !!"); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("only_one_perimeter_top", coBool); def->label = "Only one perimeter on Top surfaces"; def->category = "Layers and Perimeters"; def->tooltip = "Use only one perimeter on flat top surface, to let more space to the top infill pattern."; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("extruder", coInt); @@ -645,7 +647,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(20); + def->set_default_value(new ConfigOptionFloat(20)); def = this->add("extruder_clearance_radius", coFloat); def->label = L("Radius"); @@ -657,7 +659,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(20); + def->set_default_value(new ConfigOptionFloat(20)); def = this->add("extruder_colour", coStrings); def->label = L("Extruder Color"); @@ -665,7 +667,7 @@ void PrintConfigDef::init_fff_params() def->gui_type = "color"; // Empty string means no color assigned yet. def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings { "" }; + def->set_default_value(new ConfigOptionStrings{ "" }); def = this->add("extruder_offset", coPoints); def->label = L("Extruder offset"); @@ -675,13 +677,13 @@ void PrintConfigDef::init_fff_params() "from the XY coordinate)."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionPoints { Vec2d(0,0) }; + def->set_default_value(new ConfigOptionPoints { Vec2d(0,0) }); def = this->add("extrusion_axis", coString); def->label = L("Extrusion axis"); def->tooltip = L("Use this option to set the axis letter associated to your printer's extruder " "(usually E but some printers use A)."); - def->default_value = new ConfigOptionString("E"); + def->set_default_value(new ConfigOptionString("E")); def = this->add("extrusion_multiplier", coFloats); def->label = L("Extrusion multiplier"); @@ -690,7 +692,7 @@ void PrintConfigDef::init_fff_params() "Usual values are between 0.9 and 1.1. If you think you need to change this more, " "check filament diameter and your firmware E steps."); def->mode = comSimple; - def->default_value = new ConfigOptionFloats { 1. }; + def->set_default_value(new ConfigOptionFloats { 1. }); def = this->add("extrusion_width", coFloatOrPercent); def->label = L("Default extrusion width"); @@ -699,27 +701,27 @@ void PrintConfigDef::init_fff_params() "If left to zero, Slic3r derives extrusion widths from the nozzle diameter " "(see the tooltips for perimeter extrusion width, infill extrusion width etc). " "If expressed as percentage (for example: 105%), it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for auto)"); + def->sidetext = L("mm or %"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("fan_always_on", coBools); def->label = L("Keep fan always on"); def->tooltip = L("If this is enabled, fan will never be disabled and will be kept running at least " "at its minimum speed. Useful for PLA, harmful for ABS."); def->mode = comSimple; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools{ false }); def = this->add("fan_below_layer_time", coInts); def->label = L("Enable fan if layer print time is below"); def->tooltip = L("If layer print time is estimated below this number of seconds, fan will be enabled " "and its speed will be calculated by interpolating the minimum and maximum speeds."); def->sidetext = L("approximate seconds"); - def->width = 60; + def->width = 6; def->min = 0; def->max = 1000; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 60 }; + def->set_default_value(new ConfigOptionInts { 60 }); def = this->add("filament_colour", coStrings); def->label = L("Color"); @@ -727,16 +729,16 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("This is only used in the Slic3r interface as a visual help."); def->gui_type = "color"; def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings { "#29B2B2" }; + def->set_default_value(new ConfigOptionStrings{ "#29B2B2" }); def = this->add("filament_notes", coStrings); def->label = L("Filament notes"); def->tooltip = L("You can put your notes regarding the filament here."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings { "" }; + def->set_default_value(new ConfigOptionStrings { "" }); def = this->add("filament_max_volumetric_speed", coFloats); def->label = L("Max volumetric speed"); @@ -746,7 +748,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_max_wipe_tower_speed", coFloats); def->label = L("Max speed on the wipe tower"); @@ -755,7 +757,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 200; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0 }; + def->set_default_value(new ConfigOptionFloats { 0 }); def = this->add("filament_loading_speed", coFloats); def->label = L("Loading speed"); @@ -763,7 +765,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 28. }; + def->set_default_value(new ConfigOptionFloats { 28. }); def = this->add("filament_loading_speed_start", coFloats); def->label = L("Loading speed at the start"); @@ -771,7 +773,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 3. }; + def->set_default_value(new ConfigOptionFloats { 3. }); def = this->add("filament_unloading_speed", coFloats); def->label = L("Unloading speed"); @@ -780,7 +782,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 90. }; + def->set_default_value(new ConfigOptionFloats { 90. }); def = this->add("filament_unloading_speed_start", coFloats); def->label = L("Unloading speed at the start"); @@ -788,7 +790,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 100. }; + def->set_default_value(new ConfigOptionFloats { 100. }); def = this->add("filament_toolchange_delay", coFloats); def->label = L("Delay after unloading"); @@ -798,16 +800,16 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_cooling_moves", coInts); def->label = L("Number of cooling moves"); def->tooltip = L("Filament is cooled by being moved back and forth in the " - "cooling tubes. Specify desired number of these moves "); + "cooling tubes. Specify desired number of these moves."); def->max = 0; def->max = 20; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 4 }; + def->set_default_value(new ConfigOptionInts { 4 }); def = this->add("filament_cooling_initial_speed", coFloats); def->label = L("Speed of the first cooling move"); @@ -815,7 +817,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 2.2f }; + def->set_default_value(new ConfigOptionFloats { 2.2f }); def = this->add("filament_minimal_purge_on_wipe_tower", coFloats); def->label = L("Minimal purge on wipe tower"); @@ -826,7 +828,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 15.f }; + def->set_default_value(new ConfigOptionFloats { 15.f }); def = this->add("filament_cooling_final_speed", coFloats); def->label = L("Speed of the last cooling move"); @@ -834,7 +836,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 3.4f }; + def->set_default_value(new ConfigOptionFloats { 3.4f }); def = this->add("filament_load_time", coFloats); def->label = L("Filament load time"); @@ -842,14 +844,14 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0.0f }; + def->set_default_value(new ConfigOptionFloats { 0.0f }); def = this->add("filament_ramming_parameters", coStrings); def->label = L("Ramming parameters"); - def->tooltip = L("This string is edited by RammingDialog and contains ramming specific parameters "); + def->tooltip = L("This string is edited by RammingDialog and contains ramming specific parameters."); def->mode = comExpert; - def->default_value = new ConfigOptionStrings { "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0|" - " 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" }; + def->set_default_value(new ConfigOptionStrings { "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0|" + " 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" }); def = this->add("filament_unload_time", coFloats); def->label = L("Filament unload time"); @@ -857,7 +859,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0.0f }; + def->set_default_value(new ConfigOptionFloats { 0.0f }); def = this->add("filament_diameter", coFloats); def->label = L("Diameter"); @@ -866,7 +868,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 3. }; + def->set_default_value(new ConfigOptionFloats{ 1.75 }); def = this->add("filament_density", coFloats); def->label = L("Density"); @@ -876,7 +878,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("g/cm³"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats{ 0. }); def = this->add("filament_type", coStrings); def->label = L("Filament type"); @@ -903,23 +905,23 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("other8"); def->enum_values.push_back("other9"); def->mode = comAdvanced; - def->default_value = new ConfigOptionStrings { "PLA" }; + def->set_default_value(new ConfigOptionStrings { "PLA" }); def = this->add("filament_soluble", coBools); def->label = L("Soluble material"); def->tooltip = L("Soluble material is most likely used for a soluble support."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("filament_cost", coFloats); def->label = L("Cost"); def->tooltip = L("Enter your filament cost per kg here. This is only for statistical information."); def->sidetext = L("money/kg"); def->min = 0; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("filament_settings_id", coStrings); - def->default_value = new ConfigOptionStrings { "" }; + def->set_default_value(new ConfigOptionStrings { "" }); def->cli = ConfigOptionDef::nocli; def = this->add("fill_angle", coFloat); @@ -933,7 +935,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 360; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(45); + def->set_default_value(new ConfigOptionFloat(45)); def = this->add("fill_density", coPercent); def->gui_type = "f_enum_open"; @@ -973,6 +975,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("80%"); def->enum_labels.push_back("90%"); def->enum_labels.push_back("100%"); + def->set_default_value(new ConfigOptionPercent(20); */ def->enum_values.push_back("0"); def->enum_values.push_back("4"); @@ -1000,7 +1003,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("55"); def->enum_labels.push_back("75"); def->enum_labels.push_back("100"); - def->default_value = new ConfigOptionPercent(18); + def->set_default_value(new ConfigOptionPercent(18)); def = this->add("fill_pattern", coEnum); def->label = L("Pattern"); @@ -1036,7 +1039,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Archimedean Chords")); def->enum_labels.push_back(L("Octagram Spiral")); def->enum_labels.push_back(L("Scattered Rectilinear")); - def->default_value = new ConfigOptionEnum(ipStars); + def->set_default_value( new ConfigOptionEnum(ipStars)); def = this->add("first_layer_acceleration", coFloat); def->label = L("First layer"); @@ -1046,7 +1049,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("first_layer_bed_temperature", coInts); def->label = L("First layer"); @@ -1056,7 +1059,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°C"); def->max = 0; def->max = 300; - def->default_value = new ConfigOptionInts { 0 }; + def->set_default_value(new ConfigOptionInts { 0 }); def = this->add("first_layer_extrusion_width", coFloatOrPercent); def->label = L("First layer"); @@ -1067,10 +1070,10 @@ void PrintConfigDef::init_fff_params() "as percentage (for example 140%) it will be computed over the nozzle diameter " "of the nozzle used for the type of extrusion. " "If set to zero, it will use the default extrusion width."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->ratio_over = "first_layer_height"; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(140, true); + def->set_default_value(new ConfigOptionFloatOrPercent(140, true)); def = this->add("first_layer_height", coFloatOrPercent); def->label = L("First layer height"); @@ -1082,7 +1085,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "layer_height"; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0.35, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0.35, false)); def = this->add("first_layer_speed", coFloatOrPercent); def->label = L("Default"); @@ -1094,7 +1097,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s or %"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(30, false); + def->set_default_value(new ConfigOptionFloatOrPercent(30, false)); def = this->add("first_layer_infill_speed", coFloatOrPercent); def->label = L("Infill"); @@ -1106,7 +1109,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s or %"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloatOrPercent(30, false); + def->set_default_value(new ConfigOptionFloatOrPercent(30, false)); def = this->add("first_layer_temperature", coInts); def->label = L("First layer"); @@ -1116,7 +1119,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°C"); def->min = 0; def->max = max_temp; - def->default_value = new ConfigOptionInts{ 200 }; + def->set_default_value(new ConfigOptionInts { 200 }); def = this->add("gap_fill", coBool); def->label = L("Gap fill"); @@ -1124,7 +1127,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Enable gap fill algorithm. It will extrude small lines between perimeters " "when there is not enough space for another perimeter or an infill."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("gap_fill_speed", coFloat); def->label = L("Gap fill"); @@ -1135,7 +1138,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(20); + def->set_default_value(new ConfigOptionFloat(20)); def = this->add("gcode_comments", coBool); def->label = L("Verbose G-code"); @@ -1143,7 +1146,7 @@ void PrintConfigDef::init_fff_params() "If you print from SD card, the additional weight of the file could make your firmware " "slow down."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(0); + def->set_default_value(new ConfigOptionBool(0)); def = this->add("gcode_flavor", coEnum); def->label = L("G-code flavor"); @@ -1172,16 +1175,16 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("Smoothie"); def->enum_labels.push_back(L("No extrusion")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(gcfRepRap); + def->set_default_value(new ConfigOptionEnum(gcfRepRap)); def = this->add("gcode_label_objects", coBool); - def->label = "Label objects"; - def->tooltip = "Enable this to add comments into the G-Code labeling print moves with what object they belong to," + def->label = L("Label objects"); + def->tooltip = L("Enable this to add comments into the G-Code labeling print moves with what object they belong to," " which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with " - "Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill."; + "Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill."); def->aliases = { "label_printed_objects" }; def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(1); + def->set_default_value(new ConfigOptionBool(1)); def = this->add("high_current_on_filament_swap", coBool); def->label = L("High extruder current on filament swap"); @@ -1189,7 +1192,7 @@ void PrintConfigDef::init_fff_params() " sequence to allow for rapid ramming feed rates and to overcome resistance when loading" " a filament with an ugly shaped tip."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(0); + def->set_default_value(new ConfigOptionBool(0)); def = this->add("infill_acceleration", coFloat); def->label = L("Infill"); @@ -1199,7 +1202,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("infill_every_layers", coInt); def->label = L("Combine infill every"); @@ -1210,7 +1213,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Combine infill every n layers"); def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("infill_dense", coBool); def->label = (""); @@ -1219,14 +1222,14 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Enables the creation of a support layer under the first solid layer. This allows you to use a lower infill ratio without compromising the top quality." " The dense infill is laid out with a 50% infill density."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("infill_not_connected", coBool); def->label = ("Do not connect infill lines to each other"); def->category = L("Infill"); def->tooltip = L("If checked, the infill algorithm will try to not connect the lines near the infill. Can be useful for art or with high infill/perimeter overlap."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("infill_dense_algo", coEnum); def->label = L("Algorithm"); @@ -1242,7 +1245,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Automatic, only for small areas")); def->enum_labels.push_back(L("Anchored")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(dfaAutomatic); + def->set_default_value(new ConfigOptionEnum(dfaAutomatic)); def = this->add("infill_extruder", coInt); def->label = L("Infill extruder"); @@ -1250,7 +1253,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The extruder to use when printing infill."); def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("infill_extrusion_width", coFloatOrPercent); def->label = L("Infill"); @@ -1259,16 +1262,16 @@ void PrintConfigDef::init_fff_params() "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. " "You may want to use fatter extrudates to speed up the infill and make your parts stronger. " "If expressed as percentage (for example 110%) it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("infill_first", coBool); def->label = L("Infill before perimeters"); def->category = L("Infill"); def->tooltip = L("This option will switch the print order of perimeters and infill, making the latter first."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("infill_only_where_needed", coBool); def->label = L("Only infill where needed"); @@ -1277,7 +1280,7 @@ void PrintConfigDef::init_fff_params() "(it will act as internal support material). If enabled, slows down the G-code generation " "due to the multiple checks involved."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("infill_overlap", coFloatOrPercent); def->label = L("Infill/perimeters overlap"); @@ -1288,7 +1291,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "perimeter_extrusion_width"; def->mode = comExpert; - def->default_value = new ConfigOptionFloatOrPercent(25, true); + def->set_default_value(new ConfigOptionFloatOrPercent(25, true)); def = this->add("infill_speed", coFloat); def->label = L("Sparse"); @@ -1299,20 +1302,20 @@ void PrintConfigDef::init_fff_params() def->aliases = { "print_feed_rate", "infill_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(80); + def->set_default_value(new ConfigOptionFloat(80)); def = this->add("inherits", coString); def->label = L("Inherits profile"); def->tooltip = L("Name of the profile, from which this profile inherits."); def->full_width = true; - def->height = 50; - def->default_value = new ConfigOptionString(); + def->height = 5; + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; // The following value is to be stored into the project file (AMF, 3MF, Config ...) // and it contains a sum of "inherits" values over the print and filament profiles. def = this->add("inherits_cummulative", coStrings); - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("interface_shells", coBool); @@ -1322,7 +1325,7 @@ void PrintConfigDef::init_fff_params() "support material."); def->category = L("Layers and Perimeters"); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("layer_gcode", coString); def->label = L("After layer change G-code"); @@ -1332,16 +1335,16 @@ void PrintConfigDef::init_fff_params() def->cli = "after-layer-gcode|layer-gcode"; def->multiline = true; def->full_width = true; - def->height = 50; + def->height = 5; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("exact_last_layer_height", coBool); def->label = L("Exact last layer height"); def->category = L("Layers and Perimeters"); def->tooltip = L("This setting controls the height of last object layers to put the last layer at the exact highest height possible. Experimental."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("remaining_times", coBool); def->label = L("Supports remaining times"); @@ -1351,14 +1354,14 @@ void PrintConfigDef::init_fff_params() " As of now only the Prusa i3 MK3 firmware recognizes M73." " Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("silent_mode", coBool); - def->label = L("Supports silent mode"); + def->label = L("Supports stealth mode"); def->category = L("Firmware"); - def->tooltip = L("Set silent mode for the G-code flavor"); + def->tooltip = L("The firmware supports stealth mode"); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("fan_speedup_time", coFloat); def->label = L("fan startup delay"); @@ -1367,7 +1370,7 @@ void PrintConfigDef::init_fff_params() " It assume infinite acceleration for this time estimation, and only takes into account G1 and G0 moves. Use 0 to deactivate, negative to remove the 'D' option."); def->sidetext = L("s"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); const int machine_limits_opt_width = 70; { @@ -1388,34 +1391,58 @@ void PrintConfigDef::init_fff_params() std::string axis_upper = boost::to_upper_copy(axis.name); // Add the machine feedrate limits for XYZE axes. (M203) def = this->add("machine_max_feedrate_" + axis.name, coFloats); - def->full_label = (boost::format(L("Maximum feedrate %1%")) % axis_upper).str(); + def->full_label = (boost::format("Maximum feedrate %1%") % axis_upper).str(); + L("Maximum feedrate X"); + L("Maximum feedrate Y"); + L("Maximum feedrate Z"); + L("Maximum feedrate E"); def->category = L("Machine limits"); - def->tooltip = (boost::format(L("Maximum feedrate of the %1% axis")) % axis_upper).str(); + def->tooltip = (boost::format("Maximum feedrate of the %1% axis") % axis_upper).str(); + L("Maximum feedrate of the X axis"); + L("Maximum feedrate of the Y axis"); + L("Maximum feedrate of the Z axis"); + L("Maximum feedrate of the E axis"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats(axis.max_feedrate); + def->set_default_value(new ConfigOptionFloats(axis.max_feedrate)); // Add the machine acceleration limits for XYZE axes (M201) def = this->add("machine_max_acceleration_" + axis.name, coFloats); - def->full_label = (boost::format(L("Maximum acceleration %1%")) % axis_upper).str(); + def->full_label = (boost::format("Maximum acceleration %1%") % axis_upper).str(); + L("Maximum acceleration X"); + L("Maximum acceleration Y"); + L("Maximum acceleration Z"); + L("Maximum acceleration E"); def->category = L("Machine limits"); - def->tooltip = (boost::format(L("Maximum acceleration of the %1% axis")) % axis_upper).str(); + def->tooltip = (boost::format("Maximum acceleration of the %1% axis") % axis_upper).str(); + L("Maximum acceleration of the X axis"); + L("Maximum acceleration of the Y axis"); + L("Maximum acceleration of the Z axis"); + L("Maximum acceleration of the E axis"); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats(axis.max_acceleration); + def->set_default_value(new ConfigOptionFloats(axis.max_acceleration)); // Add the machine jerk limits for XYZE axes (M205) def = this->add("machine_max_jerk_" + axis.name, coFloats); - def->full_label = (boost::format(L("Maximum jerk %1%")) % axis_upper).str(); + def->full_label = (boost::format("Maximum jerk %1%") % axis_upper).str(); + L("Maximum jerk X"); + L("Maximum jerk Y"); + L("Maximum jerk Z"); + L("Maximum jerk E"); def->category = L("Machine limits"); - def->tooltip = (boost::format(L("Maximum jerk of the %1% axis")) % axis_upper).str(); + def->tooltip = (boost::format("Maximum jerk of the %1% axis") % axis_upper).str(); + L("Maximum jerk of the X axis"); + L("Maximum jerk of the Y axis"); + L("Maximum jerk of the Z axis"); + L("Maximum jerk of the E axis"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats(axis.max_jerk); + def->set_default_value(new ConfigOptionFloats(axis.max_jerk)); } } @@ -1423,45 +1450,45 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_min_extruding_rate", coFloats); def->full_label = L("Minimum feedrate when extruding"); def->category = L("Machine limits"); - def->tooltip = L("Minimum feedrate when extruding") + " (M205 S)"; + def->tooltip = L("Minimum feedrate when extruding (M205 S)"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 0., 0. }; + def->set_default_value(new ConfigOptionFloats{ 0., 0. }); // M205 T... [mm/sec] def = this->add("machine_min_travel_rate", coFloats); def->full_label = L("Minimum travel feedrate"); def->category = L("Machine limits"); - def->tooltip = L("Minimum travel feedrate") + " (M205 T)"; + def->tooltip = L("Minimum travel feedrate (M205 T)"); def->sidetext = L("mm/s"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 0., 0. }; + def->set_default_value(new ConfigOptionFloats{ 0., 0. }); // M204 S... [mm/sec^2] def = this->add("machine_max_acceleration_extruding", coFloats); def->full_label = L("Maximum acceleration when extruding"); def->category = L("Machine limits"); - def->tooltip = L("Maximum acceleration when extruding") + " (M204 S)"; + def->tooltip = L("Maximum acceleration when extruding (M204 S)"); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 1500., 1250. }; + def->set_default_value(new ConfigOptionFloats{ 1500., 1250. }); // M204 T... [mm/sec^2] def = this->add("machine_max_acceleration_retracting", coFloats); def->full_label = L("Maximum acceleration when retracting"); def->category = L("Machine limits"); - def->tooltip = L("Maximum acceleration when retracting") + " (M204 T)"; + def->tooltip = L("Maximum acceleration when retracting (M204 T)"); def->sidetext = L("mm/s²"); def->min = 0; def->width = machine_limits_opt_width; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats{ 1500., 1250. }; + def->set_default_value(new ConfigOptionFloats{ 1500., 1250. }); def = this->add("max_fan_speed", coInts); def->label = L("Max"); @@ -1471,7 +1498,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comAdvanced; - def->default_value = new ConfigOptionInts { 100 }; + def->set_default_value(new ConfigOptionInts { 100 }); def = this->add("max_layer_height", coFloats); def->label = L("Max"); @@ -1483,7 +1510,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comSimple; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("max_print_speed", coFloat); def->label = L("Max print speed"); @@ -1493,7 +1520,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 1; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(80); + def->set_default_value(new ConfigOptionFloat(80)); def = this->add("max_volumetric_speed", coFloat); def->label = L("Max volumetric speed"); @@ -1502,7 +1529,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); #ifdef HAS_PRESSURE_EQUALIZER def = this->add("max_volumetric_extrusion_rate_slope_positive", coFloat); @@ -1514,7 +1541,8 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("max_volumetric_extrusion_rate_slope_negative", coFloat); def->label = L("Max volumetric slope negative"); @@ -1525,7 +1553,8 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm³/s²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); #endif /* HAS_PRESSURE_EQUALIZER */ def = this->add("min_fan_speed", coInts); @@ -1536,7 +1565,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 100; def->mode = comSimple; - def->default_value = new ConfigOptionInts { 35 }; + def->set_default_value(new ConfigOptionInts { 35 }); def = this->add("min_layer_height", coFloats); def->label = L("Min"); @@ -1546,7 +1575,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comSimple; - def->default_value = new ConfigOptionFloats { 0.07 }; + def->set_default_value(new ConfigOptionFloats { 0.07 }); def = this->add("min_print_speed", coFloats); def->label = L("Min print speed"); @@ -1554,7 +1583,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 10. }; + def->set_default_value(new ConfigOptionFloats { 10. }); def = this->add("min_skirt_length", coFloat); def->label = L("Minimal filament extrusion length"); @@ -1564,7 +1593,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("notes", coString); def->label = L("Configuration notes"); @@ -1572,16 +1601,16 @@ void PrintConfigDef::init_fff_params() "header comments."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("nozzle_diameter", coFloats); def->label = L("Nozzle diameter"); def->tooltip = L("This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0.5 }; + def->set_default_value(new ConfigOptionFloats{ 0.4 }); def = this->add("host_type", coEnum); def->label = L("Host Type"); @@ -1593,35 +1622,35 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("OctoPrint"); def->enum_labels.push_back("Duet"); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(htOctoPrint); + def->set_default_value(new ConfigOptionEnum(htOctoPrint)); def = this->add("printhost_apikey", coString); def->label = L("API Key / Password"); def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " "the API Key or the password required for authentication."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printhost_cafile", coString); def->label = L("HTTPS CA File"); def->tooltip = "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. " "If left blank, the default OS CA certificate repository is used."; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("print_host", coString); def->label = L("Hostname, IP or URL"); def->tooltip = L("Slic3r can upload G-code files to a printer host. This field should contain " "the hostname, IP address or URL of the printer host instance."); def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("only_retract_when_crossing_perimeters", coBool); def->label = L("Only retract when crossing perimeters"); def->tooltip = L("Disables retraction when the travel path does not exceed the upper layer's perimeters " "(and thus any ooze will be probably invisible)."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("ooze_prevention", coBool); def->label = L("Enable"); @@ -1629,7 +1658,7 @@ void PrintConfigDef::init_fff_params() "It will enable a tall skirt automatically and move extruders outside such " "skirt when changing temperatures."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("output_filename_format", coString); def->label = L("Output filename format"); @@ -1639,7 +1668,7 @@ void PrintConfigDef::init_fff_params() "[input_filename_base]."); def->full_width = true; def->mode = comExpert; - def->default_value = new ConfigOptionString("[input_filename_base]"); + def->set_default_value(new ConfigOptionString("[input_filename_base]")); def = this->add("overhangs", coBool); def->label = L("Detect bridging perimeters"); @@ -1647,7 +1676,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Experimental option to adjust flow for overhangs (bridge flow will be used), " "to apply bridge speed to them and enable fan."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("no_perimeter_unsupported_algo", coEnum); def->label = L("No perimeters on bridge areas"); @@ -1669,7 +1698,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Keep bridges and overhangs")); def->enum_labels.push_back(L("Fill the voids with bridges")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(npuaNone); + def->set_default_value(new ConfigOptionEnum(npuaNone)); def = this->add("parking_pos_retraction", coFloat); def->label = L("Filament parking position"); @@ -1678,7 +1707,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(92.f); + def->set_default_value(new ConfigOptionFloat(92.f)); def = this->add("extra_loading_move", coFloat); def->label = L("Extra loading distance"); @@ -1687,7 +1716,7 @@ void PrintConfigDef::init_fff_params() " if negative, the loading move is shorter than unloading. "); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(-2.f); + def->set_default_value(new ConfigOptionFloat(-2.f)); def = this->add("perimeter_acceleration", coFloat); def->label = L("Perimeters"); @@ -1697,7 +1726,7 @@ void PrintConfigDef::init_fff_params() "Set zero to disable acceleration control for perimeters."); def->sidetext = L("mm/s²"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("perimeter_extruder", coInt); def->label = L("Perimeter extruder"); @@ -1706,7 +1735,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeters_extruder" }; def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("perimeter_extrusion_width", coFloatOrPercent); def->label = L("Perimeters"); @@ -1716,10 +1745,10 @@ void PrintConfigDef::init_fff_params() "You may want to use thinner extrudates to get more accurate surfaces. " "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. " "If expressed as percentage (for example 105%) it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->aliases = { "perimeters_extrusion_width" }; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("perimeter_speed", coFloat); def->label = L("Default"); @@ -1730,7 +1759,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeter_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("perimeters", coInt); def->label = L("Perimeters"); @@ -1744,7 +1773,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "perimeter_offsets" }; def->min = 0; def->max = 10000; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("post_process", coStrings); def->label = L("Post-processing scripts"); @@ -1755,14 +1784,14 @@ void PrintConfigDef::init_fff_params() def->gui_flags = "serialized"; def->multiline = true; def->full_width = true; - def->height = 60; + def->height = 6; def->mode = comExpert; - def->default_value = new ConfigOptionStrings(); + def->set_default_value(new ConfigOptionStrings()); def = this->add("printer_model", coString); def->label = L("Printer type"); def->tooltip = L("Type of the printer."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("printer_notes", coString); @@ -1770,28 +1799,28 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("You can put your notes regarding the printer here."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("printer_vendor", coString); def->label = L("Printer vendor"); def->tooltip = L("Name of the printer vendor."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("printer_variant", coString); def->label = L("Printer variant"); def->tooltip = L("Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("print_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("printer_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("support_material_solid_first_layer", coBool); @@ -1799,7 +1828,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Support material"); def->tooltip = L("Use a solid layer instead of a raft for the layer that touch the build plate."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("raft_layers", coInt); def->label = L("Raft layers"); @@ -1809,7 +1838,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("layers"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("resolution", coFloat); def->label = L("Resolution"); @@ -1821,14 +1850,14 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("retract_before_travel", coFloats); def->label = L("Minimum travel after retraction"); def->tooltip = L("Retraction is not triggered when travel moves are shorter than this length."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 2. }; + def->set_default_value(new ConfigOptionFloats { 2. }); def = this->add("retract_before_wipe", coPercents); def->label = L("Retract amount before wipe"); @@ -1836,13 +1865,13 @@ void PrintConfigDef::init_fff_params() "before doing the wipe movement."); def->sidetext = L("%"); def->mode = comAdvanced; - def->default_value = new ConfigOptionPercents { 0. }; + def->set_default_value(new ConfigOptionPercents { 0. }); def = this->add("retract_layer_change", coBools); def->label = L("Retract on layer change"); def->tooltip = L("This flag enforces a retraction whenever a Z move is done."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("retract_length", coFloats); def->label = L("Length"); @@ -1851,7 +1880,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("When retraction is triggered, filament is pulled back by the specified amount " "(the length is measured on raw filament, before it enters the extruder)."); def->sidetext = L("mm (zero to disable)"); - def->default_value = new ConfigOptionFloats { 2. }; + def->set_default_value(new ConfigOptionFloats { 2. }); def = this->add("retract_length_toolchange", coFloats); def->label = L("Length"); @@ -1862,7 +1891,7 @@ void PrintConfigDef::init_fff_params() "the extruder)."); def->sidetext = L("mm (zero to disable)"); def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 10. }; + def->set_default_value(new ConfigOptionFloats { 10. }); def = this->add("retract_lift", coFloats); def->label = L("Lift Z"); @@ -1870,7 +1899,7 @@ void PrintConfigDef::init_fff_params() "is triggered. When using multiple extruders, only the setting for the first extruder " "will be considered."); def->sidetext = L("mm"); - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_lift_above", coFloats); def->label = L("Above Z"); @@ -1880,7 +1909,7 @@ void PrintConfigDef::init_fff_params() "absolute Z. You can tune this setting for skipping lift on the first layers."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_lift_below", coFloats); def->label = L("Below Z"); @@ -1891,7 +1920,7 @@ void PrintConfigDef::init_fff_params() "to the first layers."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_lift_not_last_layer", coBools); def->label = L("Not on top"); @@ -1899,7 +1928,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Support material"); def->tooltip = L("Select this option to not use the z-lift on a top surface."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("retract_restart_extra", coFloats); def->label = L("Extra length on restart"); @@ -1907,7 +1936,7 @@ void PrintConfigDef::init_fff_params() "this additional amount of filament. This setting is rarely needed."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_restart_extra_toolchange", coFloats); def->label = L("Extra length on restart"); @@ -1916,7 +1945,7 @@ void PrintConfigDef::init_fff_params() "this additional amount of filament."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("retract_speed", coFloats); def->label = L("Retraction Speed"); @@ -1924,7 +1953,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The speed for retractions (it only applies to the extruder motor)."); def->sidetext = L("mm/s"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 40. }; + def->set_default_value(new ConfigOptionFloats { 40. }); def = this->add("deretract_speed", coFloats); def->label = L("Deretraction Speed"); @@ -1933,7 +1962,7 @@ void PrintConfigDef::init_fff_params() "(it only applies to the extruder motor). If left to zero, the retraction speed is used."); def->sidetext = L("mm/s"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloats { 0. }; + def->set_default_value(new ConfigOptionFloats { 0. }); def = this->add("seam_position", coEnum); def->label = L("Seam position"); @@ -1951,7 +1980,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Rear")); def->enum_labels.push_back(L("Hidden")); def->mode = comSimple; - def->default_value = new ConfigOptionEnum(spHidden); + def->set_default_value(new ConfigOptionEnum(spHidden)); def = this->add("seam_travel", coBool); def->label = L("Travel move reduced"); @@ -1959,7 +1988,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Add a big cost to travel paths when possible (when going into a loop), so it will prefer a less optimal seam posistion if it's nearer."); def->cli = "seam-travel!"; def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); #if 0 def = this->add("seam_preferred_direction", coFloat); @@ -1970,7 +1999,8 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Seam preferred direction"); def->min = 0; def->max = 360; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("seam_preferred_direction_jitter", coFloat); // def->gui_type = "slider"; @@ -1980,7 +2010,8 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Preferred direction of the seam - jitter"); def->min = 0; def->max = 360; - def->default_value = new ConfigOptionFloat(30); + def->set_default_value(new ConfigOptionFloat(30); + def->set_default_value(new ConfigOptionFloat(30)); #endif def = this->add("serial_port", coString); @@ -1988,8 +2019,8 @@ void PrintConfigDef::init_fff_params() def->label = ""; def->full_label = L("Serial port"); def->tooltip = L("USB/serial port for printer connection."); - def->width = 200; - def->default_value = new ConfigOptionString(""); + def->width = 20; + def->set_default_value(new ConfigOptionString("")); def = this->add("serial_speed", coInt); def->gui_type = "i_enum_open"; @@ -2001,7 +2032,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("115200"); def->enum_values.push_back("250000"); def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(250000); + def->set_default_value(new ConfigOptionInt(250000)); def = this->add("skirt_distance", coFloat); def->label = L("Distance from object"); @@ -2010,7 +2041,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(6); + def->set_default_value(new ConfigOptionFloat(6)); def = this->add("skirt_height", coInt); def->label = L("Skirt height"); @@ -2018,7 +2049,7 @@ void PrintConfigDef::init_fff_params() "as a shield against drafts."); def->sidetext = L("layers"); def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("skirts", coInt); def->label = L("Loops (minimum)"); @@ -2028,18 +2059,18 @@ void PrintConfigDef::init_fff_params() "to disable skirt completely."); def->min = 0; def->mode = comSimple; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("slowdown_below_layer_time", coInts); def->label = L("Slow down if layer print time is below"); def->tooltip = L("If layer print time is estimated below this number of seconds, print moves " "speed will be scaled down to extend duration to this value."); def->sidetext = L("approximate seconds"); - def->width = 60; + def->width = 6; def->min = 0; def->max = 1000; def->mode = comExpert; - def->default_value = new ConfigOptionInts { 5 }; + def->set_default_value(new ConfigOptionInts { 5 }); def = this->add("small_perimeter_speed", coFloatOrPercent); def->label = L("Small"); @@ -2052,7 +2083,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "perimeter_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(15, false); + def->set_default_value(new ConfigOptionFloatOrPercent(15, false)); def = this->add("curve_smoothing_angle", coFloat); def->label = L("Min angle"); @@ -2066,7 +2097,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 180; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("curve_smoothing_precision", coFloat); def->label = L("Precision"); @@ -2081,7 +2112,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->cli = "curve-smoothing-precision=f"; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("solid_infill_below_area", coFloat); def->label = L("Solid infill threshold area"); @@ -2090,7 +2121,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm²"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(70); + def->set_default_value(new ConfigOptionFloat(70)); def = this->add("solid_infill_extruder", coInt); def->label = L("Solid infill extruder"); @@ -2098,7 +2129,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The extruder to use when printing solid infill."); def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("solid_infill_every_layers", coInt); def->label = L("Solid infill every"); @@ -2110,7 +2141,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("layers"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("solid_infill_extrusion_width", coFloatOrPercent); def->label = L("Solid infill"); @@ -2119,9 +2150,9 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Set this to a non-zero value to set a manual extrusion width for infill for solid surfaces. " "If left zero, default extrusion width will be used if set, otherwise 1.125 x nozzle diameter will be used. " "If expressed as percentage (for example 110%) it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("solid_infill_speed", coFloatOrPercent); def->label = L("Solid"); @@ -2135,7 +2166,7 @@ void PrintConfigDef::init_fff_params() def->aliases = { "solid_infill_feed_rate" }; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(20, false); + def->set_default_value(new ConfigOptionFloatOrPercent(20, false)); def = this->add("solid_layers", coInt); def->label = L("Solid layers"); @@ -2151,7 +2182,7 @@ void PrintConfigDef::init_fff_params() "no infill, no top solid layers and no support material. You can still set " "any number of bottom solid layers as well as skirt/brim loops. " "It won't work when printing more than an object."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("standby_temperature_delta", coInt); def->label = L("Temperature variation"); @@ -2161,7 +2192,7 @@ void PrintConfigDef::init_fff_params() def->min = -max_temp; def->max = max_temp; def->mode = comExpert; - def->default_value = new ConfigOptionInt(-5); + def->set_default_value(new ConfigOptionInt(-5)); def = this->add("start_gcode", coString); def->label = L("Start G-code"); @@ -2174,9 +2205,9 @@ void PrintConfigDef::init_fff_params() "a \"M109 S[first_layer_temperature]\" command wherever you want."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n"); + def->set_default_value(new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n")); def = this->add("start_filament_gcode", coStrings); def->label = L("Start G-code"); @@ -2191,9 +2222,9 @@ void PrintConfigDef::init_fff_params() "in extruder order."); def->multiline = true; def->full_width = true; - def->height = 120; + def->height = 12; def->mode = comExpert; - def->default_value = new ConfigOptionStrings { "; Filament gcode\n" }; + def->set_default_value(new ConfigOptionStrings { "; Filament gcode\n" }); def = this->add("model_precision", coFloat); @@ -2206,25 +2237,25 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.0001); + def->set_default_value(new ConfigOptionFloat(0.0001)); def = this->add("single_extruder_multi_material", coBool); def->label = L("Single Extruder Multi Material"); def->tooltip = L("The printer multiplexes filaments into a single hot end."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("single_extruder_multi_material_priming", coBool); def->label = L("Prime all printing extruders"); def->tooltip = L("If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("support_material", coBool); def->label = L("Generate support material"); def->category = L("Support material"); def->tooltip = L("Enable support material generation."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_auto", coBool); def->label = L("Auto generated supports"); @@ -2232,7 +2263,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("If checked, supports will be generated automatically based on the overhang threshold value."\ " If unchecked, supports will be generated inside the \"Support Enforcer\" volumes only."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("support_material_xy_spacing", coFloatOrPercent); def->label = L("XY separation between an object and its support"); @@ -2244,7 +2275,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->mode = comAdvanced; // Default is half the external perimeter width. - def->default_value = new ConfigOptionFloatOrPercent(50, true); + def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); def = this->add("support_material_angle", coFloat); def->label = L("Pattern angle"); @@ -2255,14 +2286,14 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 359; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("support_material_buildplate_only", coBool); def->label = L("Support on build plate only"); def->category = L("Support material"); def->tooltip = L("Only create support if it lies on a build plate. Don't create support on a print."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_contact_distance_type", coEnum); def->label = L("Type"); @@ -2280,7 +2311,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("From plane"); def->enum_labels.push_back("None"); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(zdPlane); + def->set_default_value(new ConfigOptionEnum(zdPlane)); def = this->add("support_material_contact_distance_top", coFloatOrPercent); def->label = L("Top"); @@ -2289,27 +2320,27 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The vertical distance between support material interface and the object" "(when the object is printed on top of the support). " "Setting this to 0 will also prevent Slic3r from using bridge flow and speed " - "for the first object layer. Can be a % of the extruder size used for the interface layers."); + "for the first object layer. Can be a % of the extruding width used for the interface layers."); def->sidetext = L("mm"); def->enum_labels.push_back((boost::format("0.2 (%1%)") % L("detachable")).str()); // def->min = 0; def->enum_values.push_back("0"); def->enum_values.push_back("0.2"); - def->enum_labels.push_back((boost::format("0 (%1%)") % L("soluble")).str()); - def->enum_labels.push_back((boost::format("0.2 (%1%)") % L("detachable")).str()); + def->enum_labels.push_back(L("0 (soluble)")); + def->enum_labels.push_back(L("0.2 (detachable)")); def->mode = comAdvanced; def->aliases = { "support_material_contact_distance" }; - def->default_value = new ConfigOptionFloatOrPercent(100,true); + def->set_default_value(new ConfigOptionFloatOrPercent(0.2, false)); def = this->add("support_material_contact_distance_bottom", coFloatOrPercent); def->label = L("Bottom"); def->full_label = ("Contact distance under the bottom of supports"); def->category = L("Support material"); def->tooltip = L("The vertical distance between object and support material interface" - "(when the support is printed on top of the object). Can be a % of the extruder size used for the interface layers."); + "(when the support is printed on top of the object). Can be a % of the extruding width used for the interface layers."); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(100,true); + def->set_default_value(new ConfigOptionFloatOrPercent(0.2,false)); def = this->add("support_material_enforce_layers", coInt); def->label = L("Enforce support for the first"); @@ -2322,7 +2353,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Enforce support for the first n layers"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("support_material_extruder", coInt); def->label = L("Support material/raft/skirt extruder"); @@ -2331,7 +2362,7 @@ void PrintConfigDef::init_fff_params() "(1+, 0 to use the current extruder to minimize tool changes)."); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("support_material_extrusion_width", coFloatOrPercent); def->label = L("Support material"); @@ -2340,16 +2371,16 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Set this to a non-zero value to set a manual extrusion width for support material. " "If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. " "If expressed as percentage (for example 110%) it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("support_material_interface_contact_loops", coBool); def->label = L("Interface loops"); def->category = L("Support material"); def->tooltip = L("Cover the top contact layer of the supports with loops. Disabled by default."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_interface_extruder", coInt); def->label = L("Support material/raft interface extruder"); @@ -2358,7 +2389,7 @@ void PrintConfigDef::init_fff_params() "(1+, 0 to use the current extruder to minimize tool changes). This affects raft too."); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(1); + def->set_default_value(new ConfigOptionInt(1)); def = this->add("support_material_interface_layers", coInt); def->label = L("Interface layers"); @@ -2367,7 +2398,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("layers"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("support_material_interface_spacing", coFloat); def->label = L("Interface pattern spacing"); @@ -2376,7 +2407,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("support_material_interface_speed", coFloatOrPercent); def->label = L("Interface"); @@ -2388,7 +2419,7 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "support_material_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(100, true); + def->set_default_value(new ConfigOptionFloatOrPercent(100, true)); def = this->add("support_material_pattern", coEnum); def->label = L("Pattern"); @@ -2403,7 +2434,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Rectilinear grid")); def->enum_labels.push_back(L("Honeycomb")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(smpRectilinear); + def->set_default_value(new ConfigOptionEnum(smpRectilinear)); def = this->add("support_material_interface_pattern", coEnum); def->label = L("Pattern"); @@ -2424,7 +2455,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Sawtooth")); def->enum_labels.push_back(L("Ironing")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(ipRectilinear); + def->set_default_value(new ConfigOptionEnum(ipRectilinear)); def = this->add("support_material_spacing", coFloat); def->label = L("Pattern spacing"); @@ -2433,7 +2464,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(2.5); + def->set_default_value(new ConfigOptionFloat(2.5)); def = this->add("support_material_speed", coFloat); def->label = L("Default"); @@ -2443,7 +2474,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm/s"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("support_material_synchronize_layers", coBool); def->label = L("Synchronize with object layers"); @@ -2451,7 +2482,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Synchronize support layers with the object print layers. This is useful " "with multi-material printers, where the extruder switch is expensive."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_material_threshold", coInt); def->label = L("Overhang threshold"); @@ -2465,7 +2496,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 90; def->mode = comAdvanced; - def->default_value = new ConfigOptionInt(0); + def->set_default_value(new ConfigOptionInt(0)); def = this->add("support_material_with_sheath", coBool); def->label = L("With sheath around the support"); @@ -2473,7 +2504,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Add a sheath (a single perimeter line) around the base support. This makes " "the support more reliable, but also more difficult to remove."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("temperature", coInts); def->label = L("Other layers"); @@ -2484,7 +2515,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("°C"); def->min = 0; def->max = max_temp; - def->default_value = new ConfigOptionInts { 200 }; + def->set_default_value(new ConfigOptionInts { 200 }); def = this->add("thin_walls", coBool); def->label = L(""); @@ -2494,7 +2525,7 @@ void PrintConfigDef::init_fff_params() "to collapse them into a single trace). If unchecked, slic3r may try to fit perimeters " "where it's not possible, creating some overlap leading to over-extrusion."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("thin_walls_min_width", coFloatOrPercent); def->label = L("min width"); @@ -2505,7 +2536,7 @@ void PrintConfigDef::init_fff_params() " The default behavior of slic3r and slic3rPE is with a 33% value. Put 100% to avoid any sort of over-extrusion."); def->mode = comExpert; def->min = 0; - def->default_value = new ConfigOptionFloatOrPercent(33, true); + def->set_default_value(new ConfigOptionFloatOrPercent(33, true)); def = this->add("thin_walls_overlap", coFloatOrPercent); def->label = L("overlap"); @@ -2514,7 +2545,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Overlap between the thin wall and the perimeters. Can be a % of the external perimeter width (default 50%)"); def->mode = comExpert; def->min = 0; - def->default_value = new ConfigOptionFloatOrPercent(50, true); + def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); def = this->add("threads", coInt); def->label = L("Threads"); @@ -2524,7 +2555,7 @@ void PrintConfigDef::init_fff_params() def->min = 1; { int threads = (unsigned int)boost::thread::hardware_concurrency(); - def->default_value = new ConfigOptionInt(threads > 0 ? threads : 2); + def->set_default_value(new ConfigOptionInt(threads > 0 ? threads : 2)); def->cli == ConfigOptionDef::nocli; } @@ -2535,9 +2566,9 @@ void PrintConfigDef::init_fff_params() "as [previous_extruder] and [next_extruder]."); def->multiline = true; def->full_width = true; - def->height = 50; + def->height = 5; def->mode = comExpert; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("top_infill_extrusion_width", coFloatOrPercent); def->label = L("Top solid infill"); @@ -2546,9 +2577,9 @@ void PrintConfigDef::init_fff_params() "You may want to use thinner extrudates to fill all narrow regions and get a smoother finish. " "If left zero, default extrusion width will be used if set, otherwise nozzle diameter will be used. " "If expressed as percentage (for example 110%) it will be computed over nozzle diameter."); - def->sidetext = L("mm or % (leave 0 for default)"); + def->sidetext = L("mm or %"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(0, false); + def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); def = this->add("top_solid_infill_speed", coFloatOrPercent); def->label = L("Top solid"); @@ -2563,16 +2594,17 @@ void PrintConfigDef::init_fff_params() def->ratio_over = "solid_infill_speed"; def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloatOrPercent(15, false); + def->set_default_value(new ConfigOptionFloatOrPercent(15, false)); def = this->add("top_solid_layers", coInt); + //TRN To be shown in Print Settings "Top solid layers" def->label = L("Top"); def->full_label = L("Top layers"); def->category = L("Layers and Perimeters"); def->tooltip = L("Number of solid layers to generate on top surfaces."); def->full_label = L("Top solid layers"); def->min = 0; - def->default_value = new ConfigOptionInt(3); + def->set_default_value(new ConfigOptionInt(3)); def = this->add("travel_speed", coFloat); def->label = L("Travel"); @@ -2582,21 +2614,21 @@ void PrintConfigDef::init_fff_params() def->aliases = { "travel_feed_rate" }; def->min = 1; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(130); + def->set_default_value(new ConfigOptionFloat(130)); def = this->add("use_firmware_retraction", coBool); def->label = L("Use firmware retraction"); def->tooltip = L("This experimental setting uses G10 and G11 commands to have the firmware " "handle the retraction. This is only supported in recent Marlin."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("use_relative_e_distances", coBool); def->label = L("Use relative E distances"); def->tooltip = L("If your firmware requires relative E values, check this, " "otherwise leave it unchecked. Most firmwares use absolute values."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("use_volumetric_e", coBool); def->label = L("Use volumetric E"); @@ -2607,21 +2639,21 @@ void PrintConfigDef::init_fff_params() "diameter associated to the filament selected in Slic3r. This is only supported " "in recent Marlin."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("variable_layer_height", coBool); def->label = L("Enable variable layer height feature"); def->tooltip = L("Some printers or printer setups may have difficulties printing " "with a variable layer height. Enabled by default."); def->mode = comExpert; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("wipe", coBools); def->label = L("Wipe while retracting"); def->tooltip = L("This flag will move the nozzle while retracting to minimize the possible blob " "on leaky extruders."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBools { false }; + def->set_default_value(new ConfigOptionBools { false }); def = this->add("wipe_tower", coBool); def->label = L("Enable"); @@ -2629,38 +2661,38 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Multi material printers may need to prime or purge extruders on tool changes. " "Extrude the excess material into the wipe tower."); def->mode = comAdvanced; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wiping_volumes_extruders", coFloats); def->label = L("Purging volumes - load/unload volumes"); def->tooltip = L("This vector saves required volumes to change from/to each tool used on the " "wipe tower. These values are used to simplify creation of the full purging " "volumes below. "); - def->default_value = new ConfigOptionFloats { 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f }; + def->set_default_value(new ConfigOptionFloats { 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f, 70.f }); def = this->add("wiping_volumes_matrix", coFloats); def->label = L("Purging volumes - matrix"); def->tooltip = L("This matrix describes volumes (in cubic milimetres) required to purge the" " new filament on the wipe tower for any given pair of tools. "); - def->default_value = new ConfigOptionFloats { 0.f, 140.f, 140.f, 140.f, 140.f, + def->set_default_value(new ConfigOptionFloats { 0.f, 140.f, 140.f, 140.f, 140.f, 140.f, 0.f, 140.f, 140.f, 140.f, 140.f, 140.f, 0.f, 140.f, 140.f, 140.f, 140.f, 140.f, 0.f, 140.f, - 140.f, 140.f, 140.f, 140.f, 0.f }; + 140.f, 140.f, 140.f, 140.f, 0.f }); def = this->add("wipe_advanced", coBool); def->label = L("Enable advanced wiping volume"); def->tooltip = L("Allow slic3r to compute the purge volume via smart computations. Use the pigment% of each filament and following parameters"); def->mode = comExpert; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_advanced_nozzle_melted_volume", coFloat); def->label = L("Nozzle volume"); def->tooltip = L("The volume of melted plastic inside your nozlle. Used by 'advanced wiping'."); def->sidetext = L("mm3"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(120); + def->set_default_value(new ConfigOptionFloat(120)); def = this->add("filament_wipe_advanced_pigment", coFloats); def->label = L("Pigment percentage"); @@ -2668,7 +2700,7 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->min = 0; def->max = 1; - def->default_value = new ConfigOptionFloats{ 0.5 }; + def->set_default_value(new ConfigOptionFloats{ 0.5 }); def = this->add("wipe_advanced_multiplier", coFloat); def->label = L("Multiplier"); @@ -2676,7 +2708,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The volume multiplier used to compute the final volume to extrude by the algorithm."); def->sidetext = L("mm3"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(60); + def->set_default_value(new ConfigOptionFloat(60)); def = this->add("wipe_advanced_algo", coEnum); @@ -2694,7 +2726,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Quadratric")); def->enum_labels.push_back(L("Hyperbola")); def->mode = comExpert; - def->default_value = new ConfigOptionEnum(waLinear); + def->set_default_value(new ConfigOptionEnum(waLinear)); def = this->add("wipe_tower_x", coFloat); def->label = L("X"); @@ -2702,7 +2734,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("X coordinate of the left front corner of a wipe tower"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(180.); + def->set_default_value(new ConfigOptionFloat(180.)); def = this->add("wipe_tower_y", coFloat); def->label = L("Y"); @@ -2710,7 +2742,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Y coordinate of the left front corner of a wipe tower"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(140.); + def->set_default_value(new ConfigOptionFloat(140.)); def = this->add("wipe_tower_width", coFloat); def->label = L("Width"); @@ -2718,14 +2750,14 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Width of a wipe tower"); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(60.); + def->set_default_value(new ConfigOptionFloat(60.)); def = this->add("wipe_tower_rotation_angle", coFloat); def->label = L("Wipe tower rotation angle"); - def->tooltip = L("Wipe tower rotation angle with respect to x-axis "); - def->sidetext = L("degrees"); + def->tooltip = L("Wipe tower rotation angle with respect to x-axis."); + def->sidetext = L("°"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.); + def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("wipe_into_infill", coBool); def->category = L("Extruders"); @@ -2733,7 +2765,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Purging after toolchange will done inside this object's infills. " "This lowers the amount of waste but may result in longer print time " " due to additional travel moves."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_into_objects", coBool); def->category = L("Extruders"); @@ -2741,14 +2773,14 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Object will be used to purge the nozzle after a toolchange to save material " "that would otherwise end up in the wipe tower and decrease print time. " "Colours of the objects will be mixed as a result."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_tower_bridging", coFloat); def->label = L("Maximal bridging distance"); def->tooltip = L("Maximal distance between supports on sparse infill sections. "); def->sidetext = L("mm"); def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(10.); + def->set_default_value(new ConfigOptionFloat(10.)); def = this->add("xy_size_compensation", coFloat); def->label = L("All layers"); @@ -2759,7 +2791,7 @@ void PrintConfigDef::init_fff_params() "for fine-tuning sizes."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("hole_size_compensation", coFloat); def->label = L("Holes"); @@ -2770,7 +2802,7 @@ void PrintConfigDef::init_fff_params() " This might be useful for fine-tuning hole sizes."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("z_offset", coFloat); def->label = L("Z offset"); @@ -2780,7 +2812,7 @@ void PrintConfigDef::init_fff_params() "from the print bed, set this to -0.3 (or fix your endstop)."); def->sidetext = L("mm"); def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); } void PrintConfigDef::init_sla_params() @@ -2794,26 +2826,26 @@ void PrintConfigDef::init_sla_params() def->label = L("Display width"); def->tooltip = L("Width of the display"); def->min = 1; - def->default_value = new ConfigOptionFloat(120.); + def->set_default_value(new ConfigOptionFloat(120.)); def = this->add("display_height", coFloat); def->label = L("Display height"); def->tooltip = L("Height of the display"); def->min = 1; - def->default_value = new ConfigOptionFloat(68.); + def->set_default_value(new ConfigOptionFloat(68.)); def = this->add("display_pixels_x", coInt); def->full_label = L("Number of pixels in"); def->label = ("X"); def->tooltip = L("Number of pixels in X"); def->min = 100; - def->default_value = new ConfigOptionInt(2560); + def->set_default_value(new ConfigOptionInt(2560)); def = this->add("display_pixels_y", coInt); def->label = ("Y"); def->tooltip = L("Number of pixels in Y"); def->min = 100; - def->default_value = new ConfigOptionInt(1440); + def->set_default_value(new ConfigOptionInt(1440)); def = this->add("display_orientation", coEnum); def->label = L("Display orientation"); @@ -2826,7 +2858,7 @@ void PrintConfigDef::init_sla_params() def->enum_labels.push_back(L("Landscape")); def->enum_labels.push_back(L("Portrait")); def->mode = comExpert; - def->default_value = new ConfigOptionEnum(sladoPortrait); + def->set_default_value(new ConfigOptionEnum(sladoPortrait)); def = this->add("fast_tilt_time", coFloat); def->label = L("Fast"); @@ -2835,7 +2867,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(5.); + def->set_default_value(new ConfigOptionFloat(5.)); def = this->add("slow_tilt_time", coFloat); def->label = L("Slow"); @@ -2844,7 +2876,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("s"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(8.); + def->set_default_value(new ConfigOptionFloat(8.)); def = this->add("area_fill", coFloat); def->label = L("Area fill"); @@ -2852,13 +2884,35 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("%"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(50.); + def->set_default_value(new ConfigOptionFloat(50.)); - def = this->add("printer_correction", coFloats); + def = this->add("relative_correction", coFloats); + def->label = L("Printer scaling correction"); def->full_label = L("Printer scaling correction"); def->tooltip = L("Printer scaling correction"); def->min = 0; - def->default_value = new ConfigOptionFloats( { 1., 1., 1. } ); + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloats( { 1., 1. } )); + + def = this->add("absolute_correction", coFloat); + def->label = L("Printer absolute correction"); + def->full_label = L("Printer absolute correction"); + def->tooltip = L("Will inflate or deflate the sliced 2D polygons according " + "to the sign of the correction."); + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloat(0.0)); + + def = this->add("gamma_correction", coFloat); + def->label = L("Printer gamma correction"); + def->full_label = L("Printer gamma correction"); + def->tooltip = L("This will apply a gamma correction to the rasterized 2D " + "polygons. A gamma value of zero means thresholding with " + "the threshold in the middle. This behaviour eliminates " + "antialiasing without losing holes in polygons."); + def->min = 0; + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloat(1.0)); + // SLA Material settings. def = this->add("initial_layer_height", coFloat); @@ -2866,7 +2920,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Initial layer height"); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloat(0.3); + def->set_default_value(new ConfigOptionFloat(0.3)); def = this->add("faded_layers", coInt); def->label = L("Faded layers"); @@ -2874,63 +2928,58 @@ void PrintConfigDef::init_sla_params() def->min = 3; def->max = 20; def->mode = comExpert; - def->default_value = new ConfigOptionInt(10); + def->set_default_value(new ConfigOptionInt(10)); def = this->add("exposure_time", coFloat); def->label = L("Exposure time"); def->tooltip = L("Exposure time"); def->sidetext = L("s"); def->min = 0; - def->default_value = new ConfigOptionFloat(10); + def->set_default_value(new ConfigOptionFloat(10)); def = this->add("initial_exposure_time", coFloat); def->label = L("Initial exposure time"); def->tooltip = L("Initial exposure time"); def->sidetext = L("s"); def->min = 0; - def->default_value = new ConfigOptionFloat(15); + def->set_default_value(new ConfigOptionFloat(15)); - def = this->add("material_correction_printing", coFloats); - def->full_label = L("Correction for expansion when printing"); - def->tooltip = L("Correction for expansion when printing"); + def = this->add("material_correction", coFloats); + def->full_label = L("Correction for expansion"); + def->tooltip = L("Correction for expansion"); def->min = 0; - def->default_value = new ConfigOptionFloats( { 1. , 1., 1. } ); - - def = this->add("material_correction_curing", coFloats); - def->full_label = L("Correction for expansion after curing"); - def->tooltip = L("Correction for expansion after curing"); - def->min = 0; - def->default_value = new ConfigOptionFloats( { 1. , 1., 1. } ); + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloats( { 1. , 1. } )); def = this->add("material_notes", coString); def->label = L("SLA print material notes"); def->tooltip = L("You can put your notes regarding the SLA print material here."); def->multiline = true; def->full_width = true; - def->height = 130; + def->height = 13; def->mode = comAdvanced; - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def = this->add("default_sla_material_profile", coString); def->label = L("Default SLA material profile"); def->tooltip = L("Default print profile associated with the current printer profile. " "On selection of the current printer profile, this print profile will be activated."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("sla_material_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("default_sla_print_profile", coString); def->label = L("Default SLA material profile"); def->tooltip = L("Default print profile associated with the current printer profile. " "On selection of the current printer profile, this print profile will be activated."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("sla_print_settings_id", coString); - def->default_value = new ConfigOptionString(""); + def->set_default_value(new ConfigOptionString("")); def->cli = ConfigOptionDef::nocli; def = this->add("supports_enable", coBool); @@ -2938,7 +2987,7 @@ void PrintConfigDef::init_sla_params() def->category = L("Supports"); def->tooltip = L("Generate supports for the models"); def->mode = comSimple; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("support_head_front_diameter", coFloat); def->label = L("Support head front diameter"); @@ -2947,7 +2996,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(0.4); + def->set_default_value(new ConfigOptionFloat(0.4)); def = this->add("support_head_penetration", coFloat); def->label = L("Support head penetration"); @@ -2956,7 +3005,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->mode = comAdvanced; def->min = 0; - def->default_value = new ConfigOptionFloat(0.2); + def->set_default_value(new ConfigOptionFloat(0.2)); def = this->add("support_head_width", coFloat); def->label = L("Support head width"); @@ -2966,7 +3015,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 20; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("support_pillar_diameter", coFloat); def->label = L("Support pillar diameter"); @@ -2976,11 +3025,11 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 15; def->mode = comSimple; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("support_pillar_connection_mode", coEnum); def->label = L("Support pillar connection mode"); - def->tooltip = L("Controls the bridge type between two neigboring pillars." + def->tooltip = L("Controls the bridge type between two neighboring pillars." " Can be zig-zag, cross (double zig-zag) or dynamic which" " will automatically switch between the first two depending" " on the distance of the two pillars."); @@ -2992,14 +3041,14 @@ void PrintConfigDef::init_sla_params() def->enum_labels.push_back(L("Cross")); def->enum_labels.push_back(L("Dynamic")); def->mode = comAdvanced; - def->default_value = new ConfigOptionEnum(slapcmDynamic); + def->set_default_value(new ConfigOptionEnum(slapcmDynamic)); def = this->add("support_buildplate_only", coBool); def->label = L("Support on build plate only"); def->category = L("Supports"); def->tooltip = L("Only create support if it lies on a build plate. Don't create support on a print."); def->mode = comSimple; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("support_pillar_widening_factor", coFloat); def->label = L("Pillar widening factor"); @@ -3010,7 +3059,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 1; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(0.0); + def->set_default_value(new ConfigOptionFloat(0.0)); def = this->add("support_base_diameter", coFloat); def->label = L("Support base diameter"); @@ -3020,7 +3069,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 30; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(4.0); + def->set_default_value(new ConfigOptionFloat(4.0)); def = this->add("support_base_height", coFloat); def->label = L("Support base height"); @@ -3029,7 +3078,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("support_critical_angle", coFloat); def->label = L("Critical angle"); @@ -3039,7 +3088,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 90; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(45); + def->set_default_value(new ConfigOptionFloat(45)); def = this->add("support_max_bridge_length", coFloat); def->label = L("Max bridge length"); @@ -3048,7 +3097,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(15.0); + def->set_default_value(new ConfigOptionFloat(15.0)); def = this->add("support_max_pillar_link_distance", coFloat); def->label = L("Max pillar linking distance"); @@ -3058,7 +3107,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; // 0 means no linking def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(10.0); + def->set_default_value(new ConfigOptionFloat(10.0)); def = this->add("support_object_elevation", coFloat); def->label = L("Object elevation"); @@ -3068,7 +3117,7 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 150; // This is the max height of print on SL1 def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(5.0); + def->set_default_value(new ConfigOptionFloat(5.0)); def = this->add("support_points_density_relative", coInt); def->label = L("Support points density"); @@ -3076,7 +3125,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("This is a relative measure of support points density."); def->sidetext = L("%"); def->min = 0; - def->default_value = new ConfigOptionInt(100); + def->set_default_value(new ConfigOptionInt(100)); def = this->add("support_points_minimal_distance", coFloat); def->label = L("Minimal distance of the support points"); @@ -3084,14 +3133,14 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("No support points will be placed closer than this threshold."); def->sidetext = L("mm"); def->min = 0; - def->default_value = new ConfigOptionFloat(0.f); + def->set_default_value(new ConfigOptionFloat(1.f)); def = this->add("pad_enable", coBool); def->label = L("Use pad"); def->category = L("Pad"); def->tooltip = L("Add a pad underneath the supported model"); def->mode = comSimple; - def->default_value = new ConfigOptionBool(true); + def->set_default_value(new ConfigOptionBool(true)); def = this->add("pad_wall_thickness", coFloat); def->label = L("Pad wall thickness"); @@ -3101,18 +3150,21 @@ void PrintConfigDef::init_sla_params() def->min = 0; def->max = 30; def->mode = comSimple; - def->default_value = new ConfigOptionFloat(2.0); + def->set_default_value(new ConfigOptionFloat(2.0)); def = this->add("pad_wall_height", coFloat); def->label = L("Pad wall height"); - def->tooltip = L("Defines the cavity depth. Set to zero to disable the cavity."); + def->tooltip = L("Defines the pad cavity depth. Set to zero to disable the cavity. " + "Be careful when enabling this feature, as some resins may " + "produce an extreme suction effect inside the cavity, " + "which makes peeling the print off the vat foil difficult."); def->category = L("Pad"); // def->tooltip = L(""); def->sidetext = L("mm"); def->min = 0; def->max = 30; - def->mode = comSimple; - def->default_value = new ConfigOptionFloat(5.0); + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("pad_max_merge_distance", coFloat); def->label = L("Max merge distance"); @@ -3124,7 +3176,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloat(50.0); + def->set_default_value(new ConfigOptionFloat(50.0)); // This is disabled on the UI. I hope it will never be enabled. def = this->add("pad_edge_radius", coFloat); @@ -3134,18 +3186,18 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(1.0); + def->set_default_value(new ConfigOptionFloat(1.0)); def = this->add("pad_wall_slope", coFloat); def->label = L("Pad wall slope"); def->category = L("Pad"); def->tooltip = L("The slope of the pad wall relative to the bed plane. " "90 degrees means straight walls."); - def->sidetext = L("degrees"); + def->sidetext = L("°"); def->min = 45; def->max = 90; def->mode = comAdvanced; - def->default_value = new ConfigOptionFloat(45.0); + def->set_default_value(new ConfigOptionFloat(45.0)); } void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &value) @@ -3333,6 +3385,7 @@ double PrintConfig::min_object_distance(const ConfigBase *config) return base_dist; } +//FIXME localize this function. std::string FullPrintConfig::validate() { // --layer-height @@ -3539,75 +3592,76 @@ CLIActionsConfigDef::CLIActionsConfigDef() // Actions: def = this->add("export_obj", coBool); - def->label = L("Export SVG"); + def->label = L("Export OBJ"); def->tooltip = L("Export the model(s) as OBJ."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); /* def = this->add("export_svg", coBool); def->label = L("Export SVG"); def->tooltip = L("Slice the model and export solid slices as SVG."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); */ def = this->add("export_sla", coBool); def->label = L("Export SLA"); def->tooltip = L("Slice the model and export SLA printing layers as PNG."); def->cli = "export-sla|sla"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_3mf", coBool); def->label = L("Export 3MF"); def->tooltip = L("Export the model(s) as 3MF."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_amf", coBool); def->label = L("Export AMF"); def->tooltip = L("Export the model(s) as AMF."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_stl", coBool); def->label = L("Export STL"); def->tooltip = L("Export the model(s) as STL."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("export_gcode", coBool); def->label = L("Export G-code"); def->tooltip = L("Slice the model and export toolpaths as G-code."); def->cli = "export-gcode|gcode|g"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("slice", coBool); def->label = L("Slice"); def->tooltip = L("Slice the model as FFF or SLA based on the printer_technology configuration value."); def->cli = "slice|s"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("help", coBool); def->label = L("Help"); def->tooltip = L("Show this help."); def->cli = "help|h"; - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("help_fff", coBool); def->label = L("Help (FFF options)"); def->tooltip = L("Show the full list of print/G-code configuration options."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("help_sla", coBool); def->label = L("Help (SLA options)"); def->tooltip = L("Show the full list of SLA print configuration options."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("info", coBool); def->label = L("Output Model Info"); def->tooltip = L("Write information about the model to the console."); - def->default_value = new ConfigOptionBool(false); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("save", coString); def->label = L("Save config file"); def->tooltip = L("Save configuration to the specified file."); - def->default_value = new ConfigOptionString(); + def->set_default_value(new ConfigOptionString()); } CLITransformConfigDef::CLITransformConfigDef() @@ -3618,34 +3672,37 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("align_xy", coPoint); def->label = L("Align XY"); def->tooltip = L("Align the model to the given point."); - def->default_value = new ConfigOptionPoint(Vec2d(100,100)); + def->set_default_value(new ConfigOptionPoint(Vec2d(100,100))); def = this->add("cut", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model at the given Z."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); /* def = this->add("cut_grid", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model in the XY plane into tiles of the specified max size."); - def->default_value = new ConfigOptionPoint(); + def->set_default_value(new ConfigOptionPoint(); + def->set_default_value(new ConfigOptionPoint()); def = this->add("cut_x", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model at the given X."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("cut_y", coFloat); def->label = L("Cut"); def->tooltip = L("Cut model at the given Y."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); */ def = this->add("center", coPoint); def->label = L("Center"); def->tooltip = L("Center the print around the given center."); - def->default_value = new ConfigOptionPoint(Vec2d(100,100)); + def->set_default_value(new ConfigOptionPoint(Vec2d(100,100))); def = this->add("dont_arrange", coBool); def->label = L("Don't arrange"); @@ -3672,22 +3729,22 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("rotate", coFloat); def->label = L("Rotate"); def->tooltip = L("Rotation angle around the Z axis in degrees."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("rotate_x", coFloat); def->label = L("Rotate around X"); def->tooltip = L("Rotation angle around the X axis in degrees."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("rotate_y", coFloat); def->label = L("Rotate around Y"); def->tooltip = L("Rotation angle around the Y axis in degrees."); - def->default_value = new ConfigOptionFloat(0); + def->set_default_value(new ConfigOptionFloat(0)); def = this->add("scale", coFloatOrPercent); def->label = L("Scale"); def->tooltip = L("Scaling factor or percentage."); - def->default_value = new ConfigOptionFloatOrPercent(1, false); + def->set_default_value(new ConfigOptionFloatOrPercent(1, false)); def = this->add("split", coBool); def->label = L("Split"); @@ -3696,7 +3753,7 @@ CLITransformConfigDef::CLITransformConfigDef() def = this->add("scale_to_fit", coPoint3); def->label = L("Scale to Fit"); def->tooltip = L("Scale to fit the given volume."); - def->default_value = new ConfigOptionPoint3(Vec3d(0,0,0)); + def->set_default_value(new ConfigOptionPoint3(Vec3d(0,0,0))); } CLIMiscConfigDef::CLIMiscConfigDef() @@ -3730,6 +3787,13 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->label = L("Logging level"); def->tooltip = L("Messages with severity lower or eqal to the loglevel will be printed out. 0:trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal"); def->min = 0; + +#if defined(_MSC_VER) && defined(SLIC3R_GUI) + def = this->add("sw_renderer", coBool); + def->label = L("Render with a software renderer"); + def->tooltip = L("Render with a software renderer. The bundled MESA software renderer is loaded instead of the default OpenGL driver."); + def->min = 0; +#endif /* _MSC_VER */ } const CLIActionsConfigDef cli_actions_config_def; diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index ecc514196..8873e9ffa 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -387,8 +387,8 @@ protected: m_keys.emplace_back(kvp.first); const ConfigOptionDef *def = defs->get(kvp.first); assert(def != nullptr); - if (def->default_value != nullptr) - opt->set(def->default_value); + if (def->default_value) + opt->set(def->default_value.get()); } } @@ -1212,16 +1212,14 @@ public: ConfigOptionFloat initial_layer_height; ConfigOptionFloat exposure_time; ConfigOptionFloat initial_exposure_time; - ConfigOptionFloats material_correction_printing; - ConfigOptionFloats material_correction_curing; + ConfigOptionFloats material_correction; protected: void initialize(StaticCacheBase &cache, const char *base_ptr) { OPT_PTR(initial_layer_height); OPT_PTR(exposure_time); OPT_PTR(initial_exposure_time); - OPT_PTR(material_correction_printing); - OPT_PTR(material_correction_curing); + OPT_PTR(material_correction); } }; @@ -1237,7 +1235,9 @@ public: ConfigOptionInt display_pixels_x; ConfigOptionInt display_pixels_y; ConfigOptionEnum display_orientation; - ConfigOptionFloats printer_correction; + ConfigOptionFloats relative_correction; + ConfigOptionFloat absolute_correction; + ConfigOptionFloat gamma_correction; ConfigOptionFloat fast_tilt_time; ConfigOptionFloat slow_tilt_time; ConfigOptionFloat area_fill; @@ -1252,7 +1252,9 @@ protected: OPT_PTR(display_pixels_x); OPT_PTR(display_pixels_y); OPT_PTR(display_orientation); - OPT_PTR(printer_correction); + OPT_PTR(relative_correction); + OPT_PTR(absolute_correction); + OPT_PTR(gamma_correction); OPT_PTR(fast_tilt_time); OPT_PTR(slow_tilt_time); OPT_PTR(area_fill); diff --git a/src/libslic3r/PrintExport.hpp b/src/libslic3r/PrintExport.hpp index df9446cf5..f6537ed32 100644 --- a/src/libslic3r/PrintExport.hpp +++ b/src/libslic3r/PrintExport.hpp @@ -7,6 +7,7 @@ #include #include +#include #include "Rasterizer/Rasterizer.hpp" //#include @@ -42,8 +43,9 @@ template class FilePrinter { public: - // Draw an ExPolygon which is a polygon inside a slice on the specified layer. + // Draw a polygon which is a polygon inside a slice on the specified layer. void draw_polygon(const ExPolygon& p, unsigned lyr); + void draw_polygon(const ClipperLib::Polygon& p, unsigned lyr); // Tell the printer how many layers should it consider. void layers(unsigned layernum); @@ -71,7 +73,8 @@ public: void finish_layer(); // Save all the layers into the file (or dir) specified in the path argument - void save(const std::string& path); + // An optional project name can be added to be used for the layer file names + void save(const std::string& path, const std::string& projectname = ""); // Save only the selected layer to the file specified in path argument. void save_layer(unsigned lyr, const std::string& path); @@ -80,28 +83,35 @@ public: // Provokes static_assert in the right way. template struct VeryFalse { static const bool value = false; }; -// This has to be explicitly implemented in the gui layer or a default zlib -// based implementation is needed. I don't have time for that and I'm delegating -// the implementation to the gui layer where the gui toolkit can cover this. +// This can be explicitly implemented in the gui layer or the default Zipper +// API in libslic3r with minz. template class LayerWriter { public: - LayerWriter(const std::string& /*zipfile_path*/) { + LayerWriter(const std::string& /*zipfile_path*/) + { static_assert(VeryFalse::value, "No layer writer implementation provided!"); } + // Should create a new file within the zip with the given filename. It + // should also finish any previous entry. void next_entry(const std::string& /*fname*/) {} - std::string get_name() { return ""; } + // Should create a new file within the archive and write the provided data. + void binary_entry(const std::string& /*fname*/, + const std::uint8_t* buf, size_t len); + // Test whether the object can still be used for writing. bool is_ok() { return false; } - template LayerWriter& operator<<(const T& /*arg*/) { + // Write some data (text) into the current file (entry) within the archive. + template LayerWriter& operator<<(T&& /*arg*/) { return *this; } - void close() {} + // Flush the current entry into the archive. + void finalize() {} }; // Implementation for PNG raster output @@ -110,14 +120,14 @@ public: template<> class FilePrinter { struct Layer { - Raster first; - std::stringstream second; + Raster raster; + RawBytes rawbytes; Layer() {} Layer(const Layer&) = delete; Layer(Layer&& m): - first(std::move(m.first))/*, second(std::move(m.second))*/ {} + raster(std::move(m.raster)) {} }; // We will save the compressed PNG data into stringstreams which can be done @@ -128,6 +138,7 @@ template<> class FilePrinter double m_exp_time_s = .0, m_exp_time_first_s = .0; double m_layer_height = .0; Raster::Origin m_o = Raster::Origin::TOP_LEFT; + double m_gamma; double m_used_material = 0.0; int m_cnt_fade_layers = 0; @@ -135,14 +146,11 @@ template<> class FilePrinter int m_cnt_fast_layers = 0; std::string createIniContent(const std::string& projectname) { -// double layer_height = m_layer_height; - using std::string; using std::to_string; auto expt_str = to_string(m_exp_time_s); auto expt_first_str = to_string(m_exp_time_first_s); -// auto stepnum_str = to_string(static_cast(800*layer_height)); auto layerh_str = to_string(m_layer_height); const std::string cnt_fade_layers = to_string(m_cnt_fade_layers); @@ -187,7 +195,8 @@ public: unsigned width_px, unsigned height_px, double layer_height, double exp_time, double exp_time_first, - RasterOrientation ro = RO_PORTRAIT): + RasterOrientation ro = RO_PORTRAIT, + double gamma = 1.0): m_res(width_px, height_px), m_pxdim(width_mm/width_px, height_mm/height_px), m_exp_time_s(exp_time), @@ -196,7 +205,8 @@ public: // Here is the trick with the orientation. m_o(ro == RO_LANDSCAPE? Raster::Origin::BOTTOM_LEFT : - Raster::Origin::TOP_LEFT ) + Raster::Origin::TOP_LEFT ), + m_gamma(gamma) { } @@ -211,41 +221,48 @@ public: inline void draw_polygon(const ExPolygon& p, unsigned lyr) { assert(lyr < m_layers_rst.size()); - m_layers_rst[lyr].first.draw(p); + m_layers_rst[lyr].raster.draw(p); + } + + inline void draw_polygon(const ClipperLib::Polygon& p, unsigned lyr) { + assert(lyr < m_layers_rst.size()); + m_layers_rst[lyr].raster.draw(p); } inline void begin_layer(unsigned lyr) { if(m_layers_rst.size() <= lyr) m_layers_rst.resize(lyr+1); - m_layers_rst[lyr].first.reset(m_res, m_pxdim, m_o); + m_layers_rst[lyr].raster.reset(m_res, m_pxdim, m_o, m_gamma); } inline void begin_layer() { m_layers_rst.emplace_back(); - m_layers_rst.front().first.reset(m_res, m_pxdim, m_o); + m_layers_rst.front().raster.reset(m_res, m_pxdim, m_o, m_gamma); } inline void finish_layer(unsigned lyr_id) { assert(lyr_id < m_layers_rst.size()); - m_layers_rst[lyr_id].first.save(m_layers_rst[lyr_id].second, - Raster::Compression::PNG); - m_layers_rst[lyr_id].first.reset(); + m_layers_rst[lyr_id].rawbytes = + m_layers_rst[lyr_id].raster.save(Raster::Compression::PNG); + m_layers_rst[lyr_id].raster.reset(); } inline void finish_layer() { if(!m_layers_rst.empty()) { - m_layers_rst.back().first.save(m_layers_rst.back().second, - Raster::Compression::PNG); - m_layers_rst.back().first.reset(); + m_layers_rst.back().rawbytes = + m_layers_rst.back().raster.save(Raster::Compression::PNG); + m_layers_rst.back().raster.reset(); } } template - inline void save(const std::string& path) { + inline void save(const std::string& fpath, const std::string& prjname = "") + { try { - LayerWriter writer(path); + LayerWriter writer(fpath); if(!writer.is_ok()) return; - std::string project = writer.get_name(); + std::string project = prjname.empty()? + boost::filesystem::path(fpath).stem().string() : prjname; writer.next_entry("config.ini"); if(!writer.is_ok()) return; @@ -254,20 +271,19 @@ public: for(unsigned i = 0; i < m_layers_rst.size() && writer.is_ok(); i++) { - if(m_layers_rst[i].second.rdbuf()->in_avail() > 0) { + if(m_layers_rst[i].rawbytes.size() > 0) { char lyrnum[6]; std::sprintf(lyrnum, "%.5d", i); auto zfilename = project + lyrnum + ".png"; - writer.next_entry(zfilename); - if(!writer.is_ok()) break; - writer << m_layers_rst[i].second.str(); - // writer << m_layers_rst[i].second.rdbuf(); - // we can keep the date for later calls of this method - //m_layers_rst[i].second.str(""); + writer.binary_entry(zfilename, + m_layers_rst[i].rawbytes.data(), + m_layers_rst[i].rawbytes.size()); } } + + writer.finalize(); } catch(std::exception& e) { BOOST_LOG_TRIVIAL(error) << e.what(); // Rethrow the exception @@ -285,13 +301,13 @@ public: std::fstream out(loc, std::fstream::out | std::fstream::binary); if(out.good()) { - m_layers_rst[i].first.save(out, Raster::Compression::PNG); + m_layers_rst[i].raster.save(out, Raster::Compression::PNG); } else { BOOST_LOG_TRIVIAL(error) << "Can't create file for layer"; } out.close(); - m_layers_rst[i].first.reset(); + m_layers_rst[i].raster.reset(); } void set_statistics(const std::vector statistics) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 7480e4ee4..964e9ced0 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2,6 +2,7 @@ #include "BoundingBox.hpp" #include "ClipperUtils.hpp" #include "Geometry.hpp" +#include "I18N.hpp" #include "SupportMaterial.hpp" #include "Surface.hpp" #include "Slicing.hpp" @@ -17,6 +18,10 @@ #include +//! macro used to mark string used at localization, +//! return same string +#define L(s) Slic3r::I18N::translate(s) + #ifdef SLIC3R_DEBUG_SLICE_PROCESSING #define SLIC3R_DEBUG #endif @@ -102,7 +107,7 @@ void PrintObject::slice() { if (! this->set_started(posSlice)) return; - m_print->set_status(10, "Processing triangulated mesh"); + m_print->set_status(10, L("Processing triangulated mesh")); std::vector layer_height_profile; this->update_layer_height_profile(*this->model_object(), m_slicing_params, layer_height_profile); m_print->throw_if_canceled(); @@ -133,7 +138,7 @@ void PrintObject::make_perimeters() if (! this->set_started(posPerimeters)) return; - m_print->set_status(20, "Generating perimeters"); + m_print->set_status(20, L("Generating perimeters")); BOOST_LOG_TRIVIAL(info) << "Generating perimeters..." << log_memory_info(); // merge slices if they were split into types @@ -243,7 +248,7 @@ void PrintObject::prepare_infill() if (! this->set_started(posPrepareInfill)) return; - m_print->set_status(30, "Preparing infill"); + m_print->set_status(30, L("Preparing infill")); // This will assign a type (top/bottom/internal) to $layerm->slices. // Then the classifcation of $layerm->slices is transfered onto @@ -405,7 +410,7 @@ void PrintObject::generate_support_material() if (this->set_started(posSupportMaterial)) { this->clear_support_layers(); if ((m_config.support_material || m_config.raft_layers > 0) && m_layers.size() > 1) { - m_print->set_status(85, "Generating support material"); + m_print->set_status(85, L("Generating support material")); this->_generate_support_material(); m_print->throw_if_canceled(); } else { @@ -1694,7 +1699,7 @@ void PrintObject::update_slicing_parameters() this->print()->config(), m_config, unscale(this->size(2)), this->object_extruders()); } -SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object) +SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object, float object_max_z) { PrintConfig print_config; PrintObjectConfig object_config; @@ -1714,7 +1719,9 @@ SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig &full object_extruders); sort_remove_duplicates(object_extruders); - return SlicingParameters::create_from_config(print_config, object_config, model_object.bounding_box().max.z(), object_extruders); + if (object_max_z <= 0.f) + object_max_z = model_object.raw_bounding_box().size().z(); + return SlicingParameters::create_from_config(print_config, object_config, object_max_z, object_extruders); } // returns 0-based indices of extruders used to print the object (without brim, support and other helper extrusions) @@ -2253,21 +2260,28 @@ std::vector PrintObject::_slice_volumes(const std::vector &z, if (! volumes.empty()) { // Compose mesh. //FIXME better to perform slicing over each volume separately and then to use a Boolean operation to merge them. - TriangleMesh mesh; - for (const ModelVolume *v : volumes) - { - TriangleMesh vol_mesh(v->mesh); - vol_mesh.transform(v->get_matrix()); + TriangleMesh mesh(volumes.front()->mesh); + mesh.transform(volumes.front()->get_matrix(), true); + assert(mesh.repaired); + if (volumes.size() == 1 && mesh.repaired) { + //FIXME The admesh repair function may break the face connectivity, rather refresh it here as the slicing code relies on it. + stl_check_facets_exact(&mesh.stl); + } + for (size_t idx_volume = 1; idx_volume < volumes.size(); ++ idx_volume) { + const ModelVolume &model_volume = *volumes[idx_volume]; + TriangleMesh vol_mesh(model_volume.mesh); + vol_mesh.transform(model_volume.get_matrix(), true); mesh.merge(vol_mesh); } if (mesh.stl.stats.number_of_facets > 0) { - mesh.transform(m_trafo); + mesh.transform(m_trafo, true); // apply XY shift mesh.translate(- unscale(m_copies_shift(0)), - unscale(m_copies_shift(1)), 0); // perform actual slicing TriangleMeshSlicer mslicer(float(m_config.slice_closing_radius.value), float(m_config.model_precision.value)); const Print *print = this->print(); auto callback = TriangleMeshSlicer::throw_on_cancel_callback_type([print](){print->throw_if_canceled();}); + mesh.require_shared_vertices(); // TriangleMeshSlicer needs this mslicer.init(&mesh, callback); mslicer.slice(z, &layers, callback); m_print->throw_if_canceled(); @@ -2282,15 +2296,20 @@ std::vector PrintObject::_slice_volume(const std::vector &z, // Compose mesh. //FIXME better to perform slicing over each volume separately and then to use a Boolean operation to merge them. TriangleMesh mesh(volume.mesh); - mesh.transform(volume.get_matrix()); + mesh.transform(volume.get_matrix(), true); + if (mesh.repaired) { + //FIXME The admesh repair function may break the face connectivity, rather refresh it here as the slicing code relies on it. + stl_check_facets_exact(&mesh.stl); + } if (mesh.stl.stats.number_of_facets > 0) { - mesh.transform(m_trafo); + mesh.transform(m_trafo, true); // apply XY shift mesh.translate(- unscale(m_copies_shift(0)), - unscale(m_copies_shift(1)), 0); // perform actual slicing TriangleMeshSlicer mslicer(float(m_config.slice_closing_radius.value), float(m_config.model_precision.value)); const Print *print = this->print(); auto callback = TriangleMeshSlicer::throw_on_cancel_callback_type([print](){print->throw_if_canceled();}); + mesh.require_shared_vertices(); // TriangleMeshSlicer needs this mslicer.init(&mesh, callback); mslicer.slice(z, &layers, callback); m_print->throw_if_canceled(); @@ -2704,7 +2723,7 @@ void PrintObject::discover_horizontal_shells() // when spacing is added in Fill.pm { //FIXME Vojtech: Disable this and you will be sorry. - // https://github.com/prusa3d/Slic3r/issues/26 bottom + // https://github.com/prusa3d/PrusaSlicer/issues/26 bottom float margin = 3.f * layerm->flow(frSolidInfill).scaled_width(); // require at least this size // we use a higher miterLimit here to handle areas with acute angles // in those cases, the default miterLimit would cut the corner and we'd diff --git a/src/libslic3r/Rasterizer/Rasterizer.cpp b/src/libslic3r/Rasterizer/Rasterizer.cpp index 5961d9b78..6384a241f 100644 --- a/src/libslic3r/Rasterizer/Rasterizer.cpp +++ b/src/libslic3r/Rasterizer/Rasterizer.cpp @@ -1,7 +1,6 @@ #include "Rasterizer.hpp" #include - -#include +#include // For rasterizing #include @@ -15,11 +14,17 @@ #include #include -// For png compression -#include +// Experimental minz image write: +#include namespace Slic3r { +const Polygon& contour(const ExPolygon& p) { return p.contour; } +const ClipperLib::Path& contour(const ClipperLib::Polygon& p) { return p.Contour; } + +const Polygons& holes(const ExPolygon& p) { return p.holes; } +const ClipperLib::Paths& holes(const ClipperLib::Polygon& p) { return p.Holes; } + class Raster::Impl { public: using TPixelRenderer = agg::pixfmt_gray8; // agg::pixfmt_rgb24; @@ -38,14 +43,17 @@ public: private: Raster::Resolution m_resolution; - Raster::PixelDim m_pxdim; +// Raster::PixelDim m_pxdim; + Raster::PixelDim m_pxdim_scaled; // used for scaled coordinate polygons TBuffer m_buf; TRawBuffer m_rbuf; TPixelRenderer m_pixfmt; TRawRenderer m_raw_renderer; TRendererAA m_renderer; + + std::function m_gammafn; Origin m_o; - + inline void flipy(agg::path_storage& path) const { path.flip_y(0, m_resolution.height_px); } @@ -53,8 +61,10 @@ private: public: inline Impl(const Raster::Resolution& res, const Raster::PixelDim &pd, - Origin o): - m_resolution(res), m_pxdim(pd), + Origin o, double gamma = 1.0): + m_resolution(res), +// m_pxdim(pd), + m_pxdim_scaled(SCALING_FACTOR / pd.w_mm, SCALING_FACTOR / pd.h_mm), m_buf(res.pixels()), m_rbuf(reinterpret_cast(m_buf.data()), res.width_px, res.height_px, @@ -65,24 +75,26 @@ public: m_o(o) { m_renderer.color(ColorWhite); - - // If we would like to play around with gamma - // ras.gamma(agg::gamma_power(1.0)); - + + if(gamma > 0) m_gammafn = agg::gamma_power(gamma); + else m_gammafn = agg::gamma_threshold(0.5); + clear(); } - void draw(const ExPolygon &poly) { + template void draw(const P &poly) { agg::rasterizer_scanline_aa<> ras; agg::scanline_p8 scanlines; + + ras.gamma(m_gammafn); - auto&& path = to_path(poly.contour); + auto&& path = to_path(contour(poly)); if(m_o == Origin::TOP_LEFT) flipy(path); ras.add_path(path); - for(auto h : poly.holes) { + for(auto& h : holes(poly)) { auto&& holepath = to_path(h); if(m_o == Origin::TOP_LEFT) flipy(holepath); ras.add_path(holepath); @@ -102,22 +114,38 @@ public: inline Origin origin() const /*noexcept*/ { return m_o; } private: - double getPx(const Point& p) { - return p(0) * SCALING_FACTOR/m_pxdim.w_mm; + inline double getPx(const Point& p) { + return p(0) * m_pxdim_scaled.w_mm; } - double getPy(const Point& p) { - return p(1) * SCALING_FACTOR/m_pxdim.h_mm; + inline double getPy(const Point& p) { + return p(1) * m_pxdim_scaled.h_mm; } - agg::path_storage to_path(const Polygon& poly) { + inline agg::path_storage to_path(const Polygon& poly) + { + return to_path(poly.points); + } + + inline double getPx(const ClipperLib::IntPoint& p) { + return p.X * m_pxdim_scaled.w_mm; + } + + inline double getPy(const ClipperLib::IntPoint& p) { + return p.Y * m_pxdim_scaled.h_mm; + } + + template agg::path_storage to_path(const PointVec& poly) + { agg::path_storage path; - auto it = poly.points.begin(); + + auto it = poly.begin(); path.move_to(getPx(*it), getPy(*it)); - while(++it != poly.points.end()) + + while(++it != poly.end()) path.line_to(getPx(*it), getPy(*it)); - path.line_to(getPx(poly.points.front()), getPy(poly.points.front())); + path.line_to(getPx(poly.front()), getPy(poly.front())); return path; } @@ -126,8 +154,8 @@ private: const Raster::Impl::TPixel Raster::Impl::ColorWhite = Raster::Impl::TPixel(255); const Raster::Impl::TPixel Raster::Impl::ColorBlack = Raster::Impl::TPixel(0); -Raster::Raster(const Resolution &r, const PixelDim &pd, Origin o): - m_impl(new Impl(r, pd, o)) {} +Raster::Raster(const Resolution &r, const PixelDim &pd, Origin o, double g): + m_impl(new Impl(r, pd, o, g)) {} Raster::Raster() {} @@ -136,19 +164,20 @@ Raster::~Raster() {} Raster::Raster(Raster &&m): m_impl(std::move(m.m_impl)) {} -void Raster::reset(const Raster::Resolution &r, const Raster::PixelDim &pd) +void Raster::reset(const Raster::Resolution &r, const Raster::PixelDim &pd, + double g) { // Free up the unnecessary memory and make sure it stays clear after // an exception auto o = m_impl? m_impl->origin() : Origin::TOP_LEFT; - reset(r, pd, o); + reset(r, pd, o, g); } void Raster::reset(const Raster::Resolution &r, const Raster::PixelDim &pd, - Raster::Origin o) + Raster::Origin o, double gamma) { m_impl.reset(); - m_impl.reset(new Impl(r, pd, o)); + m_impl.reset(new Impl(r, pd, o, gamma)); } void Raster::reset() @@ -169,38 +198,36 @@ void Raster::clear() m_impl->clear(); } -void Raster::draw(const ExPolygon &poly) +void Raster::draw(const ExPolygon &expoly) +{ + m_impl->draw(expoly); +} + +void Raster::draw(const ClipperLib::Polygon &poly) { - assert(m_impl); m_impl->draw(poly); } void Raster::save(std::ostream& stream, Compression comp) { assert(m_impl); + if(!stream.good()) return; + switch(comp) { case Compression::PNG: { - - png::writer wr(stream); - - wr.set_bit_depth(8); - wr.set_color_type(png::color_type_gray); - wr.set_width(resolution().width_px); - wr.set_height(resolution().height_px); - wr.set_compression_type(png::compression_type_default); - - wr.write_info(); - auto& b = m_impl->buffer(); - auto ptr = reinterpret_cast( b.data() ); - unsigned stride = - sizeof(Impl::TBuffer::value_type) * resolution().width_px; + size_t out_len = 0; + void * rawdata = tdefl_write_image_to_png_file_in_memory( + b.data(), + int(resolution().width_px), + int(resolution().height_px), 1, &out_len); - for(unsigned r = 0; r < resolution().height_px; r++, ptr+=stride) { - wr.write_row(ptr); - } + if(rawdata == nullptr) break; - wr.write_end_info(); + stream.write(static_cast(rawdata), + std::streamsize(out_len)); + + MZ_FREE(rawdata); break; } @@ -217,4 +244,46 @@ void Raster::save(std::ostream& stream, Compression comp) } } +RawBytes Raster::save(Raster::Compression comp) +{ + assert(m_impl); + + std::vector data; size_t s = 0; + + switch(comp) { + case Compression::PNG: { + void *rawdata = tdefl_write_image_to_png_file_in_memory( + m_impl->buffer().data(), + int(resolution().width_px), + int(resolution().height_px), 1, &s); + + if(rawdata == nullptr) break; + auto ptr = static_cast(rawdata); + + data.reserve(s); std::copy(ptr, ptr + s, std::back_inserter(data)); + + MZ_FREE(rawdata); + break; + } + case Compression::RAW: { + auto header = std::string("P5 ") + + std::to_string(m_impl->resolution().width_px) + " " + + std::to_string(m_impl->resolution().height_px) + " " + "255 "; + + auto sz = m_impl->buffer().size()*sizeof(Impl::TBuffer::value_type); + s = sz + header.size(); + + data.reserve(s); + + auto buff = reinterpret_cast(m_impl->buffer().data()); + std::copy(header.begin(), header.end(), std::back_inserter(data)); + std::copy(buff, buff+sz, std::back_inserter(data)); + + break; + } + } + + return {std::move(data)}; +} + } diff --git a/src/libslic3r/Rasterizer/Rasterizer.hpp b/src/libslic3r/Rasterizer/Rasterizer.hpp index 06d5b88c6..3fffe1a36 100644 --- a/src/libslic3r/Rasterizer/Rasterizer.hpp +++ b/src/libslic3r/Rasterizer/Rasterizer.hpp @@ -3,11 +3,43 @@ #include #include +#include +#include + +namespace ClipperLib { struct Polygon; } namespace Slic3r { class ExPolygon; +// Raw byte buffer paired with its size. Suitable for compressed PNG data. +class RawBytes { + + std::vector m_buffer; +public: + + RawBytes() = default; + RawBytes(std::vector&& data): m_buffer(std::move(data)) {} + + size_t size() const { return m_buffer.size(); } + const uint8_t * data() { return m_buffer.data(); } + + // ///////////////////////////////////////////////////////////////////////// + // FIXME: the following is needed for MSVC2013 compatibility + // ///////////////////////////////////////////////////////////////////////// + + RawBytes(const RawBytes&) = delete; + RawBytes(RawBytes&& mv) : m_buffer(std::move(mv.m_buffer)) {} + + RawBytes& operator=(const RawBytes&) = delete; + RawBytes& operator=(RawBytes&& mv) { + m_buffer = std::move(mv.m_buffer); + return *this; + } + + // ///////////////////////////////////////////////////////////////////////// +}; + /** * @brief Raster captures an anti-aliased monochrome canvas where vectorial * polygons can be rasterized. Fill color is always white and the background is @@ -58,8 +90,9 @@ public: }; /// Constructor taking the resolution and the pixel dimension. - explicit Raster(const Resolution& r, const PixelDim& pd, - Origin o = Origin::BOTTOM_LEFT ); + Raster(const Resolution& r, const PixelDim& pd, + Origin o = Origin::BOTTOM_LEFT, double gamma = 1.0); + Raster(); Raster(const Raster& cpy) = delete; Raster& operator=(const Raster& cpy) = delete; @@ -67,8 +100,8 @@ public: ~Raster(); /// Reallocated everything for the given resolution and pixel dimension. - void reset(const Resolution& r, const PixelDim& pd); - void reset(const Resolution& r, const PixelDim& pd, Origin o); + void reset(const Resolution& r, const PixelDim& pd, double gamma = 1.0); + void reset(const Resolution& r, const PixelDim& pd, Origin o, double gamma); /** * Release the allocated resources. Drawing in this state ends in @@ -84,9 +117,12 @@ public: /// Draw a polygon with holes. void draw(const ExPolygon& poly); + void draw(const ClipperLib::Polygon& poly); /// Save the raster on the specified stream. void save(std::ostream& stream, Compression comp = Compression::RAW); + + RawBytes save(Compression comp = Compression::RAW); }; } diff --git a/src/libslic3r/SLA/SLAAutoSupports.cpp b/src/libslic3r/SLA/SLAAutoSupports.cpp index 2a605a27b..97c6d61f5 100644 --- a/src/libslic3r/SLA/SLAAutoSupports.cpp +++ b/src/libslic3r/SLA/SLAAutoSupports.cpp @@ -49,8 +49,8 @@ float SLAAutoSupports::distance_limit(float angle) const }*/ SLAAutoSupports::SLAAutoSupports(const TriangleMesh& mesh, const sla::EigenMesh3D& emesh, const std::vector& slices, const std::vector& heights, - const Config& config, std::function throw_on_cancel) -: m_config(config), m_emesh(emesh), m_throw_on_cancel(throw_on_cancel) + const Config& config, std::function throw_on_cancel, std::function statusfn) +: m_config(config), m_emesh(emesh), m_throw_on_cancel(throw_on_cancel), m_statusfn(statusfn) { process(slices, heights); project_onto_mesh(m_output); @@ -197,6 +197,9 @@ void SLAAutoSupports::process(const std::vector& slices, const std:: PointGrid3D point_grid; point_grid.cell_size = Vec3f(10.f, 10.f, 10.f); + double increment = 100.0 / layers.size(); + double status = 0; + for (unsigned int layer_id = 0; layer_id < layers.size(); ++ layer_id) { SLAAutoSupports::MyLayer *layer_top = &layers[layer_id]; SLAAutoSupports::MyLayer *layer_bottom = (layer_id > 0) ? &layers[layer_id - 1] : nullptr; @@ -252,6 +255,9 @@ void SLAAutoSupports::process(const std::vector& slices, const std:: m_throw_on_cancel(); + status += increment; + m_statusfn(int(std::round(status))); + #ifdef SLA_AUTOSUPPORTS_DEBUG /*std::string layer_num_str = std::string((i<10 ? "0" : "")) + std::string((i<100 ? "0" : "")) + std::to_string(i); output_expolygons(expolys_top, "top" + layer_num_str + ".svg"); diff --git a/src/libslic3r/SLA/SLAAutoSupports.hpp b/src/libslic3r/SLA/SLAAutoSupports.hpp index 15a5033bd..171cf854a 100644 --- a/src/libslic3r/SLA/SLAAutoSupports.hpp +++ b/src/libslic3r/SLA/SLAAutoSupports.hpp @@ -19,12 +19,12 @@ public: float minimal_distance; float head_diameter; /////////////// - inline float support_force() const { return 10.f / density_relative; } // a force one point can support (arbitrary force unit) + inline float support_force() const { return 7.7f / density_relative; } // a force one point can support (arbitrary force unit) inline float tear_pressure() const { return 1.f; } // pressure that the display exerts (the force unit per mm2) }; SLAAutoSupports(const TriangleMesh& mesh, const sla::EigenMesh3D& emesh, const std::vector& slices, - const std::vector& heights, const Config& config, std::function throw_on_cancel); + const std::vector& heights, const Config& config, std::function throw_on_cancel, std::function statusfn); const std::vector& output() { return m_output; } struct MyLayer; @@ -196,12 +196,13 @@ private: static void output_structures(const std::vector &structures); #endif // SLA_AUTOSUPPORTS_DEBUG - std::function m_throw_on_cancel; const sla::EigenMesh3D& m_emesh; + std::function m_throw_on_cancel; + std::function m_statusfn; }; } // namespace Slic3r -#endif // SLAAUTOSUPPORTS_HPP_ \ No newline at end of file +#endif // SLAAUTOSUPPORTS_HPP_ diff --git a/src/libslic3r/SLA/SLABasePool.cpp b/src/libslic3r/SLA/SLABasePool.cpp index 6518ede07..69f7b91ca 100644 --- a/src/libslic3r/SLA/SLABasePool.cpp +++ b/src/libslic3r/SLA/SLABasePool.cpp @@ -552,6 +552,7 @@ void base_plate(const TriangleMesh &mesh, ExPolygons &output, float h, float layerh, ThrowOnCancel thrfn) { TriangleMesh m = mesh; + m.require_shared_vertices(); // TriangleMeshSlicer needs this TriangleMeshSlicer slicer(&m); auto bb = mesh.bounding_box(); @@ -581,8 +582,8 @@ void base_plate(const TriangleMesh &mesh, ExPolygons &output, float h, } } -void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, - const PoolConfig& cfg) +Contour3D create_base_pool(const ExPolygons &ground_layer, + const PoolConfig& cfg = PoolConfig()) { // for debugging: // Benchmark bench; @@ -617,7 +618,7 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, Contour3D pool; for(ExPolygon& concaveh : concavehs) { - if(concaveh.contour.points.empty()) return; + if(concaveh.contour.points.empty()) return pool; // Get rid of any holes in the concave hull output. concaveh.holes.clear(); @@ -682,7 +683,7 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, // Generate the smoothed edge geometry - pool.merge(round_edges(ob, + if(s_eradius > 0) pool.merge(round_edges(ob, r, phi, 0, // z position of the input plane @@ -697,7 +698,8 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, if(wingheight > 0) { // Generate the smoothed edge geometry - pool.merge(round_edges(middle_base, + wh = 0; + if(s_eradius) pool.merge(round_edges(middle_base, r, phi - 90, // from tangent lines 0, // z position of the input plane @@ -721,6 +723,14 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, pool.merge(triangulate_expolygon_3d(inner_base, -wingheight)); } + + return pool; +} + +void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, + const PoolConfig& cfg) +{ + // For debugging: // bench.stop(); @@ -728,7 +738,7 @@ void create_base_pool(const ExPolygons &ground_layer, TriangleMesh& out, // std::fstream fout("pad_debug.obj", std::fstream::out); // if(fout.good()) pool.to_obj(fout); - out.merge(mesh(pool)); + out.merge(mesh(create_base_pool(ground_layer, cfg))); } } diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp index 7c4bf96bf..ffcc3a911 100644 --- a/src/libslic3r/SLA/SLASupportTree.cpp +++ b/src/libslic3r/SLA/SLASupportTree.cpp @@ -817,6 +817,10 @@ public: meshcache = mesh(merged); + // The mesh will be passed by const-pointer to TriangleMeshSlicer, + // which will need this. + meshcache.require_shared_vertices(); + // TODO: Is this necessary? //meshcache.repair(); @@ -842,6 +846,16 @@ public: if(!meshcache_valid) merged_mesh(); return model_height; } + + // Intended to be called after the generation is fully complete + void clear_support_data() { + merged_mesh(); // in case the mesh is not generated, it should be... + m_heads.clear(); + m_pillars.clear(); + m_junctions.clear(); + m_bridges.clear(); + m_compact_bridges.clear(); + } }; @@ -1572,10 +1586,8 @@ public: auto hit = bridge_mesh_intersect(headjp, n, r); if(std::isinf(hit.distance())) ground_head_indices.emplace_back(i); - else { - if(m_cfg.ground_facing_only) head.invalidate(); - m_iheads_onmodel.emplace_back(std::make_pair(i, hit)); - } + else if(m_cfg.ground_facing_only) head.invalidate(); + else m_iheads_onmodel.emplace_back(std::make_pair(i, hit)); } // We want to search for clusters of points that are far enough @@ -1872,7 +1884,7 @@ public: } } - void cascade_pillars() { + void interconnect_pillars() { // Now comes the algorithm that connects pillars with each other. // Ideally every pillar should be connected with at least one of its // neighbors if that neighbor is within max_pillar_link_distance @@ -2121,7 +2133,7 @@ bool SLASupportTree::generate(const std::vector &support_points, std::bind(&Algorithm::routing_to_model, &alg), - std::bind(&Algorithm::cascade_pillars, &alg), + std::bind(&Algorithm::interconnect_pillars, &alg), std::bind(&Algorithm::routing_headless, &alg), @@ -2150,16 +2162,16 @@ bool SLASupportTree::generate(const std::vector &support_points, // Let's define a simple automaton that will run our program. auto progress = [&ctl, &pc] () { static const std::array stepstr { - L("Starting"), - L("Filtering"), - L("Generate pinheads"), - L("Classification"), - L("Routing to ground"), - L("Routing supports to model surface"), - L("Cascading pillars"), - L("Processing small holes"), - L("Done"), - L("Abort") + "Starting", + "Filtering", + "Generate pinheads", + "Classification", + "Routing to ground", + "Routing supports to model surface", + "Interconnecting pillars", + "Processing small holes", + "Done", + "Abort" }; static const std::array stepstate { @@ -2233,6 +2245,7 @@ SlicedSupports SLASupportTree::slice(float layerh, float init_layerh) const TriangleMesh fullmesh = m_impl->merged_mesh(); fullmesh.merge(get_pad()); + fullmesh.require_shared_vertices(); // TriangleMeshSlicer needs this TriangleMeshSlicer slicer(&fullmesh); SlicedSupports ret; slicer.slice(heights, &ret, get().ctl().cancelfn); @@ -2245,6 +2258,7 @@ SlicedSupports SLASupportTree::slice(const std::vector &heights, { TriangleMesh fullmesh = m_impl->merged_mesh(); fullmesh.merge(get_pad()); + fullmesh.require_shared_vertices(); // TriangleMeshSlicer needs this TriangleMeshSlicer slicer(cr, 0); //TriangleMeshSlicer slicer(&fullmesh); slicer.init(&fullmesh, []() {}); @@ -2283,6 +2297,7 @@ SLASupportTree::SLASupportTree(const std::vector &points, { m_impl->ground_level = emesh.ground_level() - cfg.object_elevation_mm; generate(points, emesh, cfg, ctl); + m_impl->clear_support_data(); } SLASupportTree::SLASupportTree(const SLASupportTree &c): diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 6d8b77ec9..83736161c 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -3,6 +3,7 @@ #include "SLA/SLABasePool.hpp" #include "SLA/SLAAutoSupports.hpp" #include "ClipperUtils.hpp" +#include "Geometry.hpp" #include "MTUtils.hpp" #include @@ -12,6 +13,9 @@ #include #include +// For geometry algorithms with native Clipper types (no copies and conversions) +#include + //#include //#include "tbb/mutex.h" #include "I18N.hpp" @@ -39,35 +43,43 @@ namespace { // should add up to 100 (%) const std::array OBJ_STEP_LEVELS = { - 10, // slaposObjectSlice, - 30, // slaposSupportPoints, - 25, // slaposSupportTree, - 25, // slaposBasePool, - 5, // slaposSliceSupports, - 5 // slaposIndexSlices + 30, // slaposObjectSlice, + 20, // slaposSupportPoints, + 10, // slaposSupportTree, + 10, // slaposBasePool, + 30, // slaposSliceSupports, }; -const std::array OBJ_STEP_LABELS = +// Object step to status label. The labels are localized at the time of calling, thus supporting language switching. +std::string OBJ_STEP_LABELS(size_t idx) { - L("Slicing model"), // slaposObjectSlice, - L("Generating support points"), // slaposSupportPoints, - L("Generating support tree"), // slaposSupportTree, - L("Generating pad"), // slaposBasePool, - L("Slicing supports"), // slaposSliceSupports, - L("Slicing supports") // slaposIndexSlices, + switch (idx) { + case slaposObjectSlice: return L("Slicing model"); + case slaposSupportPoints: return L("Generating support points"); + case slaposSupportTree: return L("Generating support tree"); + case slaposBasePool: return L("Generating pad"); + case slaposSliceSupports: return L("Slicing supports"); + default:; + } + assert(false); return "Out of bounds!"; }; // Should also add up to 100 (%) const std::array PRINT_STEP_LEVELS = { - 80, // slapsRasterize - 20, // slapsValidate + 10, // slapsMergeSlicesAndEval + 90, // slapsRasterize }; -const std::array PRINT_STEP_LABELS = +// Print step to status label. The labels are localized at the time of calling, thus supporting language switching. +std::string PRINT_STEP_LABELS(size_t idx) { - L("Rasterizing layers"), // slapsRasterize - L("Validating"), // slapsValidate + switch (idx) { + case slapsMergeSlicesAndEval: return L("Merging slices and calculating statistics"); + case slapsRasterize: return L("Rasterizing layers"); + default:; + } + assert(false); return "Out of bounds!"; }; } @@ -84,28 +96,51 @@ void SLAPrint::clear() } // Transformation without rotation around Z and without a shift by X and Y. -static Transform3d sla_trafo(const ModelObject &model_object) +static Transform3d sla_trafo(const SLAPrint& p, const ModelObject &model_object) { + + Vec3d corr = p.relative_correction(); + ModelInstance &model_instance = *model_object.instances.front(); Vec3d offset = model_instance.get_offset(); Vec3d rotation = model_instance.get_rotation(); offset(0) = 0.; offset(1) = 0.; rotation(2) = 0.; - return Geometry::assemble_transform(offset, rotation, model_instance.get_scaling_factor(), model_instance.get_mirror()); + + offset(Z) *= corr(Z); + + auto trafo = Transform3d::Identity(); + trafo.translate(offset); + trafo.scale(corr); + trafo.rotate(Eigen::AngleAxisd(rotation(2), Vec3d::UnitZ())); + trafo.rotate(Eigen::AngleAxisd(rotation(1), Vec3d::UnitY())); + trafo.rotate(Eigen::AngleAxisd(rotation(0), Vec3d::UnitX())); + trafo.scale(model_instance.get_scaling_factor()); + trafo.scale(model_instance.get_mirror()); + + if (model_instance.is_left_handed()) + trafo = Eigen::Scaling(Vec3d(-1., 1., 1.)) * trafo; + + return trafo; } // List of instances, where the ModelInstance transformation is a composite of sla_trafo and the transformation defined by SLAPrintObject::Instance. static std::vector sla_instances(const ModelObject &model_object) { std::vector instances; - for (ModelInstance *model_instance : model_object.instances) - if (model_instance->is_printable()) { - instances.emplace_back(SLAPrintObject::Instance( - model_instance->id(), - Point::new_scale(model_instance->get_offset(X), model_instance->get_offset(Y)), - float(model_instance->get_rotation(Z)))); - } + assert(! model_object.instances.empty()); + if (! model_object.instances.empty()) { + Vec3d rotation0 = model_object.instances.front()->get_rotation(); + rotation0(2) = 0.; + for (ModelInstance *model_instance : model_object.instances) + if (model_instance->is_printable()) { + instances.emplace_back( + model_instance->id(), + Point::new_scale(model_instance->get_offset(X), model_instance->get_offset(Y)), + float(Geometry::rotation_diff_z(rotation0, model_instance->get_rotation()))); + } + } return instances; } @@ -117,12 +152,12 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf // Make a copy of the config, normalize it. DynamicPrintConfig config(config_in); - config.option("sla_print_settings_id", true); - config.option("sla_material_settings_id", true); - config.option("printer_settings_id", true); + config.option("sla_print_settings_id", true); + config.option("sla_material_settings_id", true); + config.option("printer_settings_id", true); config.normalize(); // Collect changes to print config. - t_config_option_keys print_diff = m_print_config.diff(config); + t_config_option_keys print_diff = m_print_config.diff(config); t_config_option_keys printer_diff = m_printer_config.diff(config); t_config_option_keys material_diff = m_material_config.diff(config); t_config_option_keys object_diff = m_default_object_config.diff(config); @@ -139,23 +174,24 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf tbb::mutex::scoped_lock lock(this->state_mutex()); // The following call may stop the background processing. + bool invalidate_all_model_objects = false; if (! print_diff.empty()) - update_apply_status(this->invalidate_state_by_config_options(print_diff)); + update_apply_status(this->invalidate_state_by_config_options(print_diff, invalidate_all_model_objects)); if (! printer_diff.empty()) - update_apply_status(this->invalidate_state_by_config_options(printer_diff)); + update_apply_status(this->invalidate_state_by_config_options(printer_diff, invalidate_all_model_objects)); if (! material_diff.empty()) - update_apply_status(this->invalidate_state_by_config_options(material_diff)); + update_apply_status(this->invalidate_state_by_config_options(material_diff, invalidate_all_model_objects)); // Apply variables to placeholder parser. The placeholder parser is currently used // only to generate the output file name. - if (! placeholder_parser_diff.empty()) { + if (! placeholder_parser_diff.empty()) { // update_apply_status(this->invalidate_step(slapsRasterize)); - PlaceholderParser &pp = this->placeholder_parser(); - pp.apply_config(config); + PlaceholderParser &pp = this->placeholder_parser(); + pp.apply_config(config); // Set the profile aliases for the PrintBase::output_filename() - pp.set("print_preset", config.option("sla_print_settings_id")->clone()); - pp.set("material_preset", config.option("sla_material_settings_id")->clone()); - pp.set("printer_preset", config.option("printer_settings_id")->clone()); + pp.set("print_preset", config.option("sla_print_settings_id")->clone()); + pp.set("material_preset", config.option("sla_material_settings_id")->clone()); + pp.set("printer_preset", config.option("printer_settings_id")->clone()); } // It is also safe to change m_config now after this->invalidate_state_by_config_options() call. @@ -183,7 +219,7 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf std::set model_object_status; // 1) Synchronize model objects. - if (model.id() != m_model.id()) { + if (model.id() != m_model.id() || invalidate_all_model_objects) { // Kill everything, initialize from scratch. // Stop background processing. this->call_cancel_callback(); @@ -204,7 +240,7 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf model_object_status.emplace(model_object->id(), ModelObjectStatus::Old); } else if (model_object_list_extended(m_model, model)) { // Add new objects. Their volumes and configs will be synchronized later. - update_apply_status(this->invalidate_step(slapsRasterize)); + update_apply_status(this->invalidate_step(slapsMergeSlicesAndEval)); for (const ModelObject *model_object : m_model.objects) model_object_status.emplace(model_object->id(), ModelObjectStatus::Old); for (size_t i = m_model.objects.size(); i < model.objects.size(); ++ i) { @@ -216,7 +252,7 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf // Reorder the objects, add new objects. // First stop background processing before shuffling or deleting the PrintObjects in the object list. this->call_cancel_callback(); - update_apply_status(this->invalidate_step(slapsRasterize)); + update_apply_status(this->invalidate_step(slapsMergeSlicesAndEval)); // Second create a new list of objects. std::vector model_objects_old(std::move(m_model.objects)); m_model.objects.clear(); @@ -302,105 +338,93 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf auto it_status = model_object_status.find(ModelObjectStatus(model_object.id())); assert(it_status != model_object_status.end()); assert(it_status->status != ModelObjectStatus::Deleted); - // PrintObject for this ModelObject, if it exists. - auto it_print_object_status = print_object_status.end(); - if (it_status->status != ModelObjectStatus::New) { - // Update the ModelObject instance, possibly invalidate the linked PrintObjects. - assert(it_status->status == ModelObjectStatus::Old || it_status->status == ModelObjectStatus::Moved); - const ModelObject &model_object_new = *model.objects[idx_model_object]; - it_print_object_status = print_object_status.lower_bound(PrintObjectStatus(model_object.id())); - if (it_print_object_status != print_object_status.end() && it_print_object_status->id != model_object.id()) - it_print_object_status = print_object_status.end(); - // Check whether a model part volume was added or removed, their transformations or order changed. - bool model_parts_differ = model_volume_list_changed(model_object, model_object_new, ModelVolumeType::MODEL_PART); - bool sla_trafo_differs = model_object.instances.empty() != model_object_new.instances.empty() || - (! model_object.instances.empty() && ! sla_trafo(model_object).isApprox(sla_trafo(model_object_new))); - if (model_parts_differ || sla_trafo_differs) { - // The very first step (the slicing step) is invalidated. One may freely remove all associated PrintObjects. - if (it_print_object_status != print_object_status.end()) { - update_apply_status(it_print_object_status->print_object->invalidate_all_steps()); - const_cast(*it_print_object_status).status = PrintObjectStatus::Deleted; - } - // Copy content of the ModelObject including its ID, do not change the parent. - model_object.assign_copy(model_object_new); - } else { - // Synchronize Object's config. - bool object_config_changed = model_object.config != model_object_new.config; - if (object_config_changed) - model_object.config = model_object_new.config; - if (! object_diff.empty() || object_config_changed) { - SLAPrintObjectConfig new_config = m_default_object_config; - normalize_and_apply_config(new_config, model_object.config); - if (it_print_object_status != print_object_status.end()) { - t_config_option_keys diff = it_print_object_status->print_object->config().diff(new_config); - if (! diff.empty()) { - update_apply_status(it_print_object_status->print_object->invalidate_state_by_config_options(diff)); - it_print_object_status->print_object->config_apply_only(new_config, diff, true); - } - } - } - /*if (model_object.sla_support_points != model_object_new.sla_support_points) { - model_object.sla_support_points = model_object_new.sla_support_points; - if (it_print_object_status != print_object_status.end()) - update_apply_status(it_print_object_status->print_object->invalidate_step(slaposSupportPoints)); - } - if (model_object.sla_points_status != model_object_new.sla_points_status) { - // Change of this status should invalidate support points. The points themselves are not enough, there are none - // in case that nothing was generated OR that points were autogenerated already and not copied to the front-end. - // These cases can only be differentiated by checking the status change. However, changing from 'Generating' should NOT - // invalidate - that would keep stopping the background processing without a reason. - if (model_object.sla_points_status != sla::PointsStatus::Generating) - if (it_print_object_status != print_object_status.end()) - update_apply_status(it_print_object_status->print_object->invalidate_step(slaposSupportPoints)); - model_object.sla_points_status = model_object_new.sla_points_status; - }*/ + // PrintObject for this ModelObject, if it exists. + auto it_print_object_status = print_object_status.end(); + if (it_status->status != ModelObjectStatus::New) { + // Update the ModelObject instance, possibly invalidate the linked PrintObjects. + assert(it_status->status == ModelObjectStatus::Old || it_status->status == ModelObjectStatus::Moved); + const ModelObject &model_object_new = *model.objects[idx_model_object]; + it_print_object_status = print_object_status.lower_bound(PrintObjectStatus(model_object.id())); + if (it_print_object_status != print_object_status.end() && it_print_object_status->id != model_object.id()) + it_print_object_status = print_object_status.end(); + // Check whether a model part volume was added or removed, their transformations or order changed. + bool model_parts_differ = model_volume_list_changed(model_object, model_object_new, ModelVolumeType::MODEL_PART); + bool sla_trafo_differs = + model_object.instances.empty() != model_object_new.instances.empty() || + (! model_object.instances.empty() && + (! sla_trafo(*this, model_object).isApprox(sla_trafo(*this, model_object_new)) || + model_object.instances.front()->is_left_handed() != model_object_new.instances.front()->is_left_handed())); + if (model_parts_differ || sla_trafo_differs) { + // The very first step (the slicing step) is invalidated. One may freely remove all associated PrintObjects. + if (it_print_object_status != print_object_status.end()) { + update_apply_status(it_print_object_status->print_object->invalidate_all_steps()); + const_cast(*it_print_object_status).status = PrintObjectStatus::Deleted; + } + // Copy content of the ModelObject including its ID, do not change the parent. + model_object.assign_copy(model_object_new); + } else { + // Synchronize Object's config. + bool object_config_changed = model_object.config != model_object_new.config; + if (object_config_changed) + model_object.config = model_object_new.config; + if (! object_diff.empty() || object_config_changed) { + SLAPrintObjectConfig new_config = m_default_object_config; + normalize_and_apply_config(new_config, model_object.config); + if (it_print_object_status != print_object_status.end()) { + t_config_option_keys diff = it_print_object_status->print_object->config().diff(new_config); + if (! diff.empty()) { + update_apply_status(it_print_object_status->print_object->invalidate_state_by_config_options(diff)); + it_print_object_status->print_object->config_apply_only(new_config, diff, true); + } + } + } - bool old_user_modified = model_object.sla_points_status == sla::PointsStatus::UserModified; - bool new_user_modified = model_object_new.sla_points_status == sla::PointsStatus::UserModified; - if ((old_user_modified && ! new_user_modified) || // switching to automatic supports from manual supports - (! old_user_modified && new_user_modified) || // switching to manual supports from automatic supports - (new_user_modified && model_object.sla_support_points != model_object_new.sla_support_points)) { - if (it_print_object_status != print_object_status.end()) - update_apply_status(it_print_object_status->print_object->invalidate_step(slaposSupportPoints)); + bool old_user_modified = model_object.sla_points_status == sla::PointsStatus::UserModified; + bool new_user_modified = model_object_new.sla_points_status == sla::PointsStatus::UserModified; + if ((old_user_modified && ! new_user_modified) || // switching to automatic supports from manual supports + (! old_user_modified && new_user_modified) || // switching to manual supports from automatic supports + (new_user_modified && model_object.sla_support_points != model_object_new.sla_support_points)) { + if (it_print_object_status != print_object_status.end()) + update_apply_status(it_print_object_status->print_object->invalidate_step(slaposSupportPoints)); - model_object.sla_points_status = model_object_new.sla_points_status; - model_object.sla_support_points = model_object_new.sla_support_points; - } + model_object.sla_points_status = model_object_new.sla_points_status; + model_object.sla_support_points = model_object_new.sla_support_points; + } - // Copy the ModelObject name, input_file and instances. The instances will compared against PrintObject instances in the next step. - model_object.name = model_object_new.name; - model_object.input_file = model_object_new.input_file; - model_object.clear_instances(); - model_object.instances.reserve(model_object_new.instances.size()); - for (const ModelInstance *model_instance : model_object_new.instances) { - model_object.instances.emplace_back(new ModelInstance(*model_instance)); - model_object.instances.back()->set_model_object(&model_object); - } - } - } + // Copy the ModelObject name, input_file and instances. The instances will compared against PrintObject instances in the next step. + model_object.name = model_object_new.name; + model_object.input_file = model_object_new.input_file; + model_object.clear_instances(); + model_object.instances.reserve(model_object_new.instances.size()); + for (const ModelInstance *model_instance : model_object_new.instances) { + model_object.instances.emplace_back(new ModelInstance(*model_instance)); + model_object.instances.back()->set_model_object(&model_object); + } + } + } std::vector new_instances = sla_instances(model_object); if (it_print_object_status != print_object_status.end() && it_print_object_status->status != PrintObjectStatus::Deleted) { // The SLAPrintObject is already there. - if (new_instances.empty()) { - const_cast(*it_print_object_status).status = PrintObjectStatus::Deleted; - } else { - if (new_instances != it_print_object_status->print_object->instances()) { - // Instances changed. - it_print_object_status->print_object->set_instances(new_instances); - update_apply_status(this->invalidate_step(slapsRasterize)); - } - print_objects_new.emplace_back(it_print_object_status->print_object); - const_cast(*it_print_object_status).status = PrintObjectStatus::Reused; - } - } else if (! new_instances.empty()) { + if (new_instances.empty()) { + const_cast(*it_print_object_status).status = PrintObjectStatus::Deleted; + } else { + if (new_instances != it_print_object_status->print_object->instances()) { + // Instances changed. + it_print_object_status->print_object->set_instances(new_instances); + update_apply_status(this->invalidate_step(slapsMergeSlicesAndEval)); + } + print_objects_new.emplace_back(it_print_object_status->print_object); + const_cast(*it_print_object_status).status = PrintObjectStatus::Reused; + } + } else if (! new_instances.empty()) { auto print_object = new SLAPrintObject(this, &model_object); // FIXME: this invalidates the transformed mesh in SLAPrintObject // which is expensive to calculate (especially the raw_mesh() call) - print_object->set_trafo(sla_trafo(model_object)); + print_object->set_trafo(sla_trafo(*this, model_object), model_object.instances.front()->is_left_handed()); - print_object->set_instances(new_instances); + print_object->set_instances(std::move(new_instances)); print_object->config_apply(config, true); print_objects_new.emplace_back(print_object); new_objects = true; @@ -422,6 +446,12 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf if (new_objects) update_apply_status(false); } + + if(m_objects.empty()) { + m_printer.release(); + m_printer_input.clear(); + m_print_statistics.clear(); + } #ifdef _DEBUG check_model_ids_equal(m_model, model); @@ -433,56 +463,56 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf // After calling the apply() function, set_task() may be called to limit the task to be processed by process(). void SLAPrint::set_task(const TaskParams ¶ms) { - // Grab the lock for the Print / PrintObject milestones. - tbb::mutex::scoped_lock lock(this->state_mutex()); + // Grab the lock for the Print / PrintObject milestones. + tbb::mutex::scoped_lock lock(this->state_mutex()); - int n_object_steps = int(params.to_object_step) + 1; - if (n_object_steps == 0) - n_object_steps = (int)slaposCount; + int n_object_steps = int(params.to_object_step) + 1; + if (n_object_steps == 0) + n_object_steps = (int)slaposCount; - if (params.single_model_object.valid()) { + if (params.single_model_object.valid()) { // Find the print object to be processed with priority. - SLAPrintObject *print_object = nullptr; - size_t idx_print_object = 0; - for (; idx_print_object < m_objects.size(); ++ idx_print_object) - if (m_objects[idx_print_object]->model_object()->id() == params.single_model_object) { - print_object = m_objects[idx_print_object]; - break; - } - assert(print_object != nullptr); + SLAPrintObject *print_object = nullptr; + size_t idx_print_object = 0; + for (; idx_print_object < m_objects.size(); ++ idx_print_object) + if (m_objects[idx_print_object]->model_object()->id() == params.single_model_object) { + print_object = m_objects[idx_print_object]; + break; + } + assert(print_object != nullptr); // Find out whether the priority print object is being currently processed. bool running = false; - for (int istep = 0; istep < n_object_steps; ++ istep) { - if (! print_object->m_stepmask[istep]) + for (int istep = 0; istep < n_object_steps; ++ istep) { + if (! print_object->m_stepmask[istep]) // Step was skipped, cancel. - break; - if (print_object->is_step_started_unguarded(SLAPrintObjectStep(istep))) { + break; + if (print_object->is_step_started_unguarded(SLAPrintObjectStep(istep))) { // No step was skipped, and a wanted step is being processed. Don't cancel. - running = true; - break; - } - } - if (! running) - this->call_cancel_callback(); + running = true; + break; + } + } + if (! running) + this->call_cancel_callback(); - // Now the background process is either stopped, or it is inside one of the print object steps to be calculated anyway. - if (params.single_model_instance_only) { - // Suppress all the steps of other instances. - for (SLAPrintObject *po : m_objects) - for (int istep = 0; istep < (int)slaposCount; ++ istep) - po->m_stepmask[istep] = false; - } else if (! running) { - // Swap the print objects, so that the selected print_object is first in the row. - // At this point the background processing must be stopped, so it is safe to shuffle print objects. - if (idx_print_object != 0) - std::swap(m_objects.front(), m_objects[idx_print_object]); - } + // Now the background process is either stopped, or it is inside one of the print object steps to be calculated anyway. + if (params.single_model_instance_only) { + // Suppress all the steps of other instances. + for (SLAPrintObject *po : m_objects) + for (int istep = 0; istep < (int)slaposCount; ++ istep) + po->m_stepmask[istep] = false; + } else if (! running) { + // Swap the print objects, so that the selected print_object is first in the row. + // At this point the background processing must be stopped, so it is safe to shuffle print objects. + if (idx_print_object != 0) + std::swap(m_objects.front(), m_objects[idx_print_object]); + } // and set the steps for the current object. - for (int istep = 0; istep < n_object_steps; ++ istep) - print_object->m_stepmask[istep] = true; - for (int istep = n_object_steps; istep < (int)slaposCount; ++ istep) - print_object->m_stepmask[istep] = false; - } else { + for (int istep = 0; istep < n_object_steps; ++ istep) + print_object->m_stepmask[istep] = true; + for (int istep = n_object_steps; istep < (int)slaposCount; ++ istep) + print_object->m_stepmask[istep] = false; + } else { // Slicing all objects. bool running = false; for (SLAPrintObject *print_object : m_objects) @@ -511,9 +541,9 @@ void SLAPrint::set_task(const TaskParams ¶ms) if (params.to_object_step != -1 || params.to_print_step != -1) { // Limit the print steps. - size_t istep = (params.to_object_step != -1) ? 0 : size_t(params.to_print_step) + 1; - for (; istep < m_stepmask.size(); ++ istep) - m_stepmask[istep] = false; + size_t istep = (params.to_object_step != -1) ? 0 : size_t(params.to_print_step) + 1; + for (; istep < m_stepmask.size(); ++ istep) + m_stepmask[istep] = false; } } @@ -523,7 +553,7 @@ void SLAPrint::finalize() { for (SLAPrintObject *po : m_objects) for (int istep = 0; istep < (int)slaposCount; ++ istep) - po->m_stepmask[istep] = true; + po->m_stepmask[istep] = true; for (int istep = 0; istep < (int)slapsCount; ++ istep) m_stepmask[istep] = true; } @@ -532,7 +562,7 @@ void SLAPrint::finalize() // (timestamps, object placeholders derived from the model, current placeholder prameters and print statistics. // Use the final print statistics if available, or just keep the print statistics placeholders if not available yet (before the output is finalized). std::string SLAPrint::output_filename() const -{ +{ DynamicConfig config = this->finished() ? this->print_statistics().config() : this->print_statistics().placeholders(); return this->PrintBase::output_filename(m_print_config.output_filename_format.value, "sl1", &config); } @@ -577,16 +607,21 @@ sla::PoolConfig make_pool_config(const SLAPrintObjectConfig& c) { return pcfg; } - -void swapXY(ExPolygon& expoly) { - for(auto& p : expoly.contour.points) std::swap(p(X), p(Y)); - for(auto& h : expoly.holes) for(auto& p : h.points) std::swap(p(X), p(Y)); -} } std::string SLAPrint::validate() const { for(SLAPrintObject * po : m_objects) { + + const ModelObject *mo = po->model_object(); + bool supports_en = po->config().supports_enable.getBool(); + + if(supports_en && + mo->sla_points_status == sla::PointsStatus::UserModified && + mo->sla_support_points.empty()) + return L("Cannot proceed without support points! " + "Add support points or disable support generation."); + sla::SupportConfig cfg = make_support_cfg(po->config()); double pinhead_width = @@ -595,20 +630,24 @@ std::string SLAPrint::validate() const 2 * cfg.head_back_radius_mm - cfg.head_penetration_mm; - if(pinhead_width > cfg.object_elevation_mm) - return L("Elevetion is too low for object."); + if(supports_en && pinhead_width > cfg.object_elevation_mm) + return L("Elevation is too low for object."); } return ""; } -template -void report_status(SLAPrint& p, int st, const std::string& msg, Args&&...args) +bool SLAPrint::invalidate_step(SLAPrintStep step) { - BOOST_LOG_TRIVIAL(info) << st << "% " << msg; - p.set_status(st, msg, std::forward(args)...); -} + bool invalidated = Inherited::invalidate_step(step); + // propagate to dependent steps + if (step == slapsMergeSlicesAndEval) { + invalidated |= this->invalidate_all_steps(); + } + + return invalidated; +} void SLAPrint::process() { @@ -623,15 +662,12 @@ void SLAPrint::process() // shortcut to initial layer height double ilhd = m_material_config.initial_layer_height.getFloat(); auto ilh = float(ilhd); - double lhd = m_objects.front()->m_config.layer_height.getFloat(); - float lh = float(lhd); - auto ilhs = LevelID(ilhd / SCALING_FACTOR); - auto lhs = LevelID(lhd / SCALING_FACTOR); + auto ilhs = coord_t(ilhd / SCALING_FACTOR); const size_t objcount = m_objects.size(); const unsigned min_objstatus = 0; // where the per object operations start - const unsigned max_objstatus = PRINT_STEP_LEVELS[slapsRasterize]; // where the per object operations end + const unsigned max_objstatus = 50; // where the per object operations end // the coefficient that multiplies the per object status values which // are set up for <0, 100>. They need to be scaled into the whole process @@ -648,38 +684,45 @@ void SLAPrint::process() // Slicing the model object. This method is oversimplified and needs to // be compared with the fff slicing algorithm for verification - auto slice_model = [this, ilhs, lhs, ilh, lh](SLAPrintObject& po) { - TriangleMesh mesh = po.transformed_mesh(); + auto slice_model = [this, ilhs, ilh, ilhd](SLAPrintObject& po) { + const TriangleMesh& mesh = po.transformed_mesh(); // We need to prepare the slice index... + double lhd = m_objects.front()->m_config.layer_height.getFloat(); + float lh = float(lhd); + auto lhs = coord_t(lhd / SCALING_FACTOR); + auto&& bb3d = mesh.bounding_box(); double minZ = bb3d.min(Z) - po.get_elevation(); double maxZ = bb3d.max(Z); - auto minZs = LevelID(minZ / SCALING_FACTOR); - auto maxZs = LevelID(maxZ / SCALING_FACTOR); + auto minZs = coord_t(minZ / SCALING_FACTOR); + auto maxZs = coord_t(maxZ / SCALING_FACTOR); po.m_slice_index.clear(); - po.m_slice_index.reserve(size_t(maxZs - (minZs + ilhs) / lhs) + 1); - po.m_slice_index.emplace_back(minZs + ilhs, float(minZ) + ilh / 2.f, ilh); + + size_t cap = size_t(1 + (maxZs - minZs - ilhs) / lhs); + po.m_slice_index.reserve(cap); + + po.m_slice_index.emplace_back(minZs + ilhs, minZ + ilhd / 2.0, ilh); - for(LevelID h = minZs + ilhs + lhs; h <= maxZs; h += lhs) { - po.m_slice_index.emplace_back(h, float(h*SCALING_FACTOR) - lh / 2.f, lh); - } - - auto slindex_it = po.search_slice_index(float(bb3d.min(Z))); + for(coord_t h = minZs + ilhs + lhs; h <= maxZs; h += lhs) + po.m_slice_index.emplace_back(h, h*SCALING_FACTOR - lhd / 2.0, lh); + + // Just get the first record that is form the model: + auto slindex_it = + po.closest_slice_record(po.m_slice_index, float(bb3d.min(Z))); if(slindex_it == po.m_slice_index.end()) + //TRN To be shown at the status bar on SLA slicing error. throw std::runtime_error(L("Slicing had to be stopped " "due to an internal error.")); po.m_model_height_levels.clear(); po.m_model_height_levels.reserve(po.m_slice_index.size()); for(auto it = slindex_it; it != po.m_slice_index.end(); ++it) - { po.m_model_height_levels.emplace_back(it->slice_level()); - } TriangleMeshSlicer slicer(float(po.config().slice_closing_radius.value),0); slicer.init(&mesh, [](){}); @@ -690,17 +733,24 @@ void SLAPrint::process() [this](){ throw_if_canceled(); }); auto mit = slindex_it; + double doffs = m_printer_config.absolute_correction.getFloat(); + coord_t clpr_offs = coord_t(doffs / SCALING_FACTOR); for(size_t id = 0; id < po.m_model_slices.size() && mit != po.m_slice_index.end(); id++) { - mit->set_model_slice_idx(id); ++mit; + // We apply the printer correction offset here. + if(clpr_offs != 0) + po.m_model_slices[id] = + offset_ex(po.m_model_slices[id], clpr_offs); + + mit->set_model_slice_idx(po, id); ++mit; } }; // In this step we check the slices, identify island and cover them with // support points. Then we sprinkle the rest of the mesh. - auto support_points = [this](SLAPrintObject& po) { + auto support_points = [this, ostepd](SLAPrintObject& po) { const ModelObject& mo = *po.m_model_object; po.m_supportdata.reset( new SLAPrintObject::SupportData(po.transformed_mesh()) ); @@ -716,6 +766,12 @@ void SLAPrint::process() // into the backend cache. if (mo.sla_points_status != sla::PointsStatus::UserModified) { + // Hypotetical use of the slice index: + // auto bb = po.transformed_mesh().bounding_box(); + // auto range = po.get_slice_records(bb.min(Z)); + // std::vector heights; heights.reserve(range.size()); + // for(auto& record : range) heights.emplace_back(record.slice_level()); + // calculate heights of slices (slices are calculated already) const std::vector& heights = po.m_model_height_levels; @@ -728,14 +784,28 @@ void SLAPrint::process() config.minimal_distance = float(cfg.support_points_minimal_distance); config.head_diameter = float(cfg.support_head_front_diameter); + // scaling for the sub operations + double d = ostepd * OBJ_STEP_LEVELS[slaposSupportPoints] / 100.0; + double init = m_report_status.status(); + + auto statuscb = [this, d, init](unsigned st) + { + double current = init + st * d; + if(std::round(m_report_status.status()) < std::round(current)) + m_report_status(*this, current, + OBJ_STEP_LABELS(slaposSupportPoints)); + + }; + // Construction of this object does the calculation. this->throw_if_canceled(); SLAAutoSupports auto_supports(po.transformed_mesh(), po.m_supportdata->emesh, po.get_model_slices(), heights, - config, - [this]() { throw_if_canceled(); }); + config, + [this]() { throw_if_canceled(); }, + statuscb); // Now let's extract the result. const std::vector& points = auto_supports.output(); @@ -746,7 +816,7 @@ void SLAPrint::process() << po.m_supportdata->support_points.size(); // Using RELOAD_SLA_SUPPORT_POINTS to tell the Plater to pass the update status to GLGizmoSlaSupports - report_status(*this, -1, L("Generating support points"), SlicingStatus::RELOAD_SLA_SUPPORT_POINTS); + m_report_status(*this, -1, L("Generating support points"), SlicingStatus::RELOAD_SLA_SUPPORT_POINTS); } else { // There are either some points on the front-end, or the user removed them on purpose. No calculation will be done. @@ -755,7 +825,8 @@ void SLAPrint::process() }; // In this step we create the supports - auto support_tree = [this, objcount, ostepd](SLAPrintObject& po) { + auto support_tree = [this, ostepd](SLAPrintObject& po) + { if(!po.m_supportdata) return; if(!po.m_config.supports_enable.getBool()) { @@ -767,22 +838,17 @@ void SLAPrint::process() sla::SupportConfig scfg = make_support_cfg(po.m_config); sla::Controller ctl; - // some magic to scale the status values coming from the support - // tree creation into the whole print process - auto stfirst = OBJ_STEP_LEVELS.begin(); - auto stthis = stfirst + slaposSupportTree; - // we need to add up the status portions until this operation - int init = std::accumulate(stfirst, stthis, 0); - init = int(init * ostepd); // scale the init portion - // scaling for the sub operations - double d = *stthis / (objcount * 100.0); + double d = ostepd * OBJ_STEP_LEVELS[slaposSupportTree] / 100.0; + double init = m_report_status.status(); - ctl.statuscb = [this, init, d](unsigned st, const std::string& msg) + ctl.statuscb = [this, d, init](unsigned st, const std::string&) { - //FIXME this status line scaling does not seem to be correct. - // How does it account for an increasing object index? - report_status(*this, int(init + st*d), msg); + double current = init + st * d; + if(std::round(m_report_status.status()) < std::round(current)) + m_report_status(*this, current, + OBJ_STEP_LABELS(slaposSupportTree)); + }; ctl.stopcondition = [this](){ return canceled(); }; @@ -798,7 +864,7 @@ void SLAPrint::process() auto rc = SlicingStatus::RELOAD_SCENE; // This is to prevent "Done." being displayed during merged_mesh() - report_status(*this, -1, L("Visualizing supports")); + m_report_status(*this, -1, L("Visualizing supports")); po.m_supportdata->support_tree_ptr->merged_mesh(); BOOST_LOG_TRIVIAL(debug) << "Processed support point count " @@ -808,8 +874,7 @@ void SLAPrint::process() if(po.support_mesh().empty()) BOOST_LOG_TRIVIAL(warning) << "Support mesh is empty"; - report_status(*this, -1, L("Visualizing supports"), rc); - + m_report_status(*this, -1, L("Visualizing supports"), rc); }; // This step generates the sla base pad @@ -857,13 +922,13 @@ void SLAPrint::process() po.throw_if_canceled(); auto rc = SlicingStatus::RELOAD_SCENE; - report_status(*this, -1, L("Visualizing supports"), rc); + m_report_status(*this, -1, L("Visualizing supports"), rc); }; // Slicing the support geometries similarly to the model slicing procedure. // If the pad had been added previously (see step "base_pool" than it will // be part of the slices) - auto slice_supports = [](SLAPrintObject& po) { + auto slice_supports = [this](SLAPrintObject& po) { auto& sd = po.m_supportdata; if(sd) sd->support_slices.clear(); @@ -880,47 +945,343 @@ void SLAPrint::process() heights, float(po.config().slice_closing_radius.value)); } + double doffs = m_printer_config.absolute_correction.getFloat(); + coord_t clpr_offs = coord_t(doffs / SCALING_FACTOR); for(size_t i = 0; i < sd->support_slices.size() && i < po.m_slice_index.size(); ++i) { - po.m_slice_index[i].set_support_slice_idx(i); + // We apply the printer correction offset here. + if(clpr_offs != 0) + sd->support_slices[i] = + offset_ex(sd->support_slices[i], clpr_offs); + + po.m_slice_index[i].set_support_slice_idx(po, i); } + + // Using RELOAD_SLA_PREVIEW to tell the Plater to pass the update status to the 3D preview to load the SLA slices. + m_report_status(*this, -2, "", SlicingStatus::RELOAD_SLA_PREVIEW); }; - // We have the layer polygon collection but we need to unite them into - // an index where the key is the height level in discrete levels (clipper) - auto index_slices = [this/*, ilhd*/](SLAPrintObject& /*po*/) { - // Using RELOAD_SLA_PREVIEW to tell the Plater to pass the update status to the 3D preview to load the SLA slices. - report_status(*this, -2, "", SlicingStatus::RELOAD_SLA_PREVIEW); + // Merging the slices from all the print objects into one slice grid and + // calculating print statistics from the merge result. + auto merge_slices_and_eval_stats = [this, ilhs]() { + + // clear the rasterizer input + m_printer_input.clear(); + + size_t mx = 0; + for(SLAPrintObject * o : m_objects) { + if(auto m = o->get_slice_index().size() > mx) mx = m; + } + + m_printer_input.reserve(mx); + + auto eps = coord_t(SCALED_EPSILON); + + for(SLAPrintObject * o : m_objects) { + coord_t gndlvl = o->get_slice_index().front().print_level() - ilhs; + + for(const SliceRecord& slicerecord : o->get_slice_index()) { + coord_t lvlid = slicerecord.print_level() - gndlvl; + + // Neat trick to round the layer levels to the grid. + lvlid = eps * (lvlid / eps); + + auto it = std::lower_bound(m_printer_input.begin(), + m_printer_input.end(), + PrintLayer(lvlid)); + + if(it == m_printer_input.end() || it->level() != lvlid) + it = m_printer_input.insert(it, PrintLayer(lvlid)); + + + it->add(slicerecord); + } + } + + m_print_statistics.clear(); + + using ClipperPoint = ClipperLib::IntPoint; + using ClipperPolygon = ClipperLib::Polygon; // see clipper_polygon.hpp in libnest2d + using ClipperPolygons = std::vector; + namespace sl = libnest2d::shapelike; // For algorithms + + // If the raster has vertical orientation, we will flip the coordinates + bool flpXY = m_printer_config.display_orientation.getInt() == SLADisplayOrientation::sladoPortrait; + + // Set up custom union and diff functions for clipper polygons + auto polyunion = [] (const ClipperPolygons& subjects) + { + ClipperLib::Clipper clipper; + + bool closed = true; + + for(auto& path : subjects) { + clipper.AddPath(path.Contour, ClipperLib::ptSubject, closed); + clipper.AddPaths(path.Holes, ClipperLib::ptSubject, closed); + } + + auto mode = ClipperLib::pftPositive; + + return libnest2d::clipper_execute(clipper, ClipperLib::ctUnion, mode, mode); + }; + + auto polydiff = [](const ClipperPolygons& subjects, const ClipperPolygons& clips) + { + ClipperLib::Clipper clipper; + + bool closed = true; + + for(auto& path : subjects) { + clipper.AddPath(path.Contour, ClipperLib::ptSubject, closed); + clipper.AddPaths(path.Holes, ClipperLib::ptSubject, closed); + } + + for(auto& path : clips) { + clipper.AddPath(path.Contour, ClipperLib::ptClip, closed); + clipper.AddPaths(path.Holes, ClipperLib::ptClip, closed); + } + + auto mode = ClipperLib::pftPositive; + + return libnest2d::clipper_execute(clipper, ClipperLib::ctDifference, mode, mode); + }; + + // libnest calculates positive area for clockwise polygons, Slic3r is in counter-clockwise + auto areafn = [](const ClipperPolygon& poly) { return - sl::area(poly); }; + + const double area_fill = m_printer_config.area_fill.getFloat()*0.01;// 0.5 (50%); + const double fast_tilt = m_printer_config.fast_tilt_time.getFloat();// 5.0; + const double slow_tilt = m_printer_config.slow_tilt_time.getFloat();// 8.0; + + const double init_exp_time = m_material_config.initial_exposure_time.getFloat(); + const double exp_time = m_material_config.exposure_time.getFloat(); + + const int fade_layers_cnt = m_default_object_config.faded_layers.getInt();// 10 // [3;20] + + const double width = m_printer_config.display_width.getFloat() / SCALING_FACTOR; + const double height = m_printer_config.display_height.getFloat() / SCALING_FACTOR; + const double display_area = width*height; + + // get polygons for all instances in the object + auto get_all_polygons = + [flpXY](const ExPolygons& input_polygons, + const std::vector& instances, + bool is_lefthanded) + { + ClipperPolygons polygons; + polygons.reserve(input_polygons.size() * instances.size()); + + for (const ExPolygon& polygon : input_polygons) { + if(polygon.contour.empty()) continue; + + for (size_t i = 0; i < instances.size(); ++i) + { + ClipperPolygon poly; + + // We need to reverse if flpXY OR is_lefthanded is true but + // not if both are true which is a logical inequality (XOR) + bool needreverse = flpXY != is_lefthanded; + + // should be a move + poly.Contour.reserve(polygon.contour.size() + 1); + + auto& cntr = polygon.contour.points; + if(needreverse) + for(auto it = cntr.rbegin(); it != cntr.rend(); ++it) + poly.Contour.emplace_back(it->x(), it->y()); + else + for(auto& p : cntr) + poly.Contour.emplace_back(p.x(), p.y()); + + for(auto& h : polygon.holes) { + poly.Holes.emplace_back(); + auto& hole = poly.Holes.back(); + hole.reserve(h.points.size() + 1); + + if(needreverse) + for(auto it = h.points.rbegin(); it != h.points.rend(); ++it) + hole.emplace_back(it->x(), it->y()); + else + for(auto& p : h.points) + hole.emplace_back(p.x(), p.y()); + } + + if(is_lefthanded) { + for(auto& p : poly.Contour) p.X = -p.X; + for(auto& h : poly.Holes) for(auto& p : h) p.X = -p.X; + } + + sl::rotate(poly, double(instances[i].rotation)); + sl::translate(poly, ClipperPoint{instances[i].shift(X), + instances[i].shift(Y)}); + + if (flpXY) { + for(auto& p : poly.Contour) std::swap(p.X, p.Y); + for(auto& h : poly.Holes) for(auto& p : h) std::swap(p.X, p.Y); + } + + polygons.emplace_back(std::move(poly)); + } + } + return polygons; + }; + + double supports_volume(0.0); + double models_volume(0.0); + + double estim_time(0.0); + + size_t slow_layers = 0; + size_t fast_layers = 0; + + const double delta_fade_time = (init_exp_time - exp_time) / (fade_layers_cnt + 1); + double fade_layer_time = init_exp_time; + + SpinMutex mutex; + using Lock = std::lock_guard; + + // Going to parallel: + auto printlayerfn = [this, + // functions and read only vars + get_all_polygons, polyunion, polydiff, areafn, + area_fill, display_area, exp_time, init_exp_time, fast_tilt, slow_tilt, delta_fade_time, + + // write vars + &mutex, &models_volume, &supports_volume, &estim_time, &slow_layers, + &fast_layers, &fade_layer_time](size_t sliced_layer_cnt) + { + PrintLayer& layer = m_printer_input[sliced_layer_cnt]; + + // vector of slice record references + auto& slicerecord_references = layer.slices(); + + if(slicerecord_references.empty()) return; + + // Layer height should match for all object slices for a given level. + const auto l_height = double(slicerecord_references.front().get().layer_height()); + + // Calculation of the consumed material + + ClipperPolygons model_polygons; + ClipperPolygons supports_polygons; + + size_t c = std::accumulate(layer.slices().begin(), layer.slices().end(), 0u, [](size_t a, const SliceRecord& sr) { + return a + sr.get_slice(soModel).size(); + }); + + model_polygons.reserve(c); + + c = std::accumulate(layer.slices().begin(), layer.slices().end(), 0u, [](size_t a, const SliceRecord& sr) { + return a + sr.get_slice(soModel).size(); + }); + + supports_polygons.reserve(c); + + for(const SliceRecord& record : layer.slices()) { + const SLAPrintObject *po = record.print_obj(); + + const ExPolygons &modelslices = record.get_slice(soModel); + + bool is_lefth = record.print_obj()->is_left_handed(); + if (!modelslices.empty()) { + ClipperPolygons v = get_all_polygons(modelslices, po->instances(), is_lefth); + for(ClipperPolygon& p_tmp : v) model_polygons.emplace_back(std::move(p_tmp)); + } + + const ExPolygons &supportslices = record.get_slice(soSupport); + + if (!supportslices.empty()) { + ClipperPolygons v = get_all_polygons(supportslices, po->instances(), is_lefth); + for(ClipperPolygon& p_tmp : v) supports_polygons.emplace_back(std::move(p_tmp)); + } + } + + model_polygons = polyunion(model_polygons); + double layer_model_area = 0; + for (const ClipperPolygon& polygon : model_polygons) + layer_model_area += areafn(polygon); + + if (layer_model_area < 0 || layer_model_area > 0) { + Lock lck(mutex); models_volume += layer_model_area * l_height; + } + + if(!supports_polygons.empty()) { + if(model_polygons.empty()) supports_polygons = polyunion(supports_polygons); + else supports_polygons = polydiff(supports_polygons, model_polygons); + // allegedly, union of subject is done withing the diff according to the pftPositive polyFillType + } + + double layer_support_area = 0; + for (const ClipperPolygon& polygon : supports_polygons) + layer_support_area += areafn(polygon); + + if (layer_support_area < 0 || layer_support_area > 0) { + Lock lck(mutex); supports_volume += layer_support_area * l_height; + } + + // Here we can save the expensively calculated polygons for printing + ClipperPolygons trslices; + trslices.reserve(model_polygons.size() + supports_polygons.size()); + for(ClipperPolygon& poly : model_polygons) trslices.emplace_back(std::move(poly)); + for(ClipperPolygon& poly : supports_polygons) trslices.emplace_back(std::move(poly)); + + layer.transformed_slices(polyunion(trslices)); + + // Calculation of the slow and fast layers to the future controlling those values on FW + + const bool is_fast_layer = (layer_model_area + layer_support_area) <= display_area*area_fill; + const double tilt_time = is_fast_layer ? fast_tilt : slow_tilt; + + { Lock lck(mutex); + if (is_fast_layer) + fast_layers++; + else + slow_layers++; + + + // Calculation of the printing time + + if (sliced_layer_cnt < 3) + estim_time += init_exp_time; + else if (fade_layer_time > exp_time) + { + fade_layer_time -= delta_fade_time; + estim_time += fade_layer_time; + } + else + estim_time += exp_time; + + estim_time += tilt_time; + } + }; + + // sequential version for debugging: + // for(size_t i = 0; i < m_printer_input.size(); ++i) printlayerfn(i); + tbb::parallel_for(0, m_printer_input.size(), printlayerfn); + + m_print_statistics.support_used_material = supports_volume * SCALING_FACTOR * SCALING_FACTOR; + m_print_statistics.objects_used_material = models_volume * SCALING_FACTOR * SCALING_FACTOR; + + // Estimated printing time + // A layers count o the highest object + if (m_printer_input.size() == 0) + m_print_statistics.estimated_print_time = "N/A"; + else + m_print_statistics.estimated_print_time = get_time_dhms(float(estim_time)); + + m_print_statistics.fast_layers_count = fast_layers; + m_print_statistics.slow_layers_count = slow_layers; + + m_report_status(*this, -2, "", SlicingStatus::RELOAD_SLA_PREVIEW); }; // Rasterizing the model objects, and their supports auto rasterize = [this, max_objstatus]() { if(canceled()) return; - // clear the rasterizer input - m_printer_input.clear(); - - for(SLAPrintObject * o : m_objects) { - LevelID gndlvl = o->get_slice_index().front().key(); - for(auto& slicerecord : o->get_slice_index()) { - auto& lyrs = m_printer_input[slicerecord.key() - gndlvl]; - - const ExPolygons& objslices = o->get_slices_from_record(slicerecord, soModel); - const ExPolygons& supslices = o->get_slices_from_record(slicerecord, soSupport); - - if(!objslices.empty()) - lyrs.emplace_back(objslices, o->instances()); - - if(!supslices.empty()) - lyrs.emplace_back(supslices, o->instances()); - } - } - // collect all the keys - std::vector keys; keys.reserve(m_printer_input.size()); - for(auto& e : m_printer_input) keys.emplace_back(e.first); // If the raster has vertical orientation, we will flip the coordinates bool flpXY = m_printer_config.display_orientation.getInt() == @@ -939,12 +1300,16 @@ void SLAPrint::process() double lh = ocfg.layer_height.getFloat(); double exp_t = matcfg.exposure_time.getFloat(); double iexp_t = matcfg.initial_exposure_time.getFloat(); + + double gamma = m_printer_config.gamma_correction.getFloat(); if(flpXY) { std::swap(w, h); std::swap(pw, ph); } - m_printer.reset(new SLAPrinter(w, h, pw, ph, lh, exp_t, iexp_t, - flpXY? SLAPrinter::RO_PORTRAIT : - SLAPrinter::RO_LANDSCAPE)); + m_printer.reset( + new SLAPrinter(w, h, pw, ph, lh, exp_t, iexp_t, + flpXY? SLAPrinter::RO_PORTRAIT : + SLAPrinter::RO_LANDSCAPE, + gamma)); } // Allocate space for all the layers @@ -952,55 +1317,49 @@ void SLAPrint::process() auto lvlcnt = unsigned(m_printer_input.size()); printer.layers(lvlcnt); - // slot is the portion of 100% that is realted to rasterization - unsigned slot = PRINT_STEP_LEVELS[slapsRasterize]; - // ist: initial state; pst: previous state - unsigned ist = max_objstatus, pst = ist; // coefficient to map the rasterization state (0-99) to the allocated // portion (slot) of the process state - double sd = (100 - ist) / 100.0; + double sd = (100 - max_objstatus) / 100.0; + + // slot is the portion of 100% that is realted to rasterization + unsigned slot = PRINT_STEP_LEVELS[slapsRasterize]; + + // pst: previous state + double pst = m_report_status.status(); + + double increment = (slot * sd) / m_printer_input.size(); + double dstatus = m_report_status.status(); + SpinMutex slck; // procedure to process one height level. This will run in parallel auto lvlfn = - [this, &slck, &keys, &printer, slot, sd, ist, &pst, flpXY] + [this, &slck, &printer, increment, &dstatus, &pst] (unsigned level_id) { if(canceled()) return; - LayerRefs& lrange = m_printer_input[keys[level_id]]; + PrintLayer& printlayer = m_printer_input[level_id]; // Switch to the appropriate layer in the printer printer.begin_layer(level_id); - for(auto& lyrref : lrange) { // for all layers in the current level - if(canceled()) break; - const Layer& sl = lyrref.lref; // get the layer reference - const LayerCopies& copies = lyrref.copies; - - // Draw all the polygons in the slice to the actual layer. - for(auto& cp : copies) { - for(ExPolygon slice : sl) { - // The order is important here: - // apply rotation before translation... - slice.rotate(double(cp.rotation)); - slice.translate(cp.shift(X), cp.shift(Y)); - if(flpXY) swapXY(slice); - printer.draw_polygon(slice, level_id); - } - } - } + for(const ClipperLib::Polygon& poly : printlayer.transformed_slices()) + printer.draw_polygon(poly, level_id); // Finish the layer for later saving it. printer.finish_layer(level_id); // Status indication guarded with the spinlock - auto st = ist + unsigned(sd*level_id*slot/m_printer_input.size()); - { std::lock_guard lck(slck); - if( st > pst) { - report_status(*this, int(st), PRINT_STEP_LABELS[slapsRasterize]); - pst = st; - } + { + std::lock_guard lck(slck); + dstatus += increment; + double st = std::round(dstatus); + if(st > pst) { + m_report_status(*this, st, + PRINT_STEP_LABELS(slapsRasterize)); + pst = st; + } } }; @@ -1013,8 +1372,6 @@ void SLAPrint::process() // Print all the layers in parallel tbb::parallel_for(0, lvlcnt, lvlfn); - // Fill statistics - this->fill_statistics(); // Set statistics values to the printer m_printer->set_statistics({(m_print_statistics.objects_used_material + m_print_statistics.support_used_material)/1000, double(m_default_object_config.faded_layers.getInt()), @@ -1032,17 +1389,16 @@ void SLAPrint::process() support_points, support_tree, base_pool, - slice_supports, - index_slices + slice_supports }; std::array print_program = { - rasterize, - [](){} // validate + merge_slices_and_eval_stats, + rasterize }; - unsigned st = min_objstatus; + double st = min_objstatus; unsigned incr = 0; BOOST_LOG_TRIVIAL(info) << "Start slicing process."; @@ -1056,18 +1412,18 @@ void SLAPrint::process() BOOST_LOG_TRIVIAL(info) << "Slicing object " << po->model_object()->name; - for (int s = (int)step_ranges[idx_range]; s < (int)step_ranges[idx_range + 1]; ++s) { - auto currentstep = (SLAPrintObjectStep)s; + for (int s = int(step_ranges[idx_range]); s < int(step_ranges[idx_range + 1]); ++s) { + auto currentstep = static_cast(s); // Cancellation checking. Each step will check for cancellation // on its own and return earlier gracefully. Just after it returns // execution gets to this point and throws the canceled signal. throw_if_canceled(); - st += unsigned(incr * ostepd); + st += incr * ostepd; if(po->m_stepmask[currentstep] && po->set_started(currentstep)) { - report_status(*this, int(st), OBJ_STEP_LABELS[currentstep]); + m_report_status(*this, st, OBJ_STEP_LABELS(currentstep)); pobj_program[currentstep](*po); throw_if_canceled(); po->set_done(currentstep); @@ -1079,7 +1435,7 @@ void SLAPrint::process() } std::array printsteps = { - slapsRasterize, slapsValidate + slapsMergeSlicesAndEval, slapsRasterize }; // this would disable the rasterization step @@ -1094,37 +1450,42 @@ void SLAPrint::process() if(m_stepmask[currentstep] && set_started(currentstep)) { - report_status(*this, int(st), PRINT_STEP_LABELS[currentstep]); + m_report_status(*this, st, PRINT_STEP_LABELS(currentstep)); print_program[currentstep](); throw_if_canceled(); set_done(currentstep); } - st += unsigned(PRINT_STEP_LEVELS[currentstep] * pstd); + st += PRINT_STEP_LEVELS[currentstep] * pstd; } // If everything vent well - report_status(*this, 100, L("Slicing done")); + m_report_status(*this, 100, L("Slicing done")); } -bool SLAPrint::invalidate_state_by_config_options(const std::vector &opt_keys) +bool SLAPrint::invalidate_state_by_config_options(const std::vector &opt_keys, bool &invalidate_all_model_objects) { if (opt_keys.empty()) return false; + static std::unordered_set steps_full = { + "initial_layer_height", + "material_correction", + "relative_correction", + "absolute_correction", + "gamma_correction" + }; + // Cache the plenty of parameters, which influence the final rasterization only, // or they are only notes not influencing the rasterization step. static std::unordered_set steps_rasterize = { "exposure_time", "initial_exposure_time", - "material_correction_printing", - "material_correction_curing", "display_width", "display_height", "display_pixels_x", "display_pixels_y", - "display_orientation", - "printer_correction" + "display_orientation" }; static std::unordered_set steps_ignore = { @@ -1132,8 +1493,8 @@ bool SLAPrint::invalidate_state_by_config_options(const std::vector& instances) { - const size_t inst_cnt = instances.size(); - - size_t polygon_cnt = 0; - for (const ExPolygon& polygon : input_polygons) - polygon_cnt += polygon.holes.size() + 1; - - Polygons polygons; - polygons.reserve(polygon_cnt * inst_cnt); - for (const ExPolygon& polygon : input_polygons) { - for (size_t i = 0; i < inst_cnt; ++i) - { - ExPolygon tmp = polygon; - tmp.rotate(Geometry::rad2deg(instances[i].rotation)); - tmp.translate(instances[i].shift.x(), instances[i].shift.y()); - polygons_append(polygons, to_polygons(std::move(tmp))); - } - } - return polygons; - }; - - double supports_volume = 0.0; - double models_volume = 0.0; - - double estim_time = 0.0; - - size_t slow_layers = 0; - size_t fast_layers = 0; - - // find highest object - // Which is a better bet? To compare by max_z or by number of layers in the index? - float max_z = 0.; - size_t max_layers_cnt = 0; - size_t highest_obj_idx = 0; - for (SLAPrintObject *&po : m_objects) { - const SLAPrintObject::SliceIndex& slice_index = po->get_slice_index(); - if (! slice_index.empty()) { - float z = (-- slice_index.end())->slice_level(); - size_t cnt = slice_index.size(); - //if (z > max_z) { - if (cnt > max_layers_cnt) { - max_layers_cnt = cnt; - max_z = z; - highest_obj_idx = &po - &m_objects.front(); - } - } - } - - const SLAPrintObject * highest_obj = m_objects[highest_obj_idx]; - const SLAPrintObject::SliceIndex& highest_obj_slice_index = highest_obj->get_slice_index(); - - const double delta_fade_time = (init_exp_time - exp_time) / (fade_layers_cnt + 1); - double fade_layer_time = init_exp_time; - - int sliced_layer_cnt = 0; - for (const auto& layer : highest_obj_slice_index) - { - const double l_height = (layer.key() == highest_obj_slice_index.begin()->key()) ? init_layer_height : layer_height; - - // Calculation of the consumed material - - Polygons model_polygons; - Polygons supports_polygons; - - for (SLAPrintObject * po : m_objects) - { - const SLAPrintObject::_SliceRecord *record = nullptr; - { - const SLAPrintObject::SliceIndex& index = po->get_slice_index(); - auto it = po->search_slice_index(layer.slice_level() - float(EPSILON)); - if (it == index.end() || it->slice_level() > layer.slice_level() + float(EPSILON)) - continue; - record = &(*it); - } - - const ExPolygons &modelslices = po->get_slices_from_record(*record, soModel); - if (!modelslices.empty()) - append(model_polygons, get_all_polygons(modelslices, po->instances())); - - const ExPolygons &supportslices = po->get_slices_from_record(*record, soSupport); - if (!supportslices.empty()) - append(supports_polygons, get_all_polygons(supportslices, po->instances())); - } - - model_polygons = union_(model_polygons); - double layer_model_area = 0; - for (const Polygon& polygon : model_polygons) - layer_model_area += polygon.area(); - - if (layer_model_area != 0) - models_volume += layer_model_area * l_height; - - if (!supports_polygons.empty() && !model_polygons.empty()) - supports_polygons = diff(supports_polygons, model_polygons); - double layer_support_area = 0; - for (const Polygon& polygon : supports_polygons) - layer_support_area += polygon.area(); - - if (layer_support_area != 0) - supports_volume += layer_support_area * l_height; - - // Calculation of the slow and fast layers to the future controlling those values on FW - - const bool is_fast_layer = (layer_model_area + layer_support_area) <= display_area*area_fill; - const double tilt_time = is_fast_layer ? fast_tilt : slow_tilt; - if (is_fast_layer) - fast_layers++; - else - slow_layers++; - - - // Calculation of the printing time - - if (sliced_layer_cnt < 3) - estim_time += init_exp_time; - else if (fade_layer_time > exp_time) - { - fade_layer_time -= delta_fade_time; - estim_time += fade_layer_time; - } - else - estim_time += exp_time; - - estim_time += tilt_time; - - sliced_layer_cnt++; - } - - m_print_statistics.support_used_material = supports_volume * SCALING_FACTOR * SCALING_FACTOR; - m_print_statistics.objects_used_material = models_volume * SCALING_FACTOR * SCALING_FACTOR; - - // Estimated printing time - // A layers count o the highest object - if (max_layers_cnt == 0) - m_print_statistics.estimated_print_time = "N/A"; - else - m_print_statistics.estimated_print_time = get_time_dhms(float(estim_time)); - - m_print_statistics.fast_layers_count = fast_layers; - m_print_statistics.slow_layers_count = slow_layers; -} - // Returns true if an object step is done on all objects and there's at least one object. bool SLAPrint::is_step_done(SLAPrintObjectStep step) const { @@ -1344,7 +1545,7 @@ SLAPrintObject::SLAPrintObject(SLAPrint *print, ModelObject *model_object): Inherited(print, model_object), m_stepmask(slaposCount, true), m_transformed_rmesh( [this](TriangleMesh& obj){ - obj = m_model_object->raw_mesh(); obj.transform(m_trafo); + obj = m_model_object->raw_mesh(); obj.transform(m_trafo); obj.require_shared_vertices(); }) { } @@ -1361,20 +1562,20 @@ bool SLAPrintObject::invalidate_state_by_config_options(const std::vector steps; bool invalidated = false; for (const t_config_option_key &opt_key : opt_keys) { - if ( opt_key == "layer_height" + if ( opt_key == "layer_height" || opt_key == "faded_layers" || opt_key == "pad_enable" || opt_key == "pad_wall_thickness" || opt_key == "supports_enable" || opt_key == "support_object_elevation" || opt_key == "slice_closing_radius") { - steps.emplace_back(slaposObjectSlice); + steps.emplace_back(slaposObjectSlice); } else if ( opt_key == "support_points_density_relative" || opt_key == "support_points_minimal_distance") { steps.emplace_back(slaposSupportPoints); - } else if ( + } else if ( opt_key == "support_head_front_diameter" || opt_key == "support_head_penetration" || opt_key == "support_head_width" @@ -1413,19 +1614,16 @@ bool SLAPrintObject::invalidate_step(SLAPrintObjectStep step) if (step == slaposObjectSlice) { invalidated |= this->invalidate_all_steps(); } else if (step == slaposSupportPoints) { - invalidated |= this->invalidate_steps({ slaposSupportTree, slaposBasePool, slaposSliceSupports, slaposIndexSlices }); - invalidated |= m_print->invalidate_step(slapsRasterize); + invalidated |= this->invalidate_steps({ slaposSupportTree, slaposBasePool, slaposSliceSupports }); + invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); } else if (step == slaposSupportTree) { - invalidated |= this->invalidate_steps({ slaposBasePool, slaposSliceSupports, slaposIndexSlices }); - invalidated |= m_print->invalidate_step(slapsRasterize); + invalidated |= this->invalidate_steps({ slaposBasePool, slaposSliceSupports }); + invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); } else if (step == slaposBasePool) { - invalidated |= this->invalidate_steps({slaposSliceSupports, slaposIndexSlices}); - invalidated |= m_print->invalidate_step(slapsRasterize); + invalidated |= this->invalidate_steps({slaposSliceSupports}); + invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); } else if (step == slaposSliceSupports) { - invalidated |= this->invalidate_step(slaposIndexSlices); - invalidated |= m_print->invalidate_step(slapsRasterize); - } else if(step == slaposIndexSlices) { - invalidated |= m_print->invalidate_step(slapsRasterize); + invalidated |= m_print->invalidate_step(slapsMergeSlicesAndEval); } return invalidated; } @@ -1466,83 +1664,38 @@ double SLAPrintObject::get_current_elevation() const return get_elevation(); } +Vec3d SLAPrint::relative_correction() const +{ + Vec3d corr(1., 1., 1.); + + if(printer_config().relative_correction.values.size() >= 2) { + corr(X) = printer_config().relative_correction.values[0]; + corr(Y) = printer_config().relative_correction.values[0]; + corr(Z) = printer_config().relative_correction.values.back(); + } + + if(material_config().material_correction.values.size() >= 2) { + corr(X) *= material_config().material_correction.values[0]; + corr(Y) *= material_config().material_correction.values[0]; + corr(Z) *= material_config().material_correction.values.back(); + } + + return corr; +} + namespace { // dummy empty static containers for return values in some methods const std::vector EMPTY_SLICES; const TriangleMesh EMPTY_MESH; const ExPolygons EMPTY_SLICE; } +const SliceRecord SliceRecord::EMPTY(0, std::nanf(""), 0.f); + const std::vector& SLAPrintObject::get_support_points() const { return m_supportdata->support_points; } -SLAPrintObject::SliceIndex::iterator -SLAPrintObject::search_slice_index(float slice_level) -{ - _SliceRecord query(0, slice_level, 0); - auto it = std::lower_bound(m_slice_index.begin(), m_slice_index.end(), - query, - [](const _SliceRecord& r1, const _SliceRecord& r2) - { - return r1.slice_level() < r2.slice_level(); - }); - - return it; -} - -SLAPrintObject::SliceIndex::const_iterator -SLAPrintObject::search_slice_index(float slice_level) const -{ - _SliceRecord query(0, slice_level, 0); - auto it = std::lower_bound(m_slice_index.cbegin(), m_slice_index.cend(), - query, - [](const _SliceRecord& r1, const _SliceRecord& r2) - { - return r1.slice_level() < r2.slice_level(); - }); - - return it; -} - -SLAPrintObject::SliceIndex::iterator -SLAPrintObject::search_slice_index(SLAPrintObject::_SliceRecord::Key key, - bool exact) -{ - _SliceRecord query(key, 0.f, 0.f); - auto it = std::lower_bound(m_slice_index.begin(), m_slice_index.end(), - query, - [](const _SliceRecord& r1, const _SliceRecord& r2) - { - return r1.key() < r2.key(); - }); - - // Return valid iterator only if the keys really match - if(exact && it != m_slice_index.end() && it->key() != key) - it = m_slice_index.end(); - - return it; -} - -SLAPrintObject::SliceIndex::const_iterator -SLAPrintObject::search_slice_index(SLAPrintObject::_SliceRecord::Key key, - bool exact) const -{ - _SliceRecord query(key, 0.f, 0.f); - auto it = std::lower_bound(m_slice_index.cbegin(), m_slice_index.cend(), - query, - [](const _SliceRecord& r1, const _SliceRecord& r2) - { - return r1.key() < r2.key(); - }); - - // Return valid iterator only if the keys really match - if(exact && it != m_slice_index.end() && it->key() != key) - it = m_slice_index.end(); - - return it; -} - const std::vector &SLAPrintObject::get_support_slices() const { // assert(is_step_done(slaposSliceSupports)); @@ -1550,41 +1703,21 @@ const std::vector &SLAPrintObject::get_support_slices() const return m_supportdata->support_slices; } -const ExPolygons &SLAPrintObject::get_slices_from_record( - const _SliceRecord &rec, - SliceOrigin o) const +const ExPolygons &SliceRecord::get_slice(SliceOrigin o) const { - size_t idx = o == soModel ? rec.get_model_slice_idx() : - rec.get_support_slice_idx(); + size_t idx = o == soModel ? m_model_slices_idx : + m_support_slices_idx; - const std::vector& v = o == soModel? get_model_slices() : - get_support_slices(); + if(m_po == nullptr) return EMPTY_SLICE; + + const std::vector& v = o == soModel? m_po->get_model_slices() : + m_po->get_support_slices(); if(idx >= v.size()) return EMPTY_SLICE; return idx >= v.size() ? EMPTY_SLICE : v[idx]; } -const ExPolygons &SLAPrintObject::get_slices_from_record( - SLAPrintObject::SliceRecordConstIterator it, SliceOrigin o) const -{ - if(it.is_end()) return EMPTY_SLICE; - return get_slices_from_record(*it, o); -} - -const std::vector& -SLAPrintObject::get_slice_index() const -{ - // assert(is_step_done(slaposIndexSlices)); - return m_slice_index; -} - -const std::vector &SLAPrintObject::get_model_slices() const -{ - // assert(is_step_done(slaposObjectSlice)); - return m_model_slices; -} - bool SLAPrintObject::has_mesh(SLAPrintObjectStep step) const { switch (step) { @@ -1676,7 +1809,8 @@ DynamicConfig SLAPrintStatistics::placeholders() "print_time", "total_cost", "total_weight", "objects_used_material", "support_used_material" }) config.set_key_value(key, new ConfigOptionString(std::string("{") + key + "}")); - return config; + + return config; } std::string SLAPrintStatistics::finalize_output_path(const std::string &path_in) const @@ -1696,4 +1830,12 @@ std::string SLAPrintStatistics::finalize_output_path(const std::string &path_in) return final_path; } +void SLAPrint::StatusReporter::operator()( + SLAPrint &p, double st, const std::string &msg, unsigned flags) +{ + m_st = st; + BOOST_LOG_TRIVIAL(info) << st << "% " << msg << log_memory_info(); + p.set_status(int(std::round(st)), msg, flags); +} + } // namespace Slic3r diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index fbe2821b2..64b2160b0 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -6,13 +6,14 @@ #include "PrintExport.hpp" #include "Point.hpp" #include "MTUtils.hpp" -#include +#include +#include "Zipper.hpp" namespace Slic3r { enum SLAPrintStep : unsigned int { - slapsRasterize, - slapsValidate, + slapsMergeSlicesAndEval, + slapsRasterize, slapsCount }; @@ -21,8 +22,7 @@ enum SLAPrintObjectStep : unsigned int { slaposSupportPoints, slaposSupportTree, slaposBasePool, - slaposSliceSupports, - slaposIndexSlices, + slaposSliceSupports, slaposCount }; @@ -34,7 +34,7 @@ using _SLAPrintObjectBase = // Layers according to quantized height levels. This will be consumed by // the printer (rasterizer) in the SLAPrint class. -using LevelID = long long; +// using coord_t = long long; enum SliceOrigin { soSupport, soModel }; @@ -51,6 +51,7 @@ public: const SLAPrintObjectConfig& config() const { return m_config; } const Transform3d& trafo() const { return m_trafo; } + bool is_left_handed() const { return m_left_handed; } struct Instance { Instance(ModelID instance_id, const Point &shift, float rotation) : instance_id(instance_id), shift(shift), rotation(rotation) {} @@ -94,142 +95,144 @@ public: const std::vector& get_support_points() const; // The public Slice record structure. It corresponds to one printable layer. - // To get the sliced polygons, use SLAPrintObject::get_slices_from_record class SliceRecord { public: - using Key = LevelID; + // this will be the max limit of size_t + static const size_t NONE = size_t(-1); + + static const SliceRecord EMPTY; private: - Key m_print_z = 0; // Top of the layer - float m_slice_z = 0.f; // Exact level of the slice - float m_height = 0.f; // Height of the sliced layer + coord_t m_print_z = 0; // Top of the layer + float m_slice_z = 0.f; // Exact level of the slice + float m_height = 0.f; // Height of the sliced layer - protected: - SliceRecord(Key key, float slicez, float height): - m_print_z(key), m_slice_z(slicez), m_height(height) {} + size_t m_model_slices_idx = NONE; + size_t m_support_slices_idx = NONE; + const SLAPrintObject *m_po = nullptr; public: + SliceRecord(coord_t key, float slicez, float height): + m_print_z(key), m_slice_z(slicez), m_height(height) {} + // The key will be the integer height level of the top of the layer. - inline Key key() const { return m_print_z; } + coord_t print_level() const { return m_print_z; } // Returns the exact floating point Z coordinate of the slice - inline float slice_level() const { return m_slice_z; } + float slice_level() const { return m_slice_z; } // Returns the current layer height - inline float layer_height() const { return m_height; } + float layer_height() const { return m_height; } + + bool is_valid() const { return ! std::isnan(m_slice_z); } + + const SLAPrintObject* print_obj() const { assert(m_po); return m_po; } + + // Methods for setting the indices into the slice vectors. + void set_model_slice_idx(const SLAPrintObject &po, size_t id) { + m_po = &po; m_model_slices_idx = id; + } + + void set_support_slice_idx(const SLAPrintObject& po, size_t id) { + m_po = &po; m_support_slices_idx = id; + } + + const ExPolygons& get_slice(SliceOrigin o) const; }; private: - // An index record referencing the slices - // (get_model_slices(), get_support_slices()) where the keys are the height - // levels of the model in scaled-clipper coordinates. The levels correspond - // to the z coordinate of the object coordinate system. - class _SliceRecord: public SliceRecord { - public: - static const size_t NONE = size_t(-1); // this will be the max limit of size_t - private: - size_t m_model_slices_idx = NONE; - size_t m_support_slices_idx = NONE; + template inline static T level(const SliceRecord& sr) { + static_assert(std::is_arithmetic::value, "Arithmetic only!"); + return std::is_integral::value ? T(sr.print_level()) : T(sr.slice_level()); + } - public: - _SliceRecord(Key key, float slicez, float height): - SliceRecord(key, slicez, height) {} + template inline static SliceRecord create_slice_record(T val) { + static_assert(std::is_arithmetic::value, "Arithmetic only!"); + return std::is_integral::value ? SliceRecord{ coord_t(val), 0.f, 0.f } : SliceRecord{ 0, float(val), 0.f }; + } - // Methods for setting the indices into the slice vectors. - void set_model_slice_idx(size_t id) { m_model_slices_idx = id; } - void set_support_slice_idx(size_t id) { m_support_slices_idx = id; } + // This is a template method for searching the slice index either by + // an integer key: print_level or a floating point key: slice_level. + // The eps parameter gives the max deviation in + or - direction. + // + // This method can be used in const or non-const contexts as well. + template + static auto closest_slice_record( + Container& cont, + T lvl, + T eps = std::numeric_limits::max()) -> decltype (cont.begin()) + { + if(cont.empty()) return cont.end(); + if(cont.size() == 1 && std::abs(level(cont.front()) - lvl) > eps) + return cont.end(); - inline size_t get_model_slice_idx() const { return m_model_slices_idx; } - inline size_t get_support_slice_idx() const { return m_support_slices_idx; } - }; + SliceRecord query = create_slice_record(lvl); - // Slice index will be a plain vector sorted by the integer height levels - using SliceIndex = std::vector<_SliceRecord>; + auto it = std::lower_bound(cont.begin(), cont.end(), query, + [](const SliceRecord& r1, + const SliceRecord& r2) + { + return level(r1) < level(r2); + }); + + if(it == cont.end()) return it; - // Retrieve the slice index which is readable only after slaposIndexSlices - // is done. - const SliceIndex& get_slice_index() const; + T diff = std::abs(level(*it) - lvl); - // Search slice index for the closest slice to the given level - SliceIndex::iterator search_slice_index(float slice_level); - SliceIndex::const_iterator search_slice_index(float slice_level) const; + if(it != cont.begin()) { + auto it_prev = std::prev(it); + T diff_prev = std::abs(level(*it_prev) - lvl); + if(diff_prev < diff) { diff = diff_prev; it = it_prev; } + } - // Search the slice index for a particular level in integer coordinates. - // If no such layer is present, it will return m_slice_index.end() - // This behavior can be suppressed by the second parameter. If it is true - // the method will return the closest (non-equal) record - SliceIndex::iterator search_slice_index(_SliceRecord::Key key, bool exact = false); - SliceIndex::const_iterator search_slice_index(_SliceRecord::Key key, bool = false) const; + if(diff > eps) it = cont.end(); - const std::vector& get_model_slices() const; + return it; + } + + const std::vector& get_model_slices() const { return m_model_slices; } const std::vector& get_support_slices() const; public: - // Should work as a polymorphic bidirectional iterator to the slice records - using SliceRecordConstIterator = - IndexBasedIterator; - // ///////////////////////////////////////////////////////////////////////// // - // These two methods should be callable on the client side (e.g. UI thread) + // These methods should be callable on the client side (e.g. UI thread) // when the appropriate steps slaposObjectSlice and slaposSliceSupports // are ready. All the print objects are processed before slapsRasterize so // it is safe to call them during and/or after slapsRasterize. // // ///////////////////////////////////////////////////////////////////////// - // Get the slice records from a range of slice levels (inclusive). Floating - // point keys are the levels where the model was sliced with the mesh - // slicer. Integral keys are the keys of the slice records, which - // correspond to the top of each layer.. The end() method of the returned - // range points *after* the last valid element. This is for being - // consistent with std and makeing range based for loops work. use - // std::prev(range.end()) or --range.end() to get the last element. - template Range - get_slice_records(Key from, Key to = std::numeric_limits::max()) const + // Retrieve the slice index. + const std::vector& get_slice_index() const { + return m_slice_index; + } + + // Search slice index for the closest slice to given print_level. + // max_epsilon gives the allowable deviation of the returned slice record's + // level. + const SliceRecord& closest_slice_to_print_level( + coord_t print_level, + coord_t max_epsilon = std::numeric_limits::max()) const { - SliceIndex::const_iterator it_from, it_to; - if(std::is_integral::value) { - it_from = search_slice_index(SliceRecord::Key(from)); - it_to = search_slice_index(SliceRecord::Key(to)); - } else if(std::is_floating_point::value) { - it_from = search_slice_index(float(from)); - it_to = search_slice_index(float(to)); - } else return { - SliceRecordConstIterator(m_slice_index, _SliceRecord::NONE ), - SliceRecordConstIterator(m_slice_index, _SliceRecord::NONE ), - }; - - auto start = m_slice_index.begin(); - - size_t bidx = it_from == m_slice_index.end() ? _SliceRecord::NONE : - size_t(it_from - start); - - size_t eidx = it_to == m_slice_index.end() ? _SliceRecord::NONE : - size_t(it_to - start) + 1; - - return { - SliceRecordConstIterator(m_slice_index, bidx), - SliceRecordConstIterator(m_slice_index, eidx), - }; + auto it = closest_slice_record(m_slice_index, print_level, max_epsilon); + return it == m_slice_index.end() ? SliceRecord::EMPTY : *it; } - // Get all the slice records as a range. - inline Range get_slice_records() const { - return { - SliceRecordConstIterator(m_slice_index, 0), - SliceRecordConstIterator(m_slice_index, m_slice_index.size()) - }; + // Search slice index for the closest slice to given slice_level. + // max_epsilon gives the allowable deviation of the returned slice record's + // level. Use SliceRecord::is_valid() to check the result. + const SliceRecord& closest_slice_to_slice_level( + float slice_level, + float max_epsilon = std::numeric_limits::max()) const + { + auto it = closest_slice_record(m_slice_index, slice_level, max_epsilon); + return it == m_slice_index.end() ? SliceRecord::EMPTY : *it; } - const ExPolygons& get_slices_from_record(SliceRecordConstIterator it, - SliceOrigin o) const; - - const ExPolygons& get_slices_from_record(const _SliceRecord& rec, - SliceOrigin o) const; protected: // to be called from SLAPrint only. friend class SLAPrint; @@ -241,11 +244,12 @@ protected: void config_apply_only(const ConfigBase &other, const t_config_option_keys &keys, bool ignore_nonexistent = false) { this->m_config.apply_only(other, keys, ignore_nonexistent); } - void set_trafo(const Transform3d& trafo) { - m_transformed_rmesh.invalidate([this, &trafo](){ m_trafo = trafo; }); + void set_trafo(const Transform3d& trafo, bool left_handed) { + m_transformed_rmesh.invalidate([this, &trafo, left_handed](){ m_trafo = trafo; m_left_handed = left_handed; }); } - void set_instances(const std::vector &instances) { m_instances = instances; } + template inline void set_instances(InstVec&& instances) { m_instances = std::forward(instances); } + // Invalidates the step, and its depending steps in SLAPrintObject and SLAPrint. bool invalidate_step(SLAPrintObjectStep step); bool invalidate_all_steps(); @@ -262,6 +266,8 @@ private: // Translation in Z + Rotation by Y and Z + Scaling / Mirroring. Transform3d m_trafo = Transform3d::Identity(); + // m_trafo is left handed -> 3x3 affine transformation has negative determinant. + bool m_left_handed = false; std::vector m_instances; @@ -270,7 +276,7 @@ private: // Exact (float) height levels mapped to the slices. Each record contains // the index to the model and the support slice vectors. - std::vector<_SliceRecord> m_slice_index; + std::vector m_slice_index; std::vector m_model_height_levels; @@ -283,6 +289,8 @@ private: using PrintObjects = std::vector; +using SliceRecord = SLAPrintObject::SliceRecord; + class TriangleMesh; struct SLAPrintStatistics @@ -314,6 +322,37 @@ struct SLAPrintStatistics } }; +// The implementation of creating zipped archives with wxWidgets +template<> class LayerWriter { + Zipper m_zip; +public: + + LayerWriter(const std::string& zipfile_path): m_zip(zipfile_path) {} + + void next_entry(const std::string& fname) { m_zip.add_entry(fname); } + + void binary_entry(const std::string& fname, + const std::uint8_t* buf, + size_t l) + { + m_zip.add_entry(fname, buf, l); + } + + template inline LayerWriter& operator<<(T&& arg) { + m_zip << std::forward(arg); return *this; + } + + bool is_ok() const { + return true; // m_zip blows up if something goes wrong... + } + + // After finalize, no writing to the archive will have an effect. The only + // valid operation is to dispose the object calling the destructor which + // should close the file. This method can throw and signal potential errors + // when flushing the archive. This is why its present. + void finalize() { m_zip.finalize(); } +}; + /** * @brief This class is the high level FSM for the SLA printing process. * @@ -328,6 +367,7 @@ private: // Prevents erroneous use by other classes. typedef PrintBaseWithState Inherited; public: + SLAPrint(): m_stepmask(slapsCount, true) {} virtual ~SLAPrint() override { this->clear(); } @@ -343,32 +383,81 @@ public: // Returns true if an object step is done on all objects and there's at least one object. bool is_step_done(SLAPrintObjectStep step) const; // Returns true if the last step was finished with success. - bool finished() const override { return this->is_step_done(slaposIndexSlices) && this->Inherited::is_step_done(slapsRasterize); } + bool finished() const override { return this->is_step_done(slaposSliceSupports) && this->Inherited::is_step_done(slapsRasterize); } - template void export_raster(const std::string& fname) { - if(m_printer) m_printer->save(fname); + template + inline void export_raster(const std::string& fpath, + const std::string& projectname = "") + { + if(m_printer) m_printer->save(fpath, projectname); } + const PrintObjects& objects() const { return m_objects; } - const SLAPrintConfig& print_config() const { return m_print_config; } - const SLAPrinterConfig& printer_config() const { return m_printer_config; } - const SLAMaterialConfig& material_config() const { return m_material_config; } + const SLAPrintConfig& print_config() const { return m_print_config; } + const SLAPrinterConfig& printer_config() const { return m_printer_config; } + const SLAMaterialConfig& material_config() const { return m_material_config; } + const SLAPrintObjectConfig& default_object_config() const { return m_default_object_config; } + // Extracted value from the configuration objects + Vec3d relative_correction() const; - std::string output_filename() const override; + std::string output_filename() const override; const SLAPrintStatistics& print_statistics() const { return m_print_statistics; } std::string validate() const override; + // An aggregation of SliceRecord-s from all the print objects for each + // occupied layer. Slice record levels dont have to match exactly. + // They are unified if the level difference is within +/- SCALED_EPSILON + class PrintLayer { + coord_t m_level; + + // The collection of slice records for the current level. + std::vector> m_slices; + + std::vector m_transformed_slices; + + template void transformed_slices(Container&& c) { + m_transformed_slices = std::forward(c); + } + + friend void SLAPrint::process(); + + public: + + explicit PrintLayer(coord_t lvl) : m_level(lvl) {} + + // for being sorted in their container (see m_printer_input) + bool operator<(const PrintLayer& other) const { + return m_level < other.m_level; + } + + void add(const SliceRecord& sr) { m_slices.emplace_back(sr); } + + coord_t level() const { return m_level; } + + auto slices() const -> const decltype (m_slices)& { return m_slices; } + + const std::vector & transformed_slices() const { + return m_transformed_slices; + } + }; + + // The aggregated and leveled print records from various objects. + // TODO: use this structure for the preview in the future. + const std::vector& print_layers() const { return m_printer_input; } + private: using SLAPrinter = FilePrinter; using SLAPrinterPtr = std::unique_ptr; - // Invalidate steps based on a set of parameters changed. - bool invalidate_state_by_config_options(const std::vector &opt_keys); + // Implement same logic as in SLAPrintObject + bool invalidate_step(SLAPrintStep st); - void fill_statistics(); + // Invalidate steps based on a set of parameters changed. + bool invalidate_state_by_config_options(const std::vector &opt_keys, bool &invalidate_all_model_objects); SLAPrintConfig m_print_config; SLAPrinterConfig m_printer_config; @@ -378,23 +467,8 @@ private: PrintObjects m_objects; std::vector m_stepmask; - // Definition of the print input map. It consists of the slices indexed - // with scaled (clipper) Z coordinates. Also contains the instance - // transformations in scaled and filtered version. This is enough for the - // rasterizer to be able to draw every layer in the right position - using Layer = ExPolygons; - using LayerCopies = std::vector; - struct LayerRef { - std::reference_wrapper lref; - std::reference_wrapper copies; - LayerRef(const Layer& lyr, const LayerCopies& cp) : - lref(std::cref(lyr)), copies(std::cref(cp)) {} - }; - - // One level may contain multiple slices from multiple objects and their - // supports - using LayerRefs = std::vector; - std::map m_printer_input; + // Ready-made data for rasterization. + std::vector m_printer_input; // The printer itself SLAPrinterPtr m_printer; @@ -402,6 +476,15 @@ private: // Estimated print time, material consumed. SLAPrintStatistics m_print_statistics; + class StatusReporter { + double m_st = 0; + public: + void operator() (SLAPrint& p, double st, const std::string& msg, + unsigned flags = SlicingStatus::DEFAULT); + double status() const { return m_st; } + } m_report_status; + + friend SLAPrintObject; }; diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index 8dee9fd9e..fbbe2109d 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -161,15 +161,13 @@ PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object m_support_material_interface_flow = m_support_material_flow; } + // Evaluate the XY gap between the object outer perimeters and the support structures. // Evaluate the XY gap between the object outer perimeters and the support structures. coordf_t external_perimeter_width = 0.; - for (size_t region_id = 0; region_id < object->region_volumes.size(); ++ region_id) { - if (! object->region_volumes[region_id].empty()) { - const Flow ext_peri_flow = object->print()->get_region(region_id)->flow(frExternalPerimeter, - slicing_params.layer_height, false, false, -1, *object); - external_perimeter_width = std::max(external_perimeter_width, (coordf_t)ext_peri_flow.width); - } - } + for (size_t region_id = 0; region_id < object->region_volumes.size(); ++ region_id) + if (! object->region_volumes[region_id].empty()) + external_perimeter_width = std::max(external_perimeter_width, + (coordf_t)object->print()->get_region(region_id)->flow(frExternalPerimeter, slicing_params.layer_height, false, false, -1, *object).width); m_gap_xy = m_object_config->support_material_xy_spacing.get_abs_value(external_perimeter_width); m_can_merge_support_regions = m_object_config->support_material_extruder.value == m_object_config->support_material_interface_extruder.value; diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index bb6fd4d58..3d03d2031 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -11,6 +11,8 @@ #define ENABLE_SELECTION_DEBUG_OUTPUT 0 // Renders a small sphere in the center of the bounding box of the current selection when no gizmo is active #define ENABLE_RENDER_SELECTION_CENTER 0 +// Shows an imgui dialog with render related data +#define ENABLE_RENDER_STATISTICS 0 //==================== @@ -58,4 +60,12 @@ #define DEBUG_EXTRUSION_OUTPUT 0 +//==================== +// 1.42.0.rc techs +//==================== +#define ENABLE_1_42_0_RC 1 + +// Disables Edit->Deselect all item menu item +#define DISABLE_DESELECT_ALL_MENU_ITEM (1 && ENABLE_1_42_0_RC) + #endif // _technologies_h_ diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 48224ce80..fb22986a9 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -55,7 +55,7 @@ TriangleMesh::TriangleMesh(const Pointf3s &points, const std::vector& f stl.stats.original_num_facets = stl.stats.number_of_facets; stl_allocate(&stl); - for (int i = 0; i < stl.stats.number_of_facets; i++) { + for (uint32_t i = 0; i < stl.stats.number_of_facets; i++) { stl_facet facet; facet.vertex[0] = points[facets[i](0)].cast(); facet.vertex[1] = points[facets[i](1)].cast(); @@ -125,9 +125,9 @@ void TriangleMesh::repair() float tolerance = stl.stats.shortest_edge; float increment = stl.stats.bounding_diameter / 10000.0; int iterations = 2; - if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { + if (stl.stats.connected_facets_3_edge < (int)stl.stats.number_of_facets) { for (int i = 0; i < iterations; i++) { - if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { + if (stl.stats.connected_facets_3_edge < (int)stl.stats.number_of_facets) { //printf("Checking nearby. Tolerance= %f Iteration=%d of %d...", tolerance, i + 1, iterations); #ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_check_faces_nearby"; @@ -143,7 +143,7 @@ void TriangleMesh::repair() } // remove_unconnected - if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { + if (stl.stats.connected_facets_3_edge < (int)stl.stats.number_of_facets) { #ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_remove_unconnected_facets"; #endif /* SLIC3R_TRACE_REPAIR */ @@ -212,9 +212,9 @@ void TriangleMesh::check_topology() float tolerance = stl.stats.shortest_edge; float increment = stl.stats.bounding_diameter / 10000.0; int iterations = 2; - if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { + if (stl.stats.connected_facets_3_edge < (int)stl.stats.number_of_facets) { for (int i = 0; i < iterations; i++) { - if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { + if (stl.stats.connected_facets_3_edge < (int)stl.stats.number_of_facets) { //printf("Checking nearby. Tolerance= %f Iteration=%d of %d...", tolerance, i + 1, iterations); stl_check_facets_nearby(&stl, tolerance); //printf(" Fixed %d edges.\n", stl.stats.edges_fixed - last_edges_fixed); @@ -273,6 +273,11 @@ void TriangleMesh::translate(float x, float y, float z) stl_invalidate_shared_vertices(&this->stl); } +void TriangleMesh::translate(const Vec3f &displacement) +{ + translate(displacement(0), displacement(1), displacement(2)); +} + void TriangleMesh::rotate(float angle, const Axis &axis) { if (angle == 0.f) @@ -314,10 +319,26 @@ void TriangleMesh::mirror(const Axis &axis) stl_invalidate_shared_vertices(&this->stl); } -void TriangleMesh::transform(const Transform3d& t) +void TriangleMesh::transform(const Transform3d& t, bool fix_left_handed) { stl_transform(&stl, t); stl_invalidate_shared_vertices(&stl); + if (fix_left_handed && t.matrix().block(0, 0, 3, 3).determinant() < 0.) { + // Left handed transformation is being applied. It is a good idea to flip the faces and their normals. + this->repair(); + stl_reverse_all_facets(&stl); +} +} + +void TriangleMesh::transform(const Matrix3d& m, bool fix_left_handed) +{ + stl_transform(&stl, m); + stl_invalidate_shared_vertices(&stl); + if (fix_left_handed && m.determinant() < 0.) { + // Left handed transformation is being applied. It is a good idea to flip the faces and their normals. + this->repair(); + stl_reverse_all_facets(&stl); + } } void TriangleMesh::align_to_origin() @@ -338,113 +359,79 @@ void TriangleMesh::rotate(double angle, Point* center) this->translate(c(0), c(1), 0); } -bool TriangleMesh::has_multiple_patches() const +/** + * Calculates whether or not the mesh is splittable. + */ +bool TriangleMesh::is_splittable() const { - // we need neighbors - if (!this->repaired) - throw std::runtime_error("split() requires repair()"); + std::vector visited; + find_unvisited_neighbors(visited); - if (this->stl.stats.number_of_facets == 0) - return false; - - std::vector facet_queue(this->stl.stats.number_of_facets, 0); - std::vector facet_visited(this->stl.stats.number_of_facets, false); - int facet_queue_cnt = 1; - facet_queue[0] = 0; - facet_visited[0] = true; - while (facet_queue_cnt > 0) { - int facet_idx = facet_queue[-- facet_queue_cnt]; - facet_visited[facet_idx] = true; - for (int j = 0; j < 3; ++ j) { - int neighbor_idx = this->stl.neighbors_start[facet_idx].neighbor[j]; - if (neighbor_idx != -1 && ! facet_visited[neighbor_idx]) - facet_queue[facet_queue_cnt ++] = neighbor_idx; + // Try finding an unvisited facet. If there are none, the mesh is not splittable. + auto it = std::find(visited.begin(), visited.end(), false); + return it != visited.end(); } - } - // If any of the face was not visited at the first time, return "multiple bodies". - for (int facet_idx = 0; facet_idx < this->stl.stats.number_of_facets; ++ facet_idx) - if (! facet_visited[facet_idx]) - return true; - return false; -} - -size_t TriangleMesh::number_of_patches() const +/** + * Visit all unvisited neighboring facets that are reachable from the first unvisited facet, + * and return them. + * + * @param facet_visited A reference to a vector of booleans. Contains whether or not a + * facet with the same index has been visited. + * @return A deque with all newly visited facets. + */ +std::deque TriangleMesh::find_unvisited_neighbors(std::vector &facet_visited) const { - // we need neighbors + // Make sure we're not operating on a broken mesh. if (!this->repaired) - throw std::runtime_error("split() requires repair()"); + throw std::runtime_error("find_unvisited_neighbors() requires repair()"); - if (this->stl.stats.number_of_facets == 0) - return false; + // If the visited list is empty, populate it with false for every facet. + if (facet_visited.empty()) + facet_visited = std::vector(this->stl.stats.number_of_facets, false); - std::vector facet_queue(this->stl.stats.number_of_facets, 0); - std::vector facet_visited(this->stl.stats.number_of_facets, false); - int facet_queue_cnt = 0; - size_t num_bodies = 0; - for (;;) { - // Find a seeding triangle for a new body. - int facet_idx = 0; - for (; facet_idx < this->stl.stats.number_of_facets; ++ facet_idx) - if (! facet_visited[facet_idx]) { - // A seed triangle was found. - facet_queue[facet_queue_cnt ++] = facet_idx; - facet_visited[facet_idx] = true; - break; + // Find the first unvisited facet. + std::queue facet_queue; + std::deque facets; + auto facet = std::find(facet_visited.begin(), facet_visited.end(), false); + if (facet != facet_visited.end()) { + uint32_t idx = uint32_t(facet - facet_visited.begin()); + facet_queue.push(idx); + facet_visited[idx] = true; + facets.emplace_back(idx); } - if (facet_idx == this->stl.stats.number_of_facets) - // No seed found. - break; - ++ num_bodies; - while (facet_queue_cnt > 0) { - int facet_idx = facet_queue[-- facet_queue_cnt]; - facet_visited[facet_idx] = true; - for (int j = 0; j < 3; ++ j) { - int neighbor_idx = this->stl.neighbors_start[facet_idx].neighbor[j]; - if (neighbor_idx != -1 && ! facet_visited[neighbor_idx]) - facet_queue[facet_queue_cnt ++] = neighbor_idx; + + // Traverse all reachable neighbors and mark them as visited. + while (! facet_queue.empty()) { + uint32_t facet_idx = facet_queue.front(); + facet_queue.pop(); + for (int neighbor_idx : this->stl.neighbors_start[facet_idx].neighbor) + if (neighbor_idx != -1 && ! facet_visited[neighbor_idx]) { + facet_queue.push(uint32_t(neighbor_idx)); + facet_visited[neighbor_idx] = true; + facets.emplace_back(uint32_t(neighbor_idx)); } } - } - return num_bodies; + return facets; } +/** + * Splits a mesh into multiple meshes when possible. + * + * @return A TriangleMeshPtrs with the newly created meshes. + */ TriangleMeshPtrs TriangleMesh::split() const { + // Loop while we have remaining facets. + std::vector facet_visited; TriangleMeshPtrs meshes; - std::vector facet_visited(this->stl.stats.number_of_facets, false); - - // we need neighbors - if (!this->repaired) - throw std::runtime_error("split() requires repair()"); - - // loop while we have remaining facets for (;;) { - // get the first facet - std::queue facet_queue; - std::deque facets; - for (int facet_idx = 0; facet_idx < this->stl.stats.number_of_facets; ++ facet_idx) { - if (! facet_visited[facet_idx]) { - // if facet was not seen put it into queue and start searching - facet_queue.push(facet_idx); + std::deque facets = find_unvisited_neighbors(facet_visited); + if (facets.empty()) break; - } - } - if (facet_queue.empty()) - break; - - while (! facet_queue.empty()) { - int facet_idx = facet_queue.front(); - facet_queue.pop(); - if (! facet_visited[facet_idx]) { - facets.emplace_back(facet_idx); - for (int j = 0; j < 3; ++ j) - facet_queue.push(this->stl.neighbors_start[facet_idx].neighbor[j]); - facet_visited[facet_idx] = true; - } - } + // Create a new mesh for the part that was just split off. TriangleMesh* mesh = new TriangleMesh; meshes.emplace_back(mesh); mesh->stl.stats.type = inmemory; @@ -453,8 +440,9 @@ TriangleMeshPtrs TriangleMesh::split() const stl_clear_error(&mesh->stl); stl_allocate(&mesh->stl); + // Assign the facets to the new mesh. bool first = true; - for (std::deque::const_iterator facet = facets.begin(); facet != facets.end(); ++ facet) { + for (auto facet = facets.begin(); facet != facets.end(); ++ facet) { mesh->stl.facet_start[facet - facets.begin()] = this->stl.facet_start[*facet]; stl_facet_stats(&mesh->stl, this->stl.facet_start[*facet], first); } @@ -476,7 +464,7 @@ void TriangleMesh::merge(const TriangleMesh &mesh) stl_reallocate(&this->stl); // copy facets - for (int i = 0; i < mesh.stl.stats.number_of_facets; ++ i) + for (uint32_t i = 0; i < mesh.stl.stats.number_of_facets; ++ i) this->stl.facet_start[number_of_facets + i] = mesh.stl.facet_start[i]; // update size @@ -489,7 +477,7 @@ ExPolygons TriangleMesh::horizontal_projection() const { Polygons pp; pp.reserve(this->stl.stats.number_of_facets); - for (int i = 0; i < this->stl.stats.number_of_facets; ++ i) { + for (uint32_t i = 0; i < this->stl.stats.number_of_facets; ++ i) { stl_facet* facet = &this->stl.facet_start[i]; Polygon p; p.points.resize(3); @@ -531,7 +519,7 @@ BoundingBoxf3 TriangleMesh::transformed_bounding_box(const Transform3d &trafo) c BoundingBoxf3 bbox; if (stl.v_shared == nullptr) { // Using the STL faces. - for (int i = 0; i < this->facets_count(); ++ i) { + for (size_t i = 0; i < this->facets_count(); ++ i) { const stl_facet &facet = this->stl.facet_start[i]; for (size_t j = 0; j < 3; ++ j) bbox.merge(trafo * facet.vertex[j].cast()); @@ -630,10 +618,12 @@ void TriangleMesh::require_shared_vertices() BOOST_LOG_TRIVIAL(trace) << "TriangleMeshSlicer::require_shared_vertices - end"; } -void TriangleMeshSlicer::init(TriangleMesh *_mesh, throw_on_cancel_callback_type throw_on_cancel) +void TriangleMeshSlicer::init(const TriangleMesh *_mesh, throw_on_cancel_callback_type throw_on_cancel) { mesh = _mesh; - _mesh->require_shared_vertices(); + if (! mesh->has_shared_vertices()) + throw std::invalid_argument("TriangleMeshSlicer was passed a mesh without shared vertices."); + throw_on_cancel(); facets_edges.assign(_mesh->stl.stats.number_of_facets * 3, -1); v_scaled_shared.assign(_mesh->stl.v_shared, _mesh->stl.v_shared + _mesh->stl.stats.shared_vertices); @@ -656,7 +646,7 @@ void TriangleMeshSlicer::init(TriangleMesh *_mesh, throw_on_cancel_callback_type }; std::vector edges_map; edges_map.assign(this->mesh->stl.stats.number_of_facets * 3, EdgeToFace()); - for (int facet_idx = 0; facet_idx < this->mesh->stl.stats.number_of_facets; ++ facet_idx) + for (uint32_t facet_idx = 0; facet_idx < this->mesh->stl.stats.number_of_facets; ++ facet_idx) for (int i = 0; i < 3; ++ i) { EdgeToFace &e2f = edges_map[facet_idx*3+i]; e2f.vertex_low = this->mesh->stl.v_indices[facet_idx].vertex[i]; @@ -716,6 +706,16 @@ void TriangleMeshSlicer::init(TriangleMesh *_mesh, throw_on_cancel_callback_type } } + + +void TriangleMeshSlicer::set_up_direction(const Vec3f& up) +{ + m_quaternion.setFromTwoVectors(up, Vec3f::UnitZ()); + m_use_quaternion = true; +} + + + void TriangleMeshSlicer::slice(const std::vector &z, std::vector* layers, throw_on_cancel_callback_type throw_on_cancel) const { BOOST_LOG_TRIVIAL(debug) << "TriangleMeshSlicer::slice"; @@ -818,7 +818,7 @@ void TriangleMeshSlicer::slice(const std::vector &z, std::vector* lines, boost::mutex* lines_mutex, const std::vector &z) const { - const stl_facet &facet = this->mesh->stl.facet_start[facet_idx]; + const stl_facet &facet = m_use_quaternion ? this->mesh->stl.facet_start[facet_idx].rotated(m_quaternion) : this->mesh->stl.facet_start[facet_idx]; // find facet extents const float min_z = fminf(facet.vertex[0](2), fminf(facet.vertex[1](2), facet.vertex[2](2))); @@ -889,23 +889,39 @@ TriangleMeshSlicer::FacetSliceType TriangleMeshSlicer::slice_facet( // (external on the right of the line) const int *vertices = this->mesh->stl.v_indices[facet_idx].vertex; int i = (facet.vertex[1].z() == min_z) ? 1 : ((facet.vertex[2].z() == min_z) ? 2 : 0); + + // These are used only if the cut plane is tilted: + stl_vertex rotated_a; + stl_vertex rotated_b; + for (int j = i; j - i < 3; ++j) { // loop through facet edges int edge_id = this->facets_edges[facet_idx * 3 + (j % 3)]; int a_id = vertices[j % 3]; int b_id = vertices[(j+1) % 3]; - const stl_vertex *a = &this->v_scaled_shared[a_id]; - const stl_vertex *b = &this->v_scaled_shared[b_id]; + + const stl_vertex *a; + const stl_vertex *b; + if (m_use_quaternion) { + rotated_a = m_quaternion * this->v_scaled_shared[a_id]; + rotated_b = m_quaternion * this->v_scaled_shared[b_id]; + a = &rotated_a; + b = &rotated_b; + } + else { + a = &this->v_scaled_shared[a_id]; + b = &this->v_scaled_shared[b_id]; + } // Is edge or face aligned with the cutting plane? if (a->z() == slice_z && b->z() == slice_z) { // Edge is horizontal and belongs to the current layer. - const stl_vertex &v0 = this->v_scaled_shared[vertices[0]]; - const stl_vertex &v1 = this->v_scaled_shared[vertices[1]]; - const stl_vertex &v2 = this->v_scaled_shared[vertices[2]]; - const stl_normal &normal = this->mesh->stl.facet_start[facet_idx].normal; + // The following rotation of the three vertices may not be efficient, but this branch happens rarely. + const stl_vertex &v0 = m_use_quaternion ? stl_vertex(m_quaternion * this->v_scaled_shared[vertices[0]]) : this->v_scaled_shared[vertices[0]]; + const stl_vertex &v1 = m_use_quaternion ? stl_vertex(m_quaternion * this->v_scaled_shared[vertices[1]]) : this->v_scaled_shared[vertices[1]]; + const stl_vertex &v2 = m_use_quaternion ? stl_vertex(m_quaternion * this->v_scaled_shared[vertices[2]]) : this->v_scaled_shared[vertices[2]]; + const stl_normal &normal = facet.normal; // We may ignore this edge for slicing purposes, but we may still use it for object cutting. FacetSliceType result = Slicing; - const stl_neighbors &nbr = this->mesh->stl.neighbors_start[facet_idx]; if (min_z == max_z) { // All three vertices are aligned with slice_z. line_out->edge_type = feHorizontal; @@ -917,8 +933,6 @@ TriangleMeshSlicer::FacetSliceType TriangleMeshSlicer::slice_facet( } } else { // Two vertices are aligned with the cutting plane, the third vertex is below or above the cutting plane. - int nbr_idx = j % 3; - int nbr_face = nbr.neighbor[nbr_idx]; // Is the third vertex below the cutting plane? bool third_below = v0.z() < slice_z || v1.z() < slice_z || v2.z() < slice_z; // Two vertices on the cutting plane, the third vertex is below the plane. Consider the edge to be part of the slice @@ -1021,7 +1035,9 @@ TriangleMeshSlicer::FacetSliceType TriangleMeshSlicer::slice_facet( if (i == line_out->a_id || i == line_out->b_id) i = vertices[2]; assert(i != line_out->a_id && i != line_out->b_id); - line_out->edge_type = (this->v_scaled_shared[i].z() < slice_z) ? feTop : feBottom; + line_out->edge_type = ((m_use_quaternion ? + (m_quaternion * this->v_scaled_shared[i]).z() + : this->v_scaled_shared[i].z()) < slice_z) ? feTop : feBottom; } #endif return Slicing; @@ -1705,7 +1721,7 @@ void TriangleMeshSlicer::cut(float z, TriangleMesh* upper, TriangleMesh* lower) BOOST_LOG_TRIVIAL(trace) << "TriangleMeshSlicer::cut - slicing object"; float scaled_z = scale_(z); - for (int facet_idx = 0; facet_idx < this->mesh->stl.stats.number_of_facets; ++ facet_idx) { + for (uint32_t facet_idx = 0; facet_idx < this->mesh->stl.stats.number_of_facets; ++ facet_idx) { stl_facet* facet = &this->mesh->stl.facet_start[facet_idx]; // find facet extents @@ -1866,116 +1882,101 @@ TriangleMesh make_cube(double x, double y, double z) { // Generate the mesh for a cylinder and return it, using // the generated angle to calculate the top mesh triangles. // Default is 360 sides, angle fa is in radians. -TriangleMesh make_cylinder(double r, double h, double fa) { +TriangleMesh make_cylinder(double r, double h, double fa) +{ + size_t n_steps = (size_t)ceil(2. * PI / fa); + double angle_step = 2. * PI / n_steps; + Pointf3s vertices; std::vector facets; + vertices.reserve(2 * n_steps + 2); + facets.reserve(4 * n_steps); // 2 special vertices, top and bottom center, rest are relative to this vertices.emplace_back(Vec3d(0.0, 0.0, 0.0)); vertices.emplace_back(Vec3d(0.0, 0.0, h)); - // adjust via rounding to get an even multiple for any provided angle. - double angle = (2*PI / floor(2*PI / fa)); - // for each line along the polygon approximating the top/bottom of the // circle, generate four points and four facets (2 for the wall, 2 for the // top and bottom. // Special case: Last line shares 2 vertices with the first line. - unsigned id = vertices.size() - 1; - vertices.emplace_back(Vec3d(sin(0) * r , cos(0) * r, 0)); - vertices.emplace_back(Vec3d(sin(0) * r , cos(0) * r, h)); - for (double i = 0; i < 2*PI; i+=angle) { - Vec2d p = Eigen::Rotation2Dd(i) * Eigen::Vector2d(0, r); + Vec2d p = Eigen::Rotation2Dd(0.) * Eigen::Vector2d(0, r); vertices.emplace_back(Vec3d(p(0), p(1), 0.)); vertices.emplace_back(Vec3d(p(0), p(1), h)); - id = vertices.size() - 1; + for (size_t i = 1; i < n_steps; ++i) { + p = Eigen::Rotation2Dd(angle_step * i) * Eigen::Vector2d(0, r); + vertices.emplace_back(Vec3d(p(0), p(1), 0.)); + vertices.emplace_back(Vec3d(p(0), p(1), h)); + int id = (int)vertices.size() - 1; facets.emplace_back(Vec3i32( 0, id - 1, id - 3)); // top facets.emplace_back(Vec3i32(id, 1, id - 2)); // bottom facets.emplace_back(Vec3i32(id, id - 2, id - 3)); // upper-right of side facets.emplace_back(Vec3i32(id, id - 3, id - 1)); // bottom-left of side } // Connect the last set of vertices with the first. - facets.emplace_back(Vec3i32( 2, 0, id - 1)); - facets.emplace_back(Vec3i32( 1, 3, id)); - facets.emplace_back(Vec3i32(id, 3, 2)); - facets.emplace_back(Vec3i32(id, 2, id - 1)); + size_t id = vertices.size() - 1; + facets.emplace_back(Vec3i32( 0, 2, id - 1)); + facets.emplace_back(Vec3i32( 3, 1, id)); + facets.emplace_back(Vec3i32(id, 2, 3)); + facets.emplace_back(Vec3i32(id, id - 1, 2)); - TriangleMesh mesh(vertices, facets); - return mesh; + return TriangleMesh(std::move(vertices), std::move(facets)); } // Generates mesh for a sphere centered about the origin, using the generated angle // to determine the granularity. // Default angle is 1 degree. -TriangleMesh make_sphere(double rho, double fa) { +//FIXME better to discretize an Icosahedron recursively http://www.songho.ca/opengl/gl_sphere.html +TriangleMesh make_sphere(double radius, double fa) +{ + int sectorCount = ceil(2. * M_PI / fa); + int stackCount = ceil(M_PI / fa); + float sectorStep = 2. * M_PI / sectorCount; + float stackStep = M_PI / stackCount; + Pointf3s vertices; + vertices.reserve((stackCount - 1) * sectorCount + 2); + for (int i = 0; i <= stackCount; ++ i) { + // from pi/2 to -pi/2 + double stackAngle = 0.5 * M_PI - stackStep * i; + double xy = radius * cos(stackAngle); + double z = radius * sin(stackAngle); + if (i == 0 || i == stackCount) + vertices.emplace_back(Vec3d(xy, 0., z)); + else + for (int j = 0; j < sectorCount; ++ j) { + // from 0 to 2pi + double sectorAngle = sectorStep * j; + vertices.emplace_back(Vec3d(xy * cos(sectorAngle), xy * sin(sectorAngle), z)); + } + } + std::vector facets; - - // Algorithm: - // Add points one-by-one to the sphere grid and form facets using relative coordinates. - // Sphere is composed effectively of a mesh of stacked circles. - - // adjust via rounding to get an even multiple for any provided angle. - double angle = (2*PI / floor(2*PI / fa)); - - // Ring to be scaled to generate the steps of the sphere - std::vector ring; - for (double i = 0; i < 2*PI; i+=angle) { - ring.emplace_back(i); - } - const size_t steps = ring.size(); - const double increment = (double)(1.0 / (double)steps); - - // special case: first ring connects to 0,0,0 - // insert and form facets. - vertices.emplace_back(Vec3d(0.0, 0.0, -rho)); - size_t id = vertices.size(); - for (size_t i = 0; i < ring.size(); i++) { - // Fixed scaling - const double z = -rho + increment*rho*2.0; - // radius of the circle for this step. - const double r = sqrt(abs(rho*rho - z*z)); - Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); - vertices.emplace_back(Vec3d(b(0), b(1), z)); - facets.emplace_back((i == 0) ? Vec3i32(1, 0, ring.size()) : Vec3i32(id, 0, id - 1)); - ++ id; - } - - // General case: insert and form facets for each step, joining it to the ring below it. - for (size_t s = 2; s < steps - 1; s++) { - const double z = -rho + increment*(double)s*2.0*rho; - const double r = sqrt(abs(rho*rho - z*z)); - - for (size_t i = 0; i < ring.size(); i++) { - Vec2d b = Eigen::Rotation2Dd(ring[i]) * Eigen::Vector2d(0, r); - vertices.emplace_back(Vec3d(b(0), b(1), z)); - if (i == 0) { - // wrap around - facets.emplace_back(Vec3i32(id + ring.size() - 1 , id, id - 1)); - facets.emplace_back(Vec3i32(id, id - ring.size(), id - 1)); - } else { - facets.emplace_back(Vec3i32(id , id - ring.size(), (id - 1) - ring.size())); - facets.emplace_back(Vec3i32(id, id - 1 - ring.size() , id - 1)); + facets.reserve(2 * (stackCount - 1) * sectorCount); + for (int i = 0; i < stackCount; ++ i) { + // Beginning of current stack. + int k1 = (i == 0) ? 0 : (1 + (i - 1) * sectorCount); + int k1_first = k1; + // Beginning of next stack. + int k2 = (i == 0) ? 1 : (k1 + sectorCount); + int k2_first = k2; + for (int j = 0; j < sectorCount; ++ j) { + // 2 triangles per sector excluding first and last stacks + int k1_next = k1; + int k2_next = k2; + if (i != 0) { + k1_next = (j + 1 == sectorCount) ? k1_first : (k1 + 1); + facets.emplace_back(Vec3i32(k1, k2, k1_next)); } - id++; + if (i + 1 != stackCount) { + k2_next = (j + 1 == sectorCount) ? k2_first : (k2 + 1); + facets.emplace_back(Vec3i32(k1_next, k2, k2_next)); } + k1 = k1_next; + k2 = k2_next; } - - - // special case: last ring connects to 0,0,rho*2.0 - // only form facets. - vertices.emplace_back(Vec3d(0.0, 0.0, rho)); - for (size_t i = 0; i < ring.size(); i++) { - if (i == 0) { - // third vertex is on the other side of the ring. - facets.emplace_back(Vec3i32(id, id - ring.size(), id - 1)); - } else { - facets.emplace_back(Vec3i32(id, id - ring.size() + i, id - ring.size() + (i - 1))); } + return TriangleMesh(std::move(vertices), std::move(facets)); } - id++; - TriangleMesh mesh(vertices, facets); - return mesh; -} } diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 340513adb..625bbaf7d 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -25,9 +25,10 @@ public: TriangleMesh(const Pointf3s &points, const std::vector &facets); TriangleMesh(const TriangleMesh &other) : repaired(false) { stl_initialize(&this->stl); *this = other; } TriangleMesh(TriangleMesh &&other) : repaired(false) { stl_initialize(&this->stl); this->swap(other); } - ~TriangleMesh() { stl_close(&this->stl); } + ~TriangleMesh() { clear(); } TriangleMesh& operator=(const TriangleMesh &other); TriangleMesh& operator=(TriangleMesh &&other) { this->swap(other); return *this; } + void clear() { stl_close(&this->stl); this->repaired = false; } void swap(TriangleMesh &other) { std::swap(this->stl, other.stl); std::swap(this->repaired, other.repaired); } void ReadSTLFile(const char* input_file) { stl_open(&stl, input_file); } void write_ascii(const char* output_file) { stl_write_ascii(&this->stl, output_file, ""); } @@ -40,6 +41,7 @@ public: void scale(float factor); void scale(const Vec3d &versor); void translate(float x, float y, float z); + void translate(const Vec3f &displacement); void rotate(float angle, const Axis &axis); void rotate(float angle, const Vec3d& axis); void rotate_x(float angle) { this->rotate(angle, X); } @@ -49,7 +51,8 @@ public: void mirror_x() { this->mirror(X); } void mirror_y() { this->mirror(Y); } void mirror_z() { this->mirror(Z); } - void transform(const Transform3d& t); + void transform(const Transform3d& t, bool fix_left_handed = false); + void transform(const Matrix3d& t, bool fix_left_handed = false); void align_to_origin(); void rotate(double angle, Point* center); TriangleMeshPtrs split() const; @@ -65,15 +68,11 @@ public: TriangleMesh convex_hull_3d() const; void reset_repair_stats(); bool needed_repair() const; + void require_shared_vertices(); + bool has_shared_vertices() const { return stl.v_shared != NULL; } size_t facets_count() const { return this->stl.stats.number_of_facets; } bool empty() const { return this->facets_count() == 0; } - - // Returns true, if there are two and more connected patches in the mesh. - // Returns false, if one or zero connected patch is in the mesh. - bool has_multiple_patches() const; - - // Count disconnected triangle patches. - size_t number_of_patches() const; + bool is_splittable() const; stl_file stl; bool repaired; @@ -82,8 +81,7 @@ public: Pointf3s vertices(); private: - void require_shared_vertices(); - friend class TriangleMeshSlicer; + std::deque find_unvisited_neighbors(std::vector &facet_visited) const; }; enum FacetEdgeType { @@ -167,9 +165,8 @@ public: typedef std::function throw_on_cancel_callback_type; TriangleMeshSlicer(float closing_radius, float model_precision) : mesh(nullptr), closing_radius(closing_radius), model_precision(model_precision) {} - // Not quite nice, but the constructor and init() methods require non-const mesh pointer to be able to call mesh->require_shared_vertices() - TriangleMeshSlicer(TriangleMesh* mesh) { this->init(mesh, [](){}); } - void init(TriangleMesh *mesh, throw_on_cancel_callback_type throw_on_cancel); + TriangleMeshSlicer(const TriangleMesh* mesh) : mesh(mesh), closing_radius(0), model_precision(0) { this->init(mesh, []() {}); } + void init(const TriangleMesh *mesh, throw_on_cancel_callback_type throw_on_cancel); void slice(const std::vector &z, std::vector* layers, throw_on_cancel_callback_type throw_on_cancel) const; void slice(const std::vector &z, std::vector* layers, throw_on_cancel_callback_type throw_on_cancel) const; enum FacetSliceType { @@ -180,6 +177,7 @@ public: FacetSliceType slice_facet(float slice_z, const stl_facet &facet, const int facet_idx, const float min_z, const float max_z, IntersectionLine *line_out) const; void cut(float z, TriangleMesh* upper, TriangleMesh* lower) const; + void set_up_direction(const Vec3f& up); private: const TriangleMesh *mesh; @@ -187,6 +185,10 @@ private: std::vector facets_edges; // Scaled copy of this->mesh->stl.v_shared std::vector v_scaled_shared; + // Quaternion that will be used to rotate every facet before the slicing + Eigen::Quaternion m_quaternion; + // Whether or not the above quaterion should be used + bool m_use_quaternion = false; void _slice_do(size_t facet_idx, std::vector* lines, boost::mutex* lines_mutex, const std::vector &z) const; void make_loops(std::vector &lines, Polygons* loops) const; diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index c13df4546..e76fccdb8 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -64,7 +64,7 @@ extern int rename_file(const std::string &from, const std::string &to); extern int copy_file(const std::string &from, const std::string &to); // Ignore system and hidden files, which may be created by the DropBox synchronisation process. -// https://github.com/prusa3d/Slic3r/issues/1298 +// https://github.com/prusa3d/PrusaSlicer/issues/1298 extern bool is_plain_file(const boost::filesystem::directory_entry &path); extern bool is_ini_file(const boost::filesystem::directory_entry &path); extern bool is_idx_file(const boost::filesystem::directory_entry &path); @@ -88,7 +88,7 @@ std::string string_printf(const char *format, ...); extern std::string timestamp_str(); // Standard "generated by Slic3r version xxx timestamp xxx" header string, // to be placed at the top of Slic3r generated files. -inline std::string header_slic3r_generated() { return std::string("generated by " SLIC3R_FORK_NAME " " SLIC3R_VERSION " " ) + timestamp_str(); } +inline std::string header_slic3r_generated() { return std::string("generated by " SLIC3R_APP_NAME " " SLIC3R_VERSION " " ) + timestamp_str(); } // getpid platform wrapper extern unsigned get_current_pid(); @@ -208,7 +208,7 @@ public: // Shorten the dhms time by removing the seconds, rounding the dhm to full minutes // and removing spaces. -static std::string short_time(const std::string &time) +inline std::string short_time(const std::string &time) { // Parse the dhms time format. int days = 0; @@ -247,7 +247,7 @@ static std::string short_time(const std::string &time) } // Returns the given time is seconds in format DDd HHh MMm SSs -static std::string get_time_dhms(float time_in_secs) +inline std::string get_time_dhms(float time_in_secs) { int days = (int)(time_in_secs / 86400.0f); time_in_secs -= (float)days * 86400.0f; diff --git a/src/libslic3r/Zipper.cpp b/src/libslic3r/Zipper.cpp new file mode 100644 index 000000000..4466f1b04 --- /dev/null +++ b/src/libslic3r/Zipper.cpp @@ -0,0 +1,223 @@ +#include +#include +#include + +#include "Zipper.hpp" +#include "miniz/miniz_zip.h" +#include + +#include "I18N.hpp" + +//! macro used to mark string used at localization, +//! return same string +#define L(s) Slic3r::I18N::translate(s) + +#if defined(_MSC_VER) && _MSC_VER <= 1800 || __cplusplus < 201103L + #define SLIC3R_NORETURN +#elif __cplusplus >= 201103L + #define SLIC3R_NORETURN [[noreturn]] +#endif + +namespace Slic3r { + +class Zipper::Impl { +public: + mz_zip_archive arch; + std::string m_zipname; + + static std::string get_errorstr(mz_zip_error mz_err) + { + switch (mz_err) + { + case MZ_ZIP_NO_ERROR: + return "no error"; + case MZ_ZIP_UNDEFINED_ERROR: + return L("undefined error"); + case MZ_ZIP_TOO_MANY_FILES: + return L("too many files"); + case MZ_ZIP_FILE_TOO_LARGE: + return L("file too large"); + case MZ_ZIP_UNSUPPORTED_METHOD: + return L("unsupported method"); + case MZ_ZIP_UNSUPPORTED_ENCRYPTION: + return L("unsupported encryption"); + case MZ_ZIP_UNSUPPORTED_FEATURE: + return L("unsupported feature"); + case MZ_ZIP_FAILED_FINDING_CENTRAL_DIR: + return L("failed finding central directory"); + case MZ_ZIP_NOT_AN_ARCHIVE: + return L("not a ZIP archive"); + case MZ_ZIP_INVALID_HEADER_OR_CORRUPTED: + return L("invalid header or archive is corrupted"); + case MZ_ZIP_UNSUPPORTED_MULTIDISK: + return L("unsupported multidisk archive"); + case MZ_ZIP_DECOMPRESSION_FAILED: + return L("decompression failed or archive is corrupted"); + case MZ_ZIP_COMPRESSION_FAILED: + return L("compression failed"); + case MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE: + return L("unexpected decompressed size"); + case MZ_ZIP_CRC_CHECK_FAILED: + return L("CRC-32 check failed"); + case MZ_ZIP_UNSUPPORTED_CDIR_SIZE: + return L("unsupported central directory size"); + case MZ_ZIP_ALLOC_FAILED: + return L("allocation failed"); + case MZ_ZIP_FILE_OPEN_FAILED: + return L("file open failed"); + case MZ_ZIP_FILE_CREATE_FAILED: + return L("file create failed"); + case MZ_ZIP_FILE_WRITE_FAILED: + return L("file write failed"); + case MZ_ZIP_FILE_READ_FAILED: + return L("file read failed"); + case MZ_ZIP_FILE_CLOSE_FAILED: + return L("file close failed"); + case MZ_ZIP_FILE_SEEK_FAILED: + return L("file seek failed"); + case MZ_ZIP_FILE_STAT_FAILED: + return L("file stat failed"); + case MZ_ZIP_INVALID_PARAMETER: + return L("invalid parameter"); + case MZ_ZIP_INVALID_FILENAME: + return L("invalid filename"); + case MZ_ZIP_BUF_TOO_SMALL: + return L("buffer too small"); + case MZ_ZIP_INTERNAL_ERROR: + return L("internal error"); + case MZ_ZIP_FILE_NOT_FOUND: + return L("file not found"); + case MZ_ZIP_ARCHIVE_TOO_LARGE: + return L("archive is too large"); + case MZ_ZIP_VALIDATION_FAILED: + return L("validation failed"); + case MZ_ZIP_WRITE_CALLBACK_FAILED: + return L("write calledback failed"); + default: + break; + } + + return "unknown error"; + } + + std::string formatted_errorstr() const + { + return L("Error with zip archive") + " " + m_zipname + ": " + + get_errorstr(arch.m_last_error) + "!"; + } + + SLIC3R_NORETURN void blow_up() const + { + throw std::runtime_error(formatted_errorstr()); + } + + bool is_alive() + { + return arch.m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED; + } +}; + +Zipper::Zipper(const std::string &zipfname, e_compression compression) +{ + m_impl.reset(new Impl()); + + m_compression = compression; + m_impl->m_zipname = zipfname; + + memset(&m_impl->arch, 0, sizeof(m_impl->arch)); + + // Initialize the archive data + if(!mz_zip_writer_init_file(&m_impl->arch, zipfname.c_str(), 0)) + m_impl->blow_up(); +} + +Zipper::~Zipper() +{ + if(m_impl->is_alive()) { + // Flush the current entry if not finished yet. + try { finish_entry(); } catch(...) { + BOOST_LOG_TRIVIAL(error) << m_impl->formatted_errorstr(); + } + + if(!mz_zip_writer_finalize_archive(&m_impl->arch)) + BOOST_LOG_TRIVIAL(error) << m_impl->formatted_errorstr(); + } + + // The file should be closed no matter what... + if(!mz_zip_writer_end(&m_impl->arch)) + BOOST_LOG_TRIVIAL(error) << m_impl->formatted_errorstr(); +} + +Zipper::Zipper(Zipper &&m): + m_impl(std::move(m.m_impl)), + m_data(std::move(m.m_data)), + m_entry(std::move(m.m_entry)), + m_compression(m.m_compression) {} + +Zipper &Zipper::operator=(Zipper &&m) { + m_impl = std::move(m.m_impl); + m_data = std::move(m.m_data); + m_entry = std::move(m.m_entry); + m_compression = m.m_compression; + return *this; +} + +void Zipper::add_entry(const std::string &name) +{ + if(!m_impl->is_alive()) return; + + finish_entry(); // finish previous business + m_entry = name; +} + +void Zipper::add_entry(const std::string &name, const uint8_t *data, size_t l) +{ + if(!m_impl->is_alive()) return; + + finish_entry(); + mz_uint cmpr = MZ_NO_COMPRESSION; + switch (m_compression) { + case NO_COMPRESSION: cmpr = MZ_NO_COMPRESSION; break; + case FAST_COMPRESSION: cmpr = MZ_BEST_SPEED; break; + case TIGHT_COMPRESSION: cmpr = MZ_BEST_COMPRESSION; break; + } + + if(!mz_zip_writer_add_mem(&m_impl->arch, name.c_str(), data, l, cmpr)) + m_impl->blow_up(); + + m_entry.clear(); + m_data.clear(); +} + +void Zipper::finish_entry() +{ + if(!m_impl->is_alive()) return; + + if(!m_data.empty() && !m_entry.empty()) { + mz_uint compression = MZ_NO_COMPRESSION; + + switch (m_compression) { + case NO_COMPRESSION: compression = MZ_NO_COMPRESSION; break; + case FAST_COMPRESSION: compression = MZ_BEST_SPEED; break; + case TIGHT_COMPRESSION: compression = MZ_BEST_COMPRESSION; break; + } + + if(!mz_zip_writer_add_mem(&m_impl->arch, m_entry.c_str(), + m_data.c_str(), + m_data.size(), + compression)) m_impl->blow_up(); + } + + m_data.clear(); + m_entry.clear(); +} + +void Zipper::finalize() +{ + finish_entry(); + + if(m_impl->is_alive()) if(!mz_zip_writer_finalize_archive(&m_impl->arch)) + m_impl->blow_up(); +} + +} diff --git a/src/libslic3r/Zipper.hpp b/src/libslic3r/Zipper.hpp new file mode 100644 index 000000000..7d95ffdac --- /dev/null +++ b/src/libslic3r/Zipper.hpp @@ -0,0 +1,90 @@ +#ifndef ZIPPER_HPP +#define ZIPPER_HPP + +#include +#include + +namespace Slic3r { + +// Class for creating zip archives. +class Zipper { +public: + // Three compression levels supported + enum e_compression { + NO_COMPRESSION, + FAST_COMPRESSION, + TIGHT_COMPRESSION + }; + +private: + class Impl; + std::unique_ptr m_impl; + std::string m_data; + std::string m_entry; + e_compression m_compression; + +public: + + // Will blow up in a runtime exception if the file cannot be created. + explicit Zipper(const std::string& zipfname, + e_compression level = NO_COMPRESSION); + ~Zipper(); + + // No copies allwed, this is a file resource... + Zipper(const Zipper&) = delete; + Zipper& operator=(const Zipper&) = delete; + + // Moving is fine. + // Zipper(Zipper&&) = default; + // Zipper& operator=(Zipper&&) = default; + // All becouse of VS2013: + Zipper(Zipper &&m); + Zipper& operator=(Zipper &&m); + + /// Adding an entry means a file inside the new archive. Name param is the + /// name of the new file. To create directories, append a forward slash. + /// The previous entry is finished (see finish_entry) + void add_entry(const std::string& name); + + /// Add a new binary file entry with an instantly given byte buffer. + /// This method throws exactly like finish_entry() does. + void add_entry(const std::string& name, const std::uint8_t* data, size_t l); + + // Writing data to the archive works like with standard streams. The target + // within the zip file is the entry created with the add_entry method. + + // Template taking only arithmetic values, that std::to_string can handle. + template inline + typename std::enable_if::value, Zipper&>::type + operator<<(T &&val) { + return this->operator<<(std::to_string(std::forward(val))); + } + + // Template applied only for types that std::string can handle for append + // and copy. This includes c style strings... + template inline + typename std::enable_if::value, Zipper&>::type + operator<<(T &&val) { + if(m_data.empty()) m_data = std::forward(val); + else m_data.append(val); + return *this; + } + + /// Finishing an entry means that subsequent writes will no longer be + /// appended to the previous entry. They will be written into the internal + /// buffer and ones an entry is added, the buffer will bind to the new entry + /// If the buffer was written, but no entry was added, the buffer will be + /// cleared after this call. + /// + /// This method will throw a runtime exception if an error occures. The + /// entry will still be open (with the data intact) but the state of the + /// file is up to minz after the erroneous write. + void finish_entry(); + + void finalize(); +}; + + +} + +#endif // ZIPPER_HPP diff --git a/src/libslic3r/clonable_ptr.hpp b/src/libslic3r/clonable_ptr.hpp new file mode 100644 index 000000000..a3b7ee244 --- /dev/null +++ b/src/libslic3r/clonable_ptr.hpp @@ -0,0 +1,168 @@ +// clonable_ptr: a smart pointer with a usage similar to unique_ptr, with the exception, that +// the copy constructor / copy assignment operator work by calling the ->clone() method. + +// derived from https://github.com/SRombauts/shared_ptr/blob/master/include/unique_ptr.hpp +/** + * @file clonable_ptr.hpp + * @brief clonable_ptr is a fake implementation to use in place of a C++11 std::clonable_ptr when compiling on an older compiler. + * + * @see http://www.cplusplus.com/reference/memory/clonable_ptr/ + * + * Copyright (c) 2014-2019 Sebastien Rombauts (sebastien.rombauts@gmail.com) + * + * Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt + * or copy at http://opensource.org/licenses/MIT) + */ + +#include "assert.h" + +namespace Slic3r { + +// Detect whether the compiler supports C++11 noexcept exception specifications. +#if defined(_MSC_VER) && _MSC_VER < 1900 && ! defined(noexcept) + #define noexcept throw() +#endif + +template +class clonable_ptr +{ +public: + /// The type of the managed object, aliased as member type + typedef T element_type; + + /// @brief Default constructor + clonable_ptr() noexcept : + px(nullptr) + { + } + /// @brief Constructor with the provided pointer to manage + explicit clonable_ptr(T* p) noexcept : + px(p) + { + } + /// @brief Copy constructor, clones by calling the rhs.clone() method + clonable_ptr(const clonable_ptr& rhs) : + px(rhs ? rhs.px->clone() : nullptr) + { + } + /// @brief Move constructor, never throws + clonable_ptr(clonable_ptr&& rhs) noexcept : + px(rhs.px) + { + rhs.px = nullptr; + } + /// @brief Assignment operator + clonable_ptr& operator=(const clonable_ptr& rhs) + { + delete px; + px = rhs ? rhs.px->clone() : nullptr; + return *this; + } + /// @brief Move operator, never throws + clonable_ptr& operator=(clonable_ptr&& rhs) + { + delete px; + px = rhs.px; + rhs.px = nullptr; + return *this; + } + /// @brief the destructor releases its ownership and destroy the object + inline ~clonable_ptr() noexcept + { + destroy(); + } + /// @brief this reset releases its ownership and destroy the object + inline void reset() noexcept + { + destroy(); + } + /// @brief this reset release its ownership and re-acquire another one + void reset(T* p) noexcept + { + assert((nullptr == p) || (px != p)); // auto-reset not allowed + destroy(); + px = p; + } + + /// @brief Swap method for the copy-and-swap idiom (copy constructor and swap method) + void swap(clonable_ptr& rhs) noexcept + { + T *tmp = px; + px = rhs.px; + rhs.px = tmp; + } + + /// @brief release the ownership of the px pointer without destroying the object! + inline void release() noexcept + { + px = nullptr; + } + + // reference counter operations : + inline operator bool() const noexcept + { + return (nullptr != px); // TODO nullptrptr + } + + // underlying pointer operations : + inline T& operator*() const noexcept + { + assert(nullptr != px); + return *px; + } + inline T* operator->() const noexcept + { + assert(nullptr != px); + return px; + } + inline T* get() const noexcept + { + // no assert, can return nullptr + return px; + } + +private: + /// @brief release the ownership of the px pointer and destroy the object + inline void destroy() noexcept + { + delete px; + px = nullptr; + } + + /// @brief hack: const-cast release the ownership of the px pointer without destroying the object! + inline void release() const noexcept + { + px = nullptr; + } + +private: + T* px; //!< Native pointer +}; + +// comparison operators +template inline bool operator==(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() == r.get()); +} +template inline bool operator!=(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() != r.get()); +} +template inline bool operator<=(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() <= r.get()); +} +template inline bool operator<(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() < r.get()); +} +template inline bool operator>=(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() >= r.get()); +} +template inline bool operator>(const clonable_ptr& l, const clonable_ptr& r) noexcept +{ + return (l.get() > r.get()); +} + +} // namespace Slic3r diff --git a/src/libslic3r/libslic3r_version.h.in b/src/libslic3r/libslic3r_version.h.in index 2259b2302..26a67362b 100644 --- a/src/libslic3r/libslic3r_version.h.in +++ b/src/libslic3r/libslic3r_version.h.in @@ -1,8 +1,9 @@ #ifndef __SLIC3R_VERSION_H #define __SLIC3R_VERSION_H -#define SLIC3R_FORK_NAME "@SLIC3R_FORK_NAME@" +#define SLIC3R_APP_NAME "@SLIC3R_APP_NAME@" +#define SLIC3R_APP_KEY "@SLIC3R_APP_KEY@" #define SLIC3R_VERSION "@SLIC3R_VERSION@" -#define SLIC3R_BUILD "@SLIC3R_BUILD@" +#define SLIC3R_BUILD_ID "@SLIC3R_BUILD_ID@" #endif /* __SLIC3R_VERSION_H */ diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 4fc032471..3482f708a 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -247,7 +247,7 @@ int copy_file(const std::string &from, const std::string &to) } // Ignore system and hidden files, which may be created by the DropBox synchronisation process. -// https://github.com/prusa3d/Slic3r/issues/1298 +// https://github.com/prusa3d/PrusaSlicer/issues/1298 bool is_plain_file(const boost::filesystem::directory_entry &dir_entry) { if (! boost::filesystem::is_regular_file(dir_entry.status())) diff --git a/src/nanosvg/nanosvg.h b/src/nanosvg/nanosvg.h index 8c8b061cd..b9063213e 100644 --- a/src/nanosvg/nanosvg.h +++ b/src/nanosvg/nanosvg.h @@ -2897,6 +2897,8 @@ NSVGimage* nsvgParse(char* input, const char* units, float dpi) return ret; } +#include + NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) { FILE* fp = NULL; @@ -2904,8 +2906,8 @@ NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) char* data = NULL; NSVGimage* image = NULL; - fp = fopen(filename, "rb"); - if (!fp) goto error; + fp = boost::nowide::fopen(filename, "rb"); + if (!fp) goto error; fseek(fp, 0, SEEK_END); size = ftell(fp); fseek(fp, 0, SEEK_SET); diff --git a/src/platform/msw/slic3r.manifest.in b/src/platform/msw/PrusaSlicer.manifest.in similarity index 100% rename from src/platform/msw/slic3r.manifest.in rename to src/platform/msw/PrusaSlicer.manifest.in diff --git a/src/platform/msw/slic3r.rc.in b/src/platform/msw/PrusaSlicer.rc.in similarity index 55% rename from src/platform/msw/slic3r.rc.in rename to src/platform/msw/PrusaSlicer.rc.in index 159236878..731ceaa4e 100644 --- a/src/platform/msw/slic3r.rc.in +++ b/src/platform/msw/PrusaSlicer.rc.in @@ -7,12 +7,12 @@ PRODUCTVERSION @SLIC3R_RC_VERSION@ BLOCK "040904E4" { VALUE "CompanyName", "supermerill" - VALUE "FileDescription", "Slic3r++" + VALUE "FileDescription", "@SLIC3R_APP_NAME@" VALUE "FileVersion", "@SLIC3R_BUILD_ID@" - VALUE "ProductName", "Slic3r++" + VALUE "ProductName", "@SLIC3R_APP_NAME@" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" - VALUE "InternalName", "Slic3r++" - VALUE "LegalCopyright", "Copyright \251 2011-2017 Alessandro Ranelucci, \251 2016 Prusa Research, \251 2018 SuperMerill" + VALUE "InternalName", "@SLIC3R_APP_NAME@" + VALUE "LegalCopyright", "Copyright \251 2011-2019 Alessandro Ranelucci, \251 2016-2019 Prusa Research, \251 2018-2019 Supermerill" VALUE "OriginalFilename", "slic3r.exe" } } @@ -21,5 +21,5 @@ PRODUCTVERSION @SLIC3R_RC_VERSION@ VALUE "Translation", 0x409, 1252 } } -2 ICON "@SLIC3R_RESOURCES_DIR@/icons/Slic3r.ico" +2 ICON "@SLIC3R_RESOURCES_DIR@/icons/slic3r.ico" 1 24 "slic3r.manifest" diff --git a/src/platform/osx/Info.plist.in b/src/platform/osx/Info.plist.in index 35958acde..f4e298180 100644 --- a/src/platform/osx/Info.plist.in +++ b/src/platform/osx/Info.plist.in @@ -3,15 +3,15 @@ CFBundleExecutable - Slic3r + @SLIC3R_APP_KEY@ CFBundleGetInfoString - Slic3r Copyright (C) 2011-2017 Alessandro Ranellucci, (C) 2016-2018 Prusa Reseach + @SLIC3R_APP_NAME@ Copyright (C) 2011-2019 Alessandro Ranellucci, (C) 2016-2019 Prusa Reseach CFBundleIconFile - Slic3r.icns + PrusaSlicer.icns CFBundleName - Slic3r + @SLIC3R_APP_KEY@ CFBundleShortVersionString - Slic3r @SLIC3R_BUILD_ID@ + @SLIC3R_APP_NAME@ @SLIC3R_BUILD_ID@ CFBundleIdentifier com.prusa3d.slic3r/ CFBundleInfoDictionaryVersion @@ -48,7 +48,7 @@ OBJ CFBundleTypeIconFile - Slic3r.icns + PrusaSlicer.icns CFBundleTypeName STL CFBundleTypeRole @@ -65,7 +65,7 @@ AMF CFBundleTypeIconFile - Slic3r.icns + PrusaSlicer.icns CFBundleTypeName AMF CFBundleTypeRole @@ -82,7 +82,7 @@ 3MF CFBundleTypeIconFile - Slic3r.icns + PrusaSlicer.icns CFBundleTypeName 3MF CFBundleTypeRole diff --git a/src/png/AUTHORS b/src/png/AUTHORS deleted file mode 100644 index 25aad54dc..000000000 --- a/src/png/AUTHORS +++ /dev/null @@ -1,4 +0,0 @@ -png++ is written by Alexander Shulgin (alex dot shulgin at gmail dot com) -Copyright (C) 2007,2008 - -When writing to me be sure to put png++: in the subject :-) diff --git a/src/png/COPYING b/src/png/COPYING deleted file mode 100644 index 04889ba11..000000000 --- a/src/png/COPYING +++ /dev/null @@ -1,25 +0,0 @@ -Copying png++ is subject to the following license: - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/src/png/NEWS b/src/png/NEWS deleted file mode 100644 index cc006fbf5..000000000 --- a/src/png/NEWS +++ /dev/null @@ -1,60 +0,0 @@ -Version 0.2.7: - - - Added solid_pixel_buffer (patch by Andrey Potapov). - - - Fixed some compilation problems on Win32. - -Version 0.2.5: - - - Fixed compatibility with newer libpng versions (>= 1.4) - - - Fixed compilation on FreeBSD. - - - Fixed tRNS handling with transformations. - - - Added IO transformation debugging facility. - - - Better organized test suite. - -Version 0.2.3: - - - Fixed numerous `already defined' errors due to require_color_space - implementation. - - - Added `config.hpp'. - - - Fixed `strerror' usage. - - - Minor docs fixes. - - -Version 0.2.1: - - - Added support for tRNS chunk. - - - Added non-std IO streams support. - - - Fixed 16-bit endianness problems. - - - Improved test script. - - -Version 0.2.0: - - - Added support for 16-bit data (RGB, RGBA, Grayscale and Gray+Alpha - color types) - - - Added support for packed 1-, 2- or 4-bit pixels (Grayscale and - Indexed colors) - - - Fixed interlace handling code which was severely broken - - - Added possibility to process images without reading the entire - image into memory - - - Internals are refactored while the client interface is mostly - unchanged - - - Added intensive test suite - - - Added documentation diff --git a/src/png/color.hpp b/src/png/color.hpp deleted file mode 100644 index b5ffde2c4..000000000 --- a/src/png/color.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_COLOR_HPP_INCLUDED -#define PNGPP_COLOR_HPP_INCLUDED - -#include "types.hpp" - -namespace png -{ - - /** - * \brief PNG color struct extension. Adds constructors. - */ - struct color - : png_color - { - explicit color(byte r = 0, byte g = 0, byte b = 0) - { - this->red = r; - this->green = g; - this->blue = b; - } - - /** - * \brief Initializes color with a copy of png_color object. - */ - color(png_color const& other) - { - this->red = other.red; - this->green = other.green; - this->blue = other.blue; - } - }; - -} // namespace png - -#endif // PNGPP_COLOR_HPP_INCLUDED diff --git a/src/png/end_info.hpp b/src/png/end_info.hpp deleted file mode 100644 index 09590596d..000000000 --- a/src/png/end_info.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_END_INFO_HPP_INCLUDED -#define PNGPP_END_INFO_HPP_INCLUDED - -#include "info_base.hpp" - -namespace png -{ - - /** - * \brief Internal class to hold PNG ending %info. - * - * \see info, info_base - */ - class end_info - : public info_base - { - public: - end_info(io_base& io, png_struct* png) - : info_base(io, png) - { - } - - void destroy() - { - assert(m_info); - png_destroy_info_struct(m_png, & m_info); - } - - void read() - { - png_read_end(m_png, m_info); - } - - void write() const - { - png_write_end(m_png, m_info); - } - - // TODO: add methods to read/write text comments etc. - }; - -} // namespace png - -#endif // PNGPP_END_INFO_HPP_INCLUDED diff --git a/src/png/error.hpp b/src/png/error.hpp deleted file mode 100644 index c67f97630..000000000 --- a/src/png/error.hpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_ERROR_HPP_INCLUDED -#define PNGPP_ERROR_HPP_INCLUDED - -/* check if we have strerror_s or strerror_r, prefer the former which is C11 std */ -#ifdef __STDC_LIB_EXT1__ -#define __STDC_WANT_LIB_EXT1__ 1 -#include - -#define HAVE_STRERROR_S 1 -#else -#undef HAVE_STRERROR_S -#endif - -#include -#include -#include -#include -#include - -namespace png -{ - - /** - * \brief Exception class to represent runtime errors related to - * png++ operation. - */ - class error - : public std::runtime_error - { - public: - /** - * \param message error description - */ - explicit error(std::string const& message) - : std::runtime_error(message) - { - } - }; - - /** - * \brief Exception class to represent standard library errors - * (generally IO). - * - * \see reader, writer - */ - class std_error - : public std::runtime_error - { - public: - /** - * Constructs an std_error object. The \a message string is - * appended with ": " and the error description as - * returned by \c strerror(\a error). - * - * \param message error description - * \param error error number - */ - explicit std_error(std::string const& message, int errnum = errno) - : std::runtime_error((message + ": ") + thread_safe_strerror(errnum)) - { - } - - protected: - static std::string thread_safe_strerror(int errnum) - { -#define ERRBUF_SIZE 512 - -#ifdef HAVE_STRERROR_S - char buf[ERRBUF_SIZE] = { 0 }; - strerror_s(buf, ERRBUF_SIZE, errnum); - return std::string(buf); -#else -#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE - char buf[ERRBUF_SIZE] = { 0 }; - strerror_r(errnum, buf, ERRBUF_SIZE); - return std::string(buf); -#elif _GNU_SOURCE - /* GNU variant can return a pointer to static buffer instead of buf */ - char buf[ERRBUF_SIZE] = { 0 }; - return std::string(strerror_r(errnum, buf, ERRBUF_SIZE)); -#else - return std::string("An error occured with errnum ") + - std::to_string(errnum) + - ". Converting to the appropriate error message is disabled" - "in this instance of the png++ library."; -#endif -#endif - -#undef ERRBUF_SIZE - } - }; - -} // namespace png - -#endif // PNGPP_ERROR_HPP_INCLUDED diff --git a/src/png/image_info.hpp b/src/png/image_info.hpp deleted file mode 100644 index 8407bc18b..000000000 --- a/src/png/image_info.hpp +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_IMAGE_INFO_HPP_INCLUDED -#define PNGPP_IMAGE_INFO_HPP_INCLUDED - -#include "types.hpp" -#include "palette.hpp" -#include "tRNS.hpp" -#include "pixel_traits.hpp" - -namespace png -{ - - /** - * \brief Holds information about PNG image. - * - * \see image, generator, consumer - */ - class image_info - { - public: - /** - * \brief Constructs the image_info object with default values - * for color_type, interlace_type, compression_method and - * filter_type. - */ - image_info() - : m_width(0), - m_height(0), - m_bit_depth(0), - m_color_type(color_type_none), - m_interlace_type(interlace_none), - m_compression_type(compression_type_default), - m_filter_type(filter_type_default), - m_gamma(0.0) - { - } - - uint_32 get_width() const - { - return m_width; - } - - void set_width(uint_32 width) - { - m_width = width; - } - - uint_32 get_height() const - { - return m_height; - } - - void set_height(uint_32 height) - { - m_height = height; - } - - color_type get_color_type() const - { - return m_color_type; - } - - void set_color_type(color_type color_space) - { - m_color_type = color_space; - } - - int get_bit_depth() const - { - return m_bit_depth; - } - - void set_bit_depth(int bit_depth) - { - m_bit_depth = bit_depth; - } - - interlace_type get_interlace_type() const - { - return m_interlace_type; - } - - void set_interlace_type(interlace_type interlace) - { - m_interlace_type = interlace; - } - - compression_type get_compression_type() const - { - return m_compression_type; - } - - void set_compression_type(compression_type compression) - { - m_compression_type = compression; - } - - filter_type get_filter_type() const - { - return m_filter_type; - } - - void set_filter_type(filter_type filter) - { - m_filter_type = filter; - } - - palette const& get_palette() const - { - return m_palette; - } - - palette& get_palette() - { - return m_palette; - } - - void set_palette(palette const& plte) - { - m_palette = plte; - } - - /** - * \brief Removes all entries from the palette. - */ - void drop_palette() - { - m_palette.clear(); - } - - tRNS const& get_tRNS() const - { - return m_tRNS; - } - - tRNS& get_tRNS() - { - return m_tRNS; - } - - void set_tRNS(tRNS const& trns) - { - m_tRNS = trns; - } - - double get_gamma() const - { - return m_gamma; - } - - void set_gamma(double gamma) - { - m_gamma = gamma; - } - - protected: - uint_32 m_width; - uint_32 m_height; - int m_bit_depth; - color_type m_color_type; - interlace_type m_interlace_type; - compression_type m_compression_type; - filter_type m_filter_type; - palette m_palette; - tRNS m_tRNS; - double m_gamma; - }; - - /** - * \brief Returns an image_info object with color_type and - * bit_depth fields setup appropriate for the \c pixel type. - */ - template< typename pixel > - image_info - make_image_info() - { - typedef pixel_traits< pixel > traits; - image_info info; - info.set_color_type(traits::get_color_type()); - info.set_bit_depth(traits::get_bit_depth()); - return info; - } - -} // namespace png - -#endif // PNGPP_IMAGE_INFO_HPP_INCLUDED diff --git a/src/png/info.hpp b/src/png/info.hpp deleted file mode 100644 index 3f3cf09c3..000000000 --- a/src/png/info.hpp +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_INFO_HPP_INCLUDED -#define PNGPP_INFO_HPP_INCLUDED - -#include -#include "info_base.hpp" -#include "image_info.hpp" - -namespace png -{ - - /** - * \brief Holds information about PNG image. Adapter class for IO - * image operations. - */ - class info - : public info_base, - public image_info - { - public: - info(io_base& io, png_struct* png) - : info_base(io, png) - { - } - - void read() - { - assert(m_png); - assert(m_info); - - png_read_info(m_png, m_info); - png_get_IHDR(m_png, - m_info, - & m_width, - & m_height, - reinterpret_cast< int* >(& m_bit_depth), - reinterpret_cast< int* >(& m_color_type), - reinterpret_cast< int* >(& m_interlace_type), - reinterpret_cast< int* >(& m_compression_type), - reinterpret_cast< int* >(& m_filter_type)); - - if (png_get_valid(m_png, m_info, chunk_PLTE) == chunk_PLTE) - { - png_color* colors = 0; - int count = 0; - png_get_PLTE(m_png, m_info, & colors, & count); - m_palette.assign(colors, colors + count); - } - -#ifdef PNG_tRNS_SUPPORTED - if (png_get_valid(m_png, m_info, chunk_tRNS) == chunk_tRNS) - { - if (m_color_type == color_type_palette) - { - int count; - byte* values; - if (png_get_tRNS(m_png, m_info, & values, & count, NULL) - != PNG_INFO_tRNS) - { - throw error("png_get_tRNS() failed"); - } - m_tRNS.assign(values, values + count); - } - } -#endif - -#ifdef PNG_gAMA_SUPPORTED - if (png_get_valid(m_png, m_info, chunk_gAMA) == chunk_gAMA) - { -#ifdef PNG_FLOATING_POINT_SUPPORTED - if (png_get_gAMA(m_png, m_info, &m_gamma) != PNG_INFO_gAMA) - { - throw error("png_get_gAMA() failed"); - } -#else - png_fixed_point gamma = 0; - if (png_get_gAMA_fixed(m_png, m_info, &gamma) != PNG_INFO_gAMA) - { - throw error("png_get_gAMA_fixed() failed"); - } - m_gamma = gamma / 100000.0; -#endif - } -#endif - } - - void write() const - { - assert(m_png); - assert(m_info); - - sync_ihdr(); - if (m_color_type == color_type_palette) - { - if (! m_palette.empty()) - { - png_set_PLTE(m_png, m_info, - const_cast< color* >(& m_palette[0]), - (int) m_palette.size()); - } - if (! m_tRNS.empty()) - { -#ifdef PNG_tRNS_SUPPORTED - png_set_tRNS(m_png, m_info, - const_cast< byte* >(& m_tRNS[0]), - m_tRNS.size(), - NULL); -#else - throw error("attempted to write tRNS chunk; recompile with PNG_tRNS_SUPPORTED"); -#endif - } - } - - if (m_gamma > 0) - { -#ifdef PNG_gAMA_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_gAMA(m_png, m_info, m_gamma); -#else - png_set_gAMA_fixed(m_png, m_info, - (png_fixed_point)(m_gamma * 100000)); -#endif -#else - throw error("attempted to write gAMA chunk; recompile with PNG_gAMA_SUPPORTED"); -#endif - } - - png_write_info(m_png, m_info); - } - - void update() - { - assert(m_png); - assert(m_info); - - sync_ihdr(); - png_read_update_info(m_png, m_info); - } - - protected: - void sync_ihdr(void) const - { - png_set_IHDR(m_png, - m_info, - m_width, - m_height, - m_bit_depth, - m_color_type, - m_interlace_type, - m_compression_type, - m_filter_type); - } - }; - -} // namespace png - -#endif // PNGPP_INFO_HPP_INCLUDED diff --git a/src/png/info_base.hpp b/src/png/info_base.hpp deleted file mode 100644 index 45e154296..000000000 --- a/src/png/info_base.hpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_INFO_BASE_HPP_INCLUDED -#define PNGPP_INFO_BASE_HPP_INCLUDED - -#include -#include "error.hpp" -#include "types.hpp" - -namespace png -{ - - class io_base; - - /** - * \brief Internal class to hold PNG info or end_info. - */ - class info_base - { - info_base(info_base const&); - info_base& operator=(info_base const&); - - public: - info_base(io_base& io, png_struct* png) - : m_io(io), - m_png(png), - m_info(png_create_info_struct(m_png)) - { - } - - png_info* get_png_info() const - { - return m_info; - } - - png_info** get_png_info_ptr() - { - return & m_info; - } - - protected: - io_base& m_io; - png_struct* m_png; - png_info* m_info; - }; - -} // namespace png - -#endif // PNGPP_INFO_BASE_HPP_INCLUDED diff --git a/src/png/io_base.hpp b/src/png/io_base.hpp deleted file mode 100644 index 3c2d83043..000000000 --- a/src/png/io_base.hpp +++ /dev/null @@ -1,467 +0,0 @@ -/* - * Copyright (C) 2007,2008 Alex Shulgin - * - * This file is part of png++ the C++ wrapper for libpng. PNG++ is free - * software; the exact copying conditions are as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PNGPP_IO_BASE_HPP_INCLUDED -#define PNGPP_IO_BASE_HPP_INCLUDED - -#include -#include -#include -#include "error.hpp" -#include "info.hpp" -#include "end_info.hpp" - -static void -trace_io_transform(char const* fmt, ...) -{ -#ifdef DEBUG_IO_TRANSFORM - va_list va; - va_start(va, fmt); - fprintf(stderr, "TRANSFORM_IO: "); - vfprintf(stderr, fmt, va); - va_end(va); -#endif -} -#define TRACE_IO_TRANSFORM trace_io_transform - -namespace png -{ - - /** - * \brief Base class for PNG reader/writer classes. - * - * \see reader, writer - */ - class io_base - { - io_base(io_base const&); - io_base& operator=(io_base const&); - - public: - explicit io_base(png_struct* png) - : m_png(png), - m_info(*this, m_png), - m_end_info(*this, m_png) - { - } - - ~io_base() - { - assert(! m_png); - assert(! m_info.get_png_info()); - assert(! m_end_info.get_png_info()); - } - - png_struct* get_png_struct() const - { - return m_png; - } - - info& get_info() - { - return m_info; - } - - info const& get_info() const - { - return m_info; - } - - image_info const& get_image_info() const - { - return m_info; - } - - void set_image_info(image_info const& info) - { - static_cast< image_info& >(m_info) = info; // slice it - } - - end_info& get_end_info() - { - return m_end_info; - } - - end_info const& get_end_info() const - { - return m_end_info; - } - - ////////////////////////////////////////////////////////////////////// - // info accessors - // - uint_32 get_width() const - { - return m_info.get_width(); - } - - void set_width(uint_32 width) - { - m_info.set_width(width); - } - - uint_32 get_height() const - { - return m_info.get_height(); - } - - void set_height(uint_32 height) - { - m_info.set_height(height); - } - - color_type get_color_type() const - { - return m_info.get_color_type(); - } - - void set_color_type(color_type color_space) - { - m_info.set_color_type(color_space); - } - - int get_bit_depth() const - { - return m_info.get_bit_depth(); - } - - void set_bit_depth(int bit_depth) - { - m_info.set_bit_depth(bit_depth); - } - - interlace_type get_interlace_type() const - { - return m_info.get_interlace_type(); - } - - void set_interlace_type(interlace_type interlace) - { - m_info.set_interlace_type(interlace); - } - - compression_type get_compression_type() const - { - return m_info.get_compression_type(); - } - - void set_compression_type(compression_type compression) - { - m_info.set_compression_type(compression); - } - - filter_type get_filter_type() const - { - return m_info.get_filter_type(); - } - - void set_filter_type(filter_type filter) - { - m_info.set_filter_type(filter); - } - - ////////////////////////////////////////////////////////////////////// - - bool has_chunk(chunk id) - { - return png_get_valid(m_png, - m_info.get_png_info(), - uint_32(id)) == uint_32(id); - } - -#if defined(PNG_READ_EXPAND_SUPPORTED) - void set_gray_1_2_4_to_8() const - { - TRACE_IO_TRANSFORM("png_set_expand_gray_1_2_4_to_8\n"); - png_set_expand_gray_1_2_4_to_8(m_png); - } - - void set_palette_to_rgb() const - { - TRACE_IO_TRANSFORM("png_set_palette_to_rgb\n"); - png_set_palette_to_rgb(m_png); - } - - void set_tRNS_to_alpha() const - { - TRACE_IO_TRANSFORM("png_set_tRNS_to_alpha\n"); - png_set_tRNS_to_alpha(m_png); - } -#endif // defined(PNG_READ_EXPAND_SUPPORTED) - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) - void set_bgr() const - { - TRACE_IO_TRANSFORM("png_set_bgr\n"); - png_set_bgr(m_png); - } -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) - void set_gray_to_rgb() const - { - TRACE_IO_TRANSFORM("png_set_gray_to_rgb\n"); - png_set_gray_to_rgb(m_png); - } -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED - void set_rgb_to_gray(rgb_to_gray_error_action error_action - = rgb_to_gray_silent, - double red_weight = -1.0, - double green_weight = -1.0) const - { - TRACE_IO_TRANSFORM("png_set_rgb_to_gray: error_action=%d," - " red_weight=%lf, green_weight=%lf\n", - error_action, red_weight, green_weight); - - png_set_rgb_to_gray(m_png, error_action, red_weight, green_weight); - } -#else - void set_rgb_to_gray(rgb_to_gray_error_action error_action - = rgb_to_gray_silent, - fixed_point red_weight = -1, - fixed_point green_weight = -1) const - { - TRACE_IO_TRANSFORM("png_set_rgb_to_gray_fixed: error_action=%d," - " red_weight=%d, green_weight=%d\n", - error_action, red_weight, green_weight); - - png_set_rgb_to_gray_fixed(m_png, error_action, - red_weight, green_weight); - } -#endif // PNG_FLOATING_POINT_SUPPORTED - - ////////////////////////////////////////////////////////////////////// - // alpha channel transformations - // -#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) - void set_strip_alpha() const - { - TRACE_IO_TRANSFORM("png_set_strip_alpha\n"); - png_set_strip_alpha(m_png); - } -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) \ - || defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) - void set_swap_alpha() const - { - TRACE_IO_TRANSFORM("png_set_swap_alpha\n"); - png_set_swap_alpha(m_png); - } -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) \ - || defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) - void set_invert_alpha() const - { - TRACE_IO_TRANSFORM("png_set_invert_alpha\n"); - png_set_invert_alpha(m_png); - } -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) - void set_filler(uint_32 filler, filler_type type) const - { - TRACE_IO_TRANSFORM("png_set_filler: filler=%08x, type=%d\n", - filler, type); - - png_set_filler(m_png, filler, type); - } - -#if !defined(PNG_1_0_X) - void set_add_alpha(uint_32 filler, filler_type type) const - { - TRACE_IO_TRANSFORM("png_set_add_alpha: filler=%08x, type=%d\n", - filler, type); - - png_set_add_alpha(m_png, filler, type); - } -#endif -#endif // PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) - void set_swap() const - { - TRACE_IO_TRANSFORM("png_set_swap\n"); - png_set_swap(m_png); - } -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) - void set_packing() const - { - TRACE_IO_TRANSFORM("png_set_packing\n"); - png_set_packing(m_png); - } -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) \ - || defined(PNG_WRITE_PACKSWAP_SUPPORTED) - void set_packswap() const - { - TRACE_IO_TRANSFORM("png_set_packswap\n"); - png_set_packswap(m_png); - } -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) - void set_shift(byte red_bits, byte green_bits, byte blue_bits, - byte alpha_bits = 0) const - { - TRACE_IO_TRANSFORM("png_set_shift: red_bits=%d, green_bits=%d," - " blue_bits=%d, alpha_bits=%d\n", - red_bits, green_bits, blue_bits, alpha_bits); - - if (get_color_type() != color_type_rgb - || get_color_type() != color_type_rgb_alpha) - { - throw error("set_shift: expected RGB or RGBA color type"); - } - color_info bits; - bits.red = red_bits; - bits.green = green_bits; - bits.blue = blue_bits; - bits.alpha = alpha_bits; - png_set_shift(m_png, & bits); - } - - void set_shift(byte gray_bits, byte alpha_bits = 0) const - { - TRACE_IO_TRANSFORM("png_set_shift: gray_bits=%d, alpha_bits=%d\n", - gray_bits, alpha_bits); - - if (get_color_type() != color_type_gray - || get_color_type() != color_type_gray_alpha) - { - throw error("set_shift: expected Gray or Gray+Alpha color type"); - } - color_info bits; - bits.gray = gray_bits; - bits.alpha = alpha_bits; - png_set_shift(m_png, & bits); - } -#endif // PNG_READ_SHIFT_SUPPORTED || PNG_WRITE_SHIFT_SUPPORTED - -#if defined(PNG_READ_INTERLACING_SUPPORTED) \ - || defined(PNG_WRITE_INTERLACING_SUPPORTED) - int set_interlace_handling() const - { - TRACE_IO_TRANSFORM("png_set_interlace_handling\n"); - return png_set_interlace_handling(m_png); - } -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) - void set_invert_mono() const - { - TRACE_IO_TRANSFORM("png_set_invert_mono\n"); - png_set_invert_mono(m_png); - } -#endif - -#if defined(PNG_READ_16_TO_8_SUPPORTED) - void set_strip_16() const - { - TRACE_IO_TRANSFORM("png_set_strip_16\n"); - png_set_strip_16(m_png); - } -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) - void set_read_user_transform(png_user_transform_ptr transform_fn) - { - TRACE_IO_TRANSFORM("png_set_read_user_transform_fn\n"); - png_set_read_user_transform_fn(m_png, transform_fn); - } -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) \ - || defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - void set_user_transform_info(void* info, int bit_depth, int channels) - { - TRACE_IO_TRANSFORM("png_set_user_transform_info: bit_depth=%d," - " channels=%d\n", bit_depth, channels); - - png_set_user_transform_info(m_png, info, bit_depth, channels); - } -#endif - - protected: - void* get_io_ptr() const - { - return png_get_io_ptr(m_png); - } - - void set_error(char const* message) - { - assert(message); - m_error = message; - } - - void reset_error() - { - m_error.clear(); - } - -/* - std::string const& get_error() const - { - return m_error; - } -*/ - - bool is_error() const - { - return !m_error.empty(); - } - - void raise_error() - { - longjmp(png_jmpbuf(m_png), -1); - } - - static void raise_error(png_struct* png, char const* message) - { - io_base* io = static_cast< io_base* >(png_get_error_ptr(png)); - io->set_error(message); - io->raise_error(); - } - - png_struct* m_png; - info m_info; - end_info m_end_info; - std::string m_error; - }; - -} // namespace png - -#endif // PNGPP_IO_BASE_HPP_INCLUDED diff --git a/src/png/libpng/ANNOUNCE b/src/png/libpng/ANNOUNCE deleted file mode 100644 index 0f66c0d1d..000000000 --- a/src/png/libpng/ANNOUNCE +++ /dev/null @@ -1,35 +0,0 @@ -Libpng 1.6.34 - September 29, 2017 - -This is a public release of libpng, intended for use in production codes. - -Files available for download: - -Source files with LF line endings (for Unix/Linux) and with a -"configure" script - - libpng-1.6.34.tar.xz (LZMA-compressed, recommended) - libpng-1.6.34.tar.gz - -Source files with CRLF line endings (for Windows), without the -"configure" script - - lpng1634.7z (LZMA-compressed, recommended) - lpng1634.zip - -Other information: - - libpng-1.6.34-README.txt - libpng-1.6.34-LICENSE.txt - libpng-1.6.34-*.asc (armored detached GPG signatures) - -Changes since the last public release (1.6.33): - Removed contrib/pngsuite/i*.png; some of these were incorrect and caused - test failures. - -Send comments/corrections/commendations to png-mng-implement at lists.sf.net -(subscription required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-implement -to subscribe) -or to glennrp at users.sourceforge.net - -Glenn R-P diff --git a/src/png/libpng/CMakeLists.txt b/src/png/libpng/CMakeLists.txt deleted file mode 100644 index 7697110c7..000000000 --- a/src/png/libpng/CMakeLists.txt +++ /dev/null @@ -1,937 +0,0 @@ -# CMakeLists.txt - -# Copyright (C) 2007,2009-2017 Glenn Randers-Pehrson -# Written by Christian Ehrlicher, 2007 -# Revised by Roger Lowman, 2009-2010 -# Revised by Clifford Yapp, 2011-2012 -# Revised by Roger Leigh, 2016 -# Revised by Andreas Franek, 2016 - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -cmake_minimum_required(VERSION 3.0.2) -cmake_policy(VERSION 3.0.2) - -# Set MacOSX @rpath usage globally. -if (POLICY CMP0020) - cmake_policy(SET CMP0020 NEW) -endif(POLICY CMP0020) -if (POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) -endif(POLICY CMP0042) -# Use new variable expansion policy. -if (POLICY CMP0053) - cmake_policy(SET CMP0053 NEW) -endif(POLICY CMP0053) -if (POLICY CMP0054) - cmake_policy(SET CMP0054 NEW) -endif(POLICY CMP0054) - -set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") - -project(libpng ASM C) - -set(PNGLIB_MAJOR 1) -set(PNGLIB_MINOR 6) -set(PNGLIB_RELEASE 34) -set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) -set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) - -# needed packages - -#Allow users to specify location of Zlib, -# Useful if zlib is being built alongside this as a sub-project - -set(PNG_BUILD_ZLIB ${CMAKE_CURRENT_SOURCE_DIR}/zlib) - -if(NOT WIN32) - find_library(M_LIBRARY - NAMES m - PATHS /usr/lib /usr/local/lib - ) - if(NOT M_LIBRARY) - message(STATUS "math lib 'libm' not found; floating point support disabled") - endif() -else() - # not needed on windows - set(M_LIBRARY "") -endif() - -# COMMAND LINE OPTIONS -option(PNG_SHARED "Build shared lib" OFF) -option(PNG_STATIC "Build static lib" ON) -option(PNG_TESTS "Build libpng tests" OFF) - -# Many more configuration options could be added here -option(PNG_FRAMEWORK "Build OS X framework" OFF) -option(PNG_DEBUG "Build with debug output" OFF) -option(PNGARG "Disable ANSI-C prototypes" OFF) - -option(PNG_HARDWARE_OPTIMIZATIONS "Enable Hardware Optimizations" ON) - -set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names") -set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings") - -if(PNG_HARDWARE_OPTIMIZATIONS) -# set definitions and sources for arm -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") - set(PNG_ARM_NEON_POSSIBLE_VALUES check on off) - set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations: - check: (default) use internal checking code; - off: disable the optimizations; - on: turn on unconditionally.") - set_property(CACHE PNG_ARM_NEON PROPERTY STRINGS - ${PNG_ARM_NEON_POSSIBLE_VALUES}) - list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index) - if(index EQUAL -1) - message(FATAL_ERROR - " PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]") - elseif(NOT ${PNG_ARM_NEON} STREQUAL "no") - set(libpng_arm_sources - arm/arm_init.c - arm/filter_neon.S - arm/filter_neon_intrinsics.c) - - if(${PNG_ARM_NEON} STREQUAL "on") - add_definitions(-DPNG_ARM_NEON_OPT=2) - elseif(${PNG_ARM_NEON} STREQUAL "check") - add_definitions(-DPNG_ARM_NEON_CHECK_SUPPORTED) - endif() - else() - add_definitions(-DPNG_ARM_NEON_OPT=0) - endif() -endif() - -# set definitions and sources for powerpc -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*" ) - set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) - set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations: - off: disable the optimizations.") - set_property(CACHE PNG_POWERPC_VSX PROPERTY STRINGS - ${PNG_POWERPC_VSX_POSSIBLE_VALUES}) - list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index) - if(index EQUAL -1) - message(FATAL_ERROR - " PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]") - elseif(NOT ${PNG_POWERPC_VSX} STREQUAL "no") - set(libpng_powerpc_sources - powerpc/powerpc_init.c - powerpc/filter_vsx_intrinsics.c) - if(${PNG_POWERPC_VSX} STREQUAL "on") - add_definitions(-DPNG_POWERPC_VSX_OPT=2) - endif() - else() - add_definitions(-DPNG_POWERPC_VSX_OPT=0) - endif() -endif() - -# set definitions and sources for intel -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*" ) - set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) - set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations: - off: disable the optimizations") - set_property(CACHE PNG_INTEL_SSE PROPERTY STRINGS - ${PNG_INTEL_SSE_POSSIBLE_VALUES}) - list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index) - if(index EQUAL -1) - message(FATAL_ERROR - " PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]") - elseif(NOT ${PNG_INTEL_SSE} STREQUAL "no") - set(libpng_intel_sources - intel/intel_init.c - intel/filter_sse2_intrinsics.c) - if(${PNG_INTEL_SSE} STREQUAL "on") - add_definitions(-DPNG_INTEL_SSE_OPT=1) - endif() - else() - add_definitions(-DPNG_INTEL_SSE_OPT=0) - endif() -endif() - -# set definitions and sources for MIPS -if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR - CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*" ) - set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) - set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations: - off: disable the optimizations") - set_property(CACHE PNG_MIPS_MSA PROPERTY STRINGS - ${PNG_MIPS_MSA_POSSIBLE_VALUES}) - list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index) - if(index EQUAL -1) - message(FATAL_ERROR - " PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]") - elseif(NOT ${PNG_MIPS_MSA} STREQUAL "no") - set(libpng_mips_sources - mips/mips_init.c - mips/filter_msa_intrinsics.c) - if(${PNG_MIPS_MSA} STREQUAL "on") - add_definitions(-DPNG_MIPS_MSA_OPT=2) - endif() - else() - add_definitions(-DPNG_MIPS_MSA_OPT=0) - endif() -endif() -endif(PNG_HARDWARE_OPTIMIZATIONS) - -# SET LIBNAME -set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR}) - -# to distinguish between debug and release lib -set(CMAKE_DEBUG_POSTFIX "d") - -include(CheckCSourceCompiles) -option(ld-version-script "Enable linker version script" ON) -if(ld-version-script AND NOT APPLE) - # Check if LD supports linker scripts. - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 { - global: sym; - local: *; -}; - -VERS_2 { - global: sym2; - main; -} VERS_1; -") - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'") - check_c_source_compiles("void sym(void) {} -void sym2(void) {} -int main(void) {return 0;} -" HAVE_LD_VERSION_SCRIPT) - if(NOT HAVE_LD_VERSION_SCRIPT) - set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} "-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map") - check_c_source_compiles("void sym(void) {} -void sym2(void) {} -int main(void) {return 0;} -" HAVE_SOLARIS_LD_VERSION_SCRIPT) - endif() - set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) - file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map") -endif() - -# Find symbol prefix. Likely obsolete and unnecessary with recent -# toolchains (it's not done in many other projects). -function(symbol_prefix) - set(SYMBOL_PREFIX) - - execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" "-" - INPUT_FILE /dev/null - OUTPUT_VARIABLE OUT - RESULT_VARIABLE STATUS) - - if(CPP_FAIL) - message(WARNING "Failed to run the C preprocessor") - endif() - - string(REPLACE "\n" ";" OUT "${OUT}") - foreach(line ${OUT}) - string(REGEX MATCH "^PREFIX=" found_match "${line}") - if(found_match) - STRING(REGEX REPLACE "^PREFIX=(.*\)" "\\1" prefix "${line}") - string(REGEX MATCH "__USER_LABEL_PREFIX__" found_match "${prefix}") - if(found_match) - STRING(REGEX REPLACE "(.*)__USER_LABEL_PREFIX__(.*)" "\\1\\2" prefix "${prefix}") - endif() - set(SYMBOL_PREFIX "${prefix}") - endif() - endforeach() - - message(STATUS "Symbol prefix: ${SYMBOL_PREFIX}") - set(SYMBOL_PREFIX "${SYMBOL_PREFIX}" PARENT_SCOPE) -endfunction() - -if(UNIX) - symbol_prefix() -endif() - -find_program(AWK NAMES gawk awk) - -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - -if(NOT AWK OR ANDROID) - # No awk available to generate sources; use pre-built pnglibconf.h - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt - ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h) - add_custom_target(genfiles) # Dummy -else() - include(CMakeParseArguments) - # Generate .chk from .out with awk - # generate_chk(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_chk) - set(options) - set(oneValueArgs INPUT OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if (NOT _GC_INPUT) - message(FATAL_ERROR "Invalid arguments. generate_out requires input.") - endif() - if (NOT _GC_OUTPUT) - message(FATAL_ERROR "Invalid arguments. generate_out requires output.") - endif() - - add_custom_command(OUTPUT "${_GC_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - "-DINPUT=${_GC_INPUT}" - "-DOUTPUT=${_GC_OUTPUT}" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake" - DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endfunction() - - # Generate .out from .c with awk - # generate_out(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_out) - set(options) - set(oneValueArgs INPUT OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if (NOT _GO_INPUT) - message(FATAL_ERROR "Invalid arguments. generate_out requires input.") - endif() - if (NOT _GO_OUTPUT) - message(FATAL_ERROR "Invalid arguments. generate_out requires output.") - endif() - - add_custom_command(OUTPUT "${_GO_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - "-DINPUT=${_GO_INPUT}" - "-DOUTPUT=${_GO_OUTPUT}" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake" - DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endfunction() - - # Generate specific source file with awk - # generate_source(OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_source) - set(options) - set(oneValueArgs OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if (NOT _GSO_OUTPUT) - message(FATAL_ERROR "Invalid arguments. generate_source requires output.") - endif() - - add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - "-DOUTPUT=${_GSO_OUTPUT}" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake" - DEPENDS ${_GSO_DEPENDS} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endfunction() - - # Copy file - function(generate_copy source destination) - add_custom_command(OUTPUT "${destination}" - COMMAND "${CMAKE_COMMAND}" -E remove "${destination}" - COMMAND "${CMAKE_COMMAND}" -E copy "${source}" - "${destination}" - DEPENDS "${source}") - endfunction() - - # Generate scripts/pnglibconf.h - generate_source(OUTPUT "scripts/pnglibconf.c" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" - "${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" - "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") - - # Generate pnglibconf.c - generate_source(OUTPUT "pnglibconf.c" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" - "${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" - "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") - - if(PNG_PREFIX) - set(PNGLIBCONF_H_EXTRA_DEPENDS - "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" - "${CMAKE_CURRENT_SOURCE_DIR}/scripts/macro.lst") - set(PNGPREFIX_H_EXTRA_DEPENDS - "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out") - endif() - - generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") - - # Generate pnglibconf.h - generate_source(OUTPUT "pnglibconf.h" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" - ${PNGLIBCONF_H_EXTRA_DEPENDS}) - - generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") - - generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" - "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") - - # Generate pngprefix.h - generate_source(OUTPUT "pngprefix.h" - DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS}) - - generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") - - generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" - "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" - "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt") - - generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" - "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") - - generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk" - "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def") - - add_custom_target(symbol-check DEPENDS - "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk") - - generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" - "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") - generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" - "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") - - add_custom_target(genvers DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") - add_custom_target(gensym DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") - - add_custom_target("genprebuilt" - COMMAND "${CMAKE_COMMAND}" - "-DOUTPUT=scripts/pnglibconf.h.prebuilt" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake" - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - - # A single target handles generation of all generated files. If - # they are dependend upon separately by multiple targets, this - # confuses parallel make (it would require a separate top-level - # target for each file to track the dependencies properly). - add_custom_target(genfiles DEPENDS - "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" - "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" - "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" - "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out") -endif(NOT AWK OR ANDROID) - -# OUR SOURCES -set(libpng_public_hdrs - png.h - pngconf.h - "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" -) -set(libpng_private_hdrs - pngpriv.h - pngdebug.h - pnginfo.h - pngstruct.h -) -if(AWK AND NOT ANDROID) - list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") -endif() -set(libpng_sources - ${libpng_public_hdrs} - ${libpng_private_hdrs} - png.c - pngerror.c - pngget.c - pngmem.c - pngpread.c - pngread.c - pngrio.c - pngrtran.c - pngrutil.c - pngset.c - pngtrans.c - pngwio.c - pngwrite.c - pngwtran.c - pngwutil.c - ${libpng_arm_sources} - ${libpng_intel_sources} - ${libpng_mips_sources} - ${libpng_powerpc_sources} -) -set(pngtest_sources - pngtest.c -) -set(pngvalid_sources - contrib/libtests/pngvalid.c -) -set(pngstest_sources - contrib/libtests/pngstest.c -) -set(pngunknown_sources - contrib/libtests/pngunknown.c -) -set(pngimage_sources - contrib/libtests/pngimage.c -) -set(pngfix_sources - contrib/tools/pngfix.c -) -set(png_fix_itxt_sources - contrib/tools/png-fix-itxt.c -) - -if(MSVC) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) -endif(MSVC) - -if(PNG_DEBUG) - add_definitions(-DPNG_DEBUG) -endif() - -# NOW BUILD OUR TARGET -include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR}) - -unset(PNG_LIB_TARGETS) - -if(PNG_SHARED) - add_library(png SHARED ${libpng_sources}) - set(PNG_LIB_TARGETS png) - set_target_properties(png PROPERTIES OUTPUT_NAME ${PNG_LIB_NAME}) - add_dependencies(png genfiles) - if(MSVC) - # msvc does not append 'lib' - do it here to have consistent name - set_target_properties(png PROPERTIES PREFIX "lib") - set_target_properties(png PROPERTIES IMPORT_PREFIX "lib") - endif() - target_link_libraries(png ${ZLIB_LIBRARY} ${M_LIBRARY}) - - if(UNIX AND AWK) - if(HAVE_LD_VERSION_SCRIPT) - set_target_properties(png PROPERTIES LINK_FLAGS - "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") - elseif(HAVE_SOLARIS_LD_VERSION_SCRIPT) - set_target_properties(png PROPERTIES LINK_FLAGS - "-Wl,-M -Wl,'${CMAKE_CURRENT_BINARY_DIR}/libpng.vers'") - endif() - endif() -endif() - -if(PNG_STATIC) - # does not work without changing name - set(PNG_LIB_NAME_STATIC png_static) - add_library(png_static STATIC ${libpng_sources}) - add_dependencies(png_static genfiles) - # MSVC doesn't use a different file extension for shared vs. static - # libs. We are able to change OUTPUT_NAME to remove the _static - # for all other platforms. - if(NOT MSVC) - set_target_properties(png_static PROPERTIES - OUTPUT_NAME "${PNG_LIB_NAME}" - CLEAN_DIRECT_OUTPUT 1) - else() - set_target_properties(png_static PROPERTIES - OUTPUT_NAME "${PNG_LIB_NAME}_static" - CLEAN_DIRECT_OUTPUT 1) - endif() - list(APPEND PNG_LIB_TARGETS png_static) - if(MSVC) - # msvc does not append 'lib' - do it here to have consistent name - set_target_properties(png_static PROPERTIES PREFIX "lib") - endif() - target_link_libraries(png_static ${ZLIB_LIBRARY} ${M_LIBRARY}) -endif() - -if(PNG_FRAMEWORK) - set(PNG_LIB_NAME_FRAMEWORK png_framework) - add_library(png_framework SHARED ${libpng_sources}) - add_dependencies(png_framework genfiles) - list(APPEND PNG_LIB_TARGETS png_framework) - set_target_properties(png_framework PROPERTIES - FRAMEWORK TRUE - FRAMEWORK_VERSION ${PNGLIB_VERSION} - MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PNGLIB_MAJOR}.${PNGLIB_MINOR} - MACOSX_FRAMEWORK_BUNDLE_VERSION ${PNGLIB_VERSION} - MACOSX_FRAMEWORK_IDENTIFIER org.libpng.libpng - XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" - PUBLIC_HEADER "${libpng_public_hdrs}" - OUTPUT_NAME png) - target_link_libraries(png_framework ${ZLIB_LIBRARY} ${M_LIBRARY}) -endif() - -if(NOT PNG_LIB_TARGETS) - message(SEND_ERROR - "No library variant selected to build. " - "Please enable at least one of the following options: " - " PNG_STATIC, PNG_SHARED, PNG_FRAMEWORK") -endif() - -if(PNG_SHARED AND WIN32) - set_target_properties(png PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) -endif() - -function(png_add_test) - set(options) - set(oneValueArgs NAME COMMAND) - set(multiValueArgs OPTIONS FILES) - cmake_parse_arguments(_PAT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - if (NOT _PAT_NAME) - message(FATAL_ERROR "Invalid arguments. png_add_test requires name.") - endif() - if (NOT _PAT_COMMAND) - message(FATAL_ERROR "Invalid arguments. png_add_test requires command.") - endif() - - set(TEST_OPTIONS "${_PAT_OPTIONS}") - set(TEST_FILES "${_PAT_FILES}") - - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/test.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake" @ONLY) - if(CMAKE_MAJOR_VERSION GREATER 2) # have generator expressions - add_test(NAME "${_PAT_NAME}" - COMMAND "${CMAKE_COMMAND}" - "-DLIBPNG=$" - "-DTEST_COMMAND=$" - -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") - else() # old 2.x add_test; limited and won't work well on Windows - # Note LIBPNG is a dummy value as there are no generator expressions - add_test("${_PAT_NAME}" "${CMAKE_COMMAND}" - "-DLIBPNG=${CMAKE_CURRENT_BINARY_DIR}/libpng.so" - "-DTEST_COMMAND=./${_PAT_COMMAND}" - -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") - endif() -endfunction() - -if(PNG_TESTS AND PNG_SHARED) - # Find test PNG files by globbing, but sort lists to ensure - # consistency between different filesystems. - file(GLOB PNGSUITE_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/*.png") - list(SORT PNGSUITE_PNGS) - file(GLOB TEST_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/testpngs/*.png") - list(SORT TEST_PNGS) - - set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png") - - add_executable(pngtest ${pngtest_sources}) - target_link_libraries(pngtest png) - - png_add_test(NAME pngtest COMMAND pngtest FILES "${PNGTEST_PNG}") - - add_executable(pngvalid ${pngvalid_sources}) - target_link_libraries(pngvalid png) - - png_add_test(NAME pngvalid-gamma-16-to-8 - COMMAND pngvalid OPTIONS --gamma-16-to-8) - png_add_test(NAME pngvalid-gamma-alpha-mode - COMMAND pngvalid OPTIONS --gamma-alpha-mode) - png_add_test(NAME pngvalid-gamma-background - COMMAND pngvalid OPTIONS --gamma-background) - png_add_test(NAME pngvalid-gamma-expand16-alpha-mode - COMMAND pngvalid OPTIONS --gamma-alpha-mode --expand16) - png_add_test(NAME pngvalid-gamma-expand16-background - COMMAND pngvalid OPTIONS --gamma-background --expand16) - png_add_test(NAME pngvalid-gamma-expand16-transform - COMMAND pngvalid OPTIONS --gamma-transform --expand16) - png_add_test(NAME pngvalid-gamma-sbit - COMMAND pngvalid OPTIONS --gamma-sbit) - png_add_test(NAME pngvalid-gamma-threshold - COMMAND pngvalid OPTIONS --gamma-threshold) - png_add_test(NAME pngvalid-gamma-transform - COMMAND pngvalid OPTIONS --gamma-transform) - png_add_test(NAME pngvalid-progressive-interlace-standard - COMMAND pngvalid OPTIONS --standard --progressive-read --interlace) - png_add_test(NAME pngvalid-progressive-size - COMMAND pngvalid OPTIONS --size --progressive-read) - png_add_test(NAME pngvalid-progressive-standard - COMMAND pngvalid OPTIONS --standard --progressive-read) - png_add_test(NAME pngvalid-standard - COMMAND pngvalid OPTIONS --standard) - png_add_test(NAME pngvalid-transform - COMMAND pngvalid OPTIONS --transform) - - add_executable(pngstest ${pngstest_sources}) - target_link_libraries(pngstest png) - - foreach(gamma_type 1.8 linear none sRGB) - foreach(alpha_type none alpha) - set(PNGSTEST_FILES) - foreach(test_png ${TEST_PNGS}) - string(REGEX MATCH ".*-linear[-.].*" TEST_PNG_LINEAR "${test_png}") - string(REGEX MATCH ".*-sRGB[-.].*" TEST_PNG_SRGB "${test_png}") - string(REGEX MATCH ".*-1.8[-.].*" TEST_PNG_G18 "${test_png}") - string(REGEX MATCH ".*-alpha-.*" TEST_PNG_ALPHA "${test_png}") - - set(TEST_PNG_VALID TRUE) - - if(TEST_PNG_ALPHA) - if (NOT "${alpha_type}" STREQUAL "alpha") - set(TEST_PNG_VALID FALSE) - endif() - else() - if ("${alpha_type}" STREQUAL "alpha") - set(TEST_PNG_VALID FALSE) - endif() - endif() - - if(TEST_PNG_LINEAR) - if(NOT "${gamma_type}" STREQUAL "linear") - set(TEST_PNG_VALID FALSE) - endif() - elseif(TEST_PNG_SRGB) - if(NOT "${gamma_type}" STREQUAL "sRGB") - set(TEST_PNG_VALID FALSE) - endif() - elseif(TEST_PNG_G18) - if(NOT "${gamma_type}" STREQUAL "1.8") - set(TEST_PNG_VALID FALSE) - endif() - else() - if(NOT "${gamma_type}" STREQUAL "none") - set(TEST_PNG_VALID FALSE) - endif() - endif() - - if(TEST_PNG_VALID) - list(APPEND PNGSTEST_FILES "${test_png}") - endif() - endforeach() - # Should already be sorted, but sort anyway to be certain. - list(SORT PNGSTEST_FILES) - png_add_test(NAME pngstest-${gamma_type}-${alpha_type} - COMMAND pngstest - OPTIONS --tmpfile "${gamma_type}-${alpha_type}-" --log - FILES ${PNGSTEST_FILES}) - endforeach() - endforeach() - - add_executable(pngunknown ${pngunknown_sources}) - target_link_libraries(pngunknown png) - - png_add_test(NAME pngunknown-discard COMMAND pngunknown OPTIONS --strict default=discard FILES "${PNGTEST_PNG}") - png_add_test(NAME pngunknown-IDAT COMMAND pngunknown OPTIONS --strict default=discard IDAT=save FILES "${PNGTEST_PNG}") - png_add_test(NAME pngunknown-if-safe COMMAND pngunknown OPTIONS --strict default=if-safe FILES "${PNGTEST_PNG}") - png_add_test(NAME pngunknown-sAPI COMMAND pngunknown OPTIONS --strict bKGD=save cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save FILES "${PNGTEST_PNG}") - png_add_test(NAME pngunknown-save COMMAND pngunknown OPTIONS --strict default=save FILES "${PNGTEST_PNG}") - png_add_test(NAME pngunknown-sTER COMMAND pngunknown OPTIONS --strict sTER=if-safe FILES "${PNGTEST_PNG}") - png_add_test(NAME pngunknown-vpAg COMMAND pngunknown OPTIONS --strict vpAg=if-safe FILES "${PNGTEST_PNG}") - - add_executable(pngimage ${pngimage_sources}) - target_link_libraries(pngimage png) - - png_add_test(NAME pngimage-quick COMMAND pngimage OPTIONS --list-combos --log FILES ${PNGSUITE_PNGS}) - png_add_test(NAME pngimage-full COMMAND pngimage OPTIONS --exhaustive --list-combos --log FILES ${PNGSUITE_PNGS}) -endif() - -if(PNG_SHARED) - add_executable(pngfix ${pngfix_sources}) - target_link_libraries(pngfix png) - set(PNG_BIN_TARGETS pngfix) - - add_executable(png-fix-itxt ${png_fix_itxt_sources}) - target_link_libraries(png-fix-itxt ${ZLIB_LIBRARY} ${M_LIBRARY}) - list(APPEND PNG_BIN_TARGETS png-fix-itxt) -endif() - -# Set a variable with CMake code which: -# Creates a symlink from src to dest (if possible) or alternatively -# copies if different. -include(CMakeParseArguments) - -function(CREATE_SYMLINK DEST_FILE) - - cmake_parse_arguments(S "" "FILE;TARGET" "" ${ARGN}) - - if(NOT S_TARGET AND NOT S_FILE) - message(FATAL_ERROR "Specify either a TARGET or a FILE for CREATE_SYMLINK to link to.") - endif(NOT S_TARGET AND NOT S_FILE) - - if(S_TARGET AND S_FILE) - message(FATAL_ERROR "CREATE_SYMLINK called with both source file ${S_FILE} and build target ${S_TARGET} arguments - can only handle 1 type per call.") - endif(S_TARGET AND S_FILE) - - if(S_FILE) - # If we don't need to symlink something that's coming from a build target, - # we can go ahead and symlink/copy at configure time. - - if(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) - execute_process( - COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${S_FILE} ${DEST_FILE} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" - ) - else(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) - execute_process( - COMMAND ${CMAKE_COMMAND} -E create_symlink ${S_FILE} ${DEST_FILE} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" - ) - endif(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) - endif(S_FILE) - - if(S_TARGET) - # We need to use generator expressions, which can be a bit tricky, so for - # simplicity make the symlink a POST_BUILD step and use the TARGET - # signature of add_custom_command. - - if(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) - add_custom_command(TARGET ${S_TARGET} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy_if_different $ $/${DEST_FILE} - ) - else(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) - add_custom_command(TARGET ${S_TARGET} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E create_symlink $ $/${DEST_FILE} - ) - endif(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS) - - endif(S_TARGET) - -endfunction() - -# Create source generation scripts. -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genout.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY) - - -# libpng is a library so default to 'lib' -if(NOT DEFINED CMAKE_INSTALL_LIBDIR) - set(CMAKE_INSTALL_LIBDIR lib) -endif(NOT DEFINED CMAKE_INSTALL_LIBDIR) - -# CREATE PKGCONFIG FILES -# we use the same files like ./configure, so we have to set its vars -# Only do this on Windows for Cygwin - the files don't make much sense outside -# a UNIX look alike -if(NOT WIN32 OR CYGWIN OR MINGW) - set(prefix ${CMAKE_INSTALL_PREFIX}) - set(exec_prefix ${CMAKE_INSTALL_PREFIX}) - set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) - set(includedir ${CMAKE_INSTALL_PREFIX}/include) - set(LIBS "-lz -lm") - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY) - CREATE_SYMLINK(libpng.pc FILE ${PNGLIB_NAME}.pc) - - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in - ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY) - CREATE_SYMLINK(libpng-config FILE ${PNGLIB_NAME}-config) -endif(NOT WIN32 OR CYGWIN OR MINGW) - -# SET UP LINKS -if(PNG_SHARED) - set_target_properties(png PROPERTIES -# VERSION 16.${PNGLIB_RELEASE}.1.6.34 - VERSION 16.${PNGLIB_RELEASE}.0 - SOVERSION 16 - CLEAN_DIRECT_OUTPUT 1) -endif() - -# If CMake > 2.4.x, we set a variable used below to export -# targets to an export file. -# TODO: Use VERSION_GREATER after our cmake_minimum_required >= 2.6.2 -if(CMAKE_MAJOR_VERSION GREATER 1 AND CMAKE_MINOR_VERSION GREATER 4) - set(PNG_EXPORT_RULE EXPORT libpng) -elseif(CMAKE_MAJOR_VERSION GREATER 2) # future proof - set(PNG_EXPORT_RULE EXPORT libpng) -endif() - -# INSTALL -if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) - install(TARGETS ${PNG_LIB_TARGETS} - ${PNG_EXPORT_RULE} - RUNTIME DESTINATION bin - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) - - if(PNG_SHARED) - # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin - if(CYGWIN OR MINGW) - CREATE_SYMLINK(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png) - install(FILES $/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif(CYGWIN OR MINGW) - - if(NOT WIN32) - CREATE_SYMLINK(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png) - install(FILES $/libpng${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif(NOT WIN32) - endif(PNG_SHARED) - - if(PNG_STATIC) - if(NOT WIN32 OR CYGWIN OR MINGW) - CREATE_SYMLINK( libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static) - install(FILES $/libpng${CMAKE_STATIC_LIBRARY_SUFFIX} DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif(NOT WIN32 OR CYGWIN OR MINGW) - endif() -endif() - -if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) - install(FILES ${libpng_public_hdrs} DESTINATION include) - install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME}) -endif() -if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL ) - if(NOT WIN32 OR CYGWIN OR MINGW) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config - DESTINATION bin) - endif(NOT WIN32 OR CYGWIN OR MINGW) -endif() - -if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL ) - install(TARGETS ${PNG_BIN_TARGETS} - RUNTIME DESTINATION bin) -endif() - -if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) - # Install man pages - if(NOT PNG_MAN_DIR) - set(PNG_MAN_DIR "share/man") - endif() - install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3) - install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5) - # Install pkg-config files - if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config - DESTINATION bin) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config - DESTINATION bin) - endif(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) -endif() - -# On versions of CMake that support it, create an export file CMake -# users can include() to import our targets -if(PNG_EXPORT_RULE AND NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL ) - install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake) -endif() - -# what's with libpng-manual.txt and all the extra files? - -# UNINSTALL -# do we need this? - -# DIST -# do we need this? - -# to create msvc import lib for mingw compiled shared lib -# pexports libpng.dll > libpng.def -# lib /def:libpng.def /machine:x86 diff --git a/src/png/libpng/LICENSE b/src/png/libpng/LICENSE deleted file mode 100644 index 4cda4fa0a..000000000 --- a/src/png/libpng/LICENSE +++ /dev/null @@ -1,133 +0,0 @@ - -This copy of the libpng notices is provided for your convenience. In case of -any discrepancy between this copy and the notices in the file png.h that is -included in the libpng distribution, the latter shall prevail. - -COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: - -If you modify libpng you may insert additional notices immediately following -this sentence. - -This code is released under the libpng license. - -libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are -Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are -derived from libpng-1.0.6, and are distributed according to the same -disclaimer and license as libpng-1.0.6 with the following individuals -added to the list of Contributing Authors: - - Simon-Pierre Cadieux - Eric S. Raymond - Mans Rullgard - Cosmin Truta - Gilles Vollant - James Yu - Mandar Sahastrabuddhe - Google Inc. - Vadim Barkov - -and with the following additions to the disclaimer: - - There is no warranty against interference with your enjoyment of the - library or against infringement. There is no warranty that our - efforts or the library will fulfill any of your particular purposes - or needs. This library is provided with all faults, and the entire - risk of satisfactory quality, performance, accuracy, and effort is with - the user. - -Some files in the "contrib" directory and some configure-generated -files that are distributed with libpng have other copyright owners and -are released under other open source licenses. - -libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are -Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from -libpng-0.96, and are distributed according to the same disclaimer and -license as libpng-0.96, with the following individuals added to the list -of Contributing Authors: - - Tom Lane - Glenn Randers-Pehrson - Willem van Schaik - -libpng versions 0.89, June 1996, through 0.96, May 1997, are -Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, -and are distributed according to the same disclaimer and license as -libpng-0.88, with the following individuals added to the list of -Contributing Authors: - - John Bowler - Kevin Bracey - Sam Bushell - Magnus Holmgren - Greg Roelofs - Tom Tanner - -Some files in the "scripts" directory have other copyright owners -but are released under this license. - -libpng versions 0.5, May 1995, through 0.88, January 1996, are -Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. - -For the purposes of this copyright and license, "Contributing Authors" -is defined as the following set of individuals: - - Andreas Dilger - Dave Martindale - Guy Eric Schalnat - Paul Schmidt - Tim Wegner - -The PNG Reference Library is supplied "AS IS". The Contributing Authors -and Group 42, Inc. disclaim all warranties, expressed or implied, -including, without limitation, the warranties of merchantability and of -fitness for any purpose. The Contributing Authors and Group 42, Inc. -assume no liability for direct, indirect, incidental, special, exemplary, -or consequential damages, which may result from the use of the PNG -Reference Library, even if advised of the possibility of such damage. - -Permission is hereby granted to use, copy, modify, and distribute this -source code, or portions hereof, for any purpose, without fee, subject -to the following restrictions: - - 1. The origin of this source code must not be misrepresented. - - 2. Altered versions must be plainly marked as such and must not - be misrepresented as being the original source. - - 3. This Copyright notice may not be removed or altered from any - source or altered source distribution. - -The Contributing Authors and Group 42, Inc. specifically permit, without -fee, and encourage the use of this source code as a component to -supporting the PNG file format in commercial products. If you use this -source code in a product, acknowledgment is not required but would be -appreciated. - -END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE. - -TRADEMARK: - -The name "libpng" has not been registered by the Copyright owner -as a trademark in any jurisdiction. However, because libpng has -been distributed and maintained world-wide, continually since 1995, -the Copyright owner claims "common-law trademark protection" in any -jurisdiction where common-law trademark is recognized. - -OSI CERTIFICATION: - -Libpng is OSI Certified Open Source Software. OSI Certified Open Source is -a certification mark of the Open Source Initiative. OSI has not addressed -the additional disclaimers inserted at version 1.0.7. - -EXPORT CONTROL: - -The Copyright owner believes that the Export Control Classification -Number (ECCN) for libpng is EAR99, which means not subject to export -controls or International Traffic in Arms Regulations (ITAR) because -it is open source, publicly available software, that does not contain -any encryption software. See the EAR, paragraphs 734.3(b)(3) and -734.7(b). - -Glenn Randers-Pehrson -glennrp at users.sourceforge.net -September 29, 2017 diff --git a/src/png/libpng/arm/arm_init.c b/src/png/libpng/arm/arm_init.c deleted file mode 100644 index 02df812e7..000000000 --- a/src/png/libpng/arm/arm_init.c +++ /dev/null @@ -1,135 +0,0 @@ - -/* arm_init.c - NEON optimised filter functions - * - * Copyright (c) 2014,2016 Glenn Randers-Pehrson - * Written by Mans Rullgard, 2011. - * Last changed in libpng 1.6.22 [May 26, 2016] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ -/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are - * called. - */ -#define _POSIX_SOURCE 1 - -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -#if PNG_ARM_NEON_OPT > 0 -#ifdef PNG_ARM_NEON_CHECK_SUPPORTED /* Do run-time checks */ -/* WARNING: it is strongly recommended that you do not build libpng with - * run-time checks for CPU features if at all possible. In the case of the ARM - * NEON instructions there is no processor-specific way of detecting the - * presence of the required support, therefore run-time detection is extremely - * OS specific. - * - * You may set the macro PNG_ARM_NEON_FILE to the file name of file containing - * a fragment of C source code which defines the png_have_neon function. There - * are a number of implementations in contrib/arm-neon, but the only one that - * has partial support is contrib/arm-neon/linux.c - a generic Linux - * implementation which reads /proc/cpufino. - */ -#ifndef PNG_ARM_NEON_FILE -# ifdef __linux__ -# define PNG_ARM_NEON_FILE "contrib/arm-neon/linux.c" -# endif -#endif - -#ifdef PNG_ARM_NEON_FILE - -#include /* for sig_atomic_t */ -static int png_have_neon(png_structp png_ptr); -#include PNG_ARM_NEON_FILE - -#else /* PNG_ARM_NEON_FILE */ -# error "PNG_ARM_NEON_FILE undefined: no support for run-time ARM NEON checks" -#endif /* PNG_ARM_NEON_FILE */ -#endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ - -#ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" -#endif - -void -png_init_filter_functions_neon(png_structp pp, unsigned int bpp) -{ - /* The switch statement is compiled in for ARM_NEON_API, the call to - * png_have_neon is compiled in for ARM_NEON_CHECK. If both are defined - * the check is only performed if the API has not set the NEON option on - * or off explicitly. In this case the check controls what happens. - * - * If the CHECK is not compiled in and the option is UNSET the behavior prior - * to 1.6.7 was to use the NEON code - this was a bug caused by having the - * wrong order of the 'ON' and 'default' cases. UNSET now defaults to OFF, - * as documented in png.h - */ - png_debug(1, "in png_init_filter_functions_neon"); -#ifdef PNG_ARM_NEON_API_SUPPORTED - switch ((pp->options >> PNG_ARM_NEON) & 3) - { - case PNG_OPTION_UNSET: - /* Allow the run-time check to execute if it has been enabled - - * thus both API and CHECK can be turned on. If it isn't supported - * this case will fall through to the 'default' below, which just - * returns. - */ -#endif /* PNG_ARM_NEON_API_SUPPORTED */ -#ifdef PNG_ARM_NEON_CHECK_SUPPORTED - { - static volatile sig_atomic_t no_neon = -1; /* not checked */ - - if (no_neon < 0) - no_neon = !png_have_neon(pp); - - if (no_neon) - return; - } -#ifdef PNG_ARM_NEON_API_SUPPORTED - break; -#endif -#endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ - -#ifdef PNG_ARM_NEON_API_SUPPORTED - default: /* OFF or INVALID */ - return; - - case PNG_OPTION_ON: - /* Option turned on */ - break; - } -#endif - - /* IMPORTANT: any new external functions used here must be declared using - * PNG_INTERNAL_FUNCTION in ../pngpriv.h. This is required so that the - * 'prefix' option to configure works: - * - * ./configure --with-libpng-prefix=foobar_ - * - * Verify you have got this right by running the above command, doing a build - * and examining pngprefix.h; it must contain a #define for every external - * function you add. (Notice that this happens automatically for the - * initialization function.) - */ - pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_neon; - - if (bpp == 3) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_neon; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_neon; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth3_neon; - } - - else if (bpp == 4) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_neon; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_neon; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth4_neon; - } -} -#endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* READ */ diff --git a/src/png/libpng/arm/filter_neon.S b/src/png/libpng/arm/filter_neon.S deleted file mode 100644 index 000764cd2..000000000 --- a/src/png/libpng/arm/filter_neon.S +++ /dev/null @@ -1,253 +0,0 @@ - -/* filter_neon.S - NEON optimised filter functions - * - * Copyright (c) 2014,2017 Glenn Randers-Pehrson - * Written by Mans Rullgard, 2011. - * Last changed in libpng 1.6.31 [July 27, 2017] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* This is required to get the symbol renames, which are #defines, and the - * definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION. - */ -#define PNG_VERSION_INFO_ONLY -#include "../pngpriv.h" - -#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__) -.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */ -#endif - -#ifdef PNG_READ_SUPPORTED - -/* Assembler NEON support - only works for 32-bit ARM (i.e. it does not work for - * ARM64). The code in arm/filter_neon_intrinsics.c supports ARM64, however it - * only works if -mfpu=neon is specified on the GCC command line. See pngpriv.h - * for the logic which sets PNG_USE_ARM_NEON_ASM: - */ -#if PNG_ARM_NEON_IMPLEMENTATION == 2 /* hand-coded assembler */ - -#if PNG_ARM_NEON_OPT > 0 - -#ifdef __ELF__ -# define ELF -#else -# define ELF @ -#endif - - .arch armv7-a - .fpu neon - -.macro func name, export=0 - .macro endfunc -ELF .size \name, . - \name - .endfunc - .purgem endfunc - .endm - .text - - /* Explicitly specifying alignment here because some versions of - * GAS don't align code correctly. This is harmless in correctly - * written versions of GAS. - */ - .align 2 - - .if \export - .global \name - .endif -ELF .type \name, STT_FUNC - .func \name -\name: -.endm - -func png_read_filter_row_sub4_neon, export=1 - ldr r3, [r0, #4] @ rowbytes - vmov.i8 d3, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vadd.u8 d0, d3, d4 - vadd.u8 d1, d0, d5 - vadd.u8 d2, d1, d6 - vadd.u8 d3, d2, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r3, r3, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_sub3_neon, export=1 - ldr r3, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - mov r0, r1 - mov r2, #3 - mov r12, #12 - vld1.8 {q11}, [r0], r12 -1: - vext.8 d5, d22, d23, #3 - vadd.u8 d0, d3, d22 - vext.8 d6, d22, d23, #6 - vadd.u8 d1, d0, d5 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], r12 - vst1.32 {d0[0]}, [r1,:32], r2 - vadd.u8 d2, d1, d6 - vst1.32 {d1[0]}, [r1], r2 - vadd.u8 d3, d2, d7 - vst1.32 {d2[0]}, [r1], r2 - vst1.32 {d3[0]}, [r1], r2 - subs r3, r3, #12 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_up_neon, export=1 - ldr r3, [r0, #4] @ rowbytes -1: - vld1.8 {q0}, [r1,:128] - vld1.8 {q1}, [r2,:128]! - vadd.u8 q0, q0, q1 - vst1.8 {q0}, [r1,:128]! - subs r3, r3, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_avg4_neon, export=1 - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! - vhadd.u8 d0, d3, d16 - vadd.u8 d0, d0, d4 - vhadd.u8 d1, d0, d17 - vadd.u8 d1, d1, d5 - vhadd.u8 d2, d1, d18 - vadd.u8 d2, d2, d6 - vhadd.u8 d3, d2, d19 - vadd.u8 d3, d3, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r12, r12, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_avg3_neon, export=1 - push {r4,lr} - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - mov r0, r1 - mov r4, #3 - mov lr, #12 - vld1.8 {q11}, [r0], lr -1: - vld1.8 {q10}, [r2], lr - vext.8 d5, d22, d23, #3 - vhadd.u8 d0, d3, d20 - vext.8 d17, d20, d21, #3 - vadd.u8 d0, d0, d22 - vext.8 d6, d22, d23, #6 - vhadd.u8 d1, d0, d17 - vext.8 d18, d20, d21, #6 - vadd.u8 d1, d1, d5 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], lr - vst1.32 {d0[0]}, [r1,:32], r4 - vhadd.u8 d2, d1, d18 - vst1.32 {d1[0]}, [r1], r4 - vext.8 d19, d21, d21, #1 - vadd.u8 d2, d2, d6 - vhadd.u8 d3, d2, d19 - vst1.32 {d2[0]}, [r1], r4 - vadd.u8 d3, d3, d7 - vst1.32 {d3[0]}, [r1], r4 - subs r12, r12, #12 - bgt 1b - - pop {r4,pc} -endfunc - -.macro paeth rx, ra, rb, rc - vaddl.u8 q12, \ra, \rb @ a + b - vaddl.u8 q15, \rc, \rc @ 2*c - vabdl.u8 q13, \rb, \rc @ pa - vabdl.u8 q14, \ra, \rc @ pb - vabd.u16 q15, q12, q15 @ pc - vcle.u16 q12, q13, q14 @ pa <= pb - vcle.u16 q13, q13, q15 @ pa <= pc - vcle.u16 q14, q14, q15 @ pb <= pc - vand q12, q12, q13 @ pa <= pb && pa <= pc - vmovn.u16 d28, q14 - vmovn.u16 \rx, q12 - vbsl d28, \rb, \rc - vbsl \rx, \ra, d28 -.endm - -func png_read_filter_row_paeth4_neon, export=1 - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - vmov.i8 d20, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! - paeth d0, d3, d16, d20 - vadd.u8 d0, d0, d4 - paeth d1, d0, d17, d16 - vadd.u8 d1, d1, d5 - paeth d2, d1, d18, d17 - vadd.u8 d2, d2, d6 - paeth d3, d2, d19, d18 - vmov d20, d19 - vadd.u8 d3, d3, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r12, r12, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_paeth3_neon, export=1 - push {r4,lr} - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - vmov.i8 d4, #0 - mov r0, r1 - mov r4, #3 - mov lr, #12 - vld1.8 {q11}, [r0], lr -1: - vld1.8 {q10}, [r2], lr - paeth d0, d3, d20, d4 - vext.8 d5, d22, d23, #3 - vadd.u8 d0, d0, d22 - vext.8 d17, d20, d21, #3 - paeth d1, d0, d17, d20 - vst1.32 {d0[0]}, [r1,:32], r4 - vext.8 d6, d22, d23, #6 - vadd.u8 d1, d1, d5 - vext.8 d18, d20, d21, #6 - paeth d2, d1, d18, d17 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], lr - vst1.32 {d1[0]}, [r1], r4 - vadd.u8 d2, d2, d6 - vext.8 d19, d21, d21, #1 - paeth d3, d2, d19, d18 - vst1.32 {d2[0]}, [r1], r4 - vmov d4, d19 - vadd.u8 d3, d3, d7 - vst1.32 {d3[0]}, [r1], r4 - subs r12, r12, #12 - bgt 1b - - pop {r4,pc} -endfunc -#endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 (assembler) */ -#endif /* READ */ diff --git a/src/png/libpng/arm/filter_neon_intrinsics.c b/src/png/libpng/arm/filter_neon_intrinsics.c deleted file mode 100644 index ea7e356bc..000000000 --- a/src/png/libpng/arm/filter_neon_intrinsics.c +++ /dev/null @@ -1,387 +0,0 @@ - -/* filter_neon_intrinsics.c - NEON optimised filter functions - * - * Copyright (c) 2014,2016 Glenn Randers-Pehrson - * Written by James Yu , October 2013. - * Based on filter_neon.S, written by Mans Rullgard, 2011. - * - * Last changed in libpng 1.6.22 [May 26, 2016] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* This code requires -mfpu=neon on the command line: */ -#if PNG_ARM_NEON_IMPLEMENTATION == 1 /* intrinsics code from pngpriv.h */ - -#include - -/* libpng row pointers are not necessarily aligned to any particular boundary, - * however this code will only work with appropriate alignment. arm/arm_init.c - * checks for this (and will not compile unless it is done). This code uses - * variants of png_aligncast to avoid compiler warnings. - */ -#define png_ptr(type,pointer) png_aligncast(type *,pointer) -#define png_ptrc(type,pointer) png_aligncastconst(const type *,pointer) - -/* The following relies on a variable 'temp_pointer' being declared with type - * 'type'. This is written this way just to hide the GCC strict aliasing - * warning; note that the code is safe because there never is an alias between - * the input and output pointers. - */ -#define png_ldr(type,pointer)\ - (temp_pointer = png_ptr(type,pointer), *temp_pointer) - -#if PNG_ARM_NEON_OPT > 0 - -void -png_read_filter_row_up_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - png_const_bytep pp = prev_row; - - png_debug(1, "in png_read_filter_row_up_neon"); - - for (; rp < rp_stop; rp += 16, pp += 16) - { - uint8x16_t qrp, qpp; - - qrp = vld1q_u8(rp); - qpp = vld1q_u8(pp); - qrp = vaddq_u8(qrp, qpp); - vst1q_u8(rp, qrp); - } -} - -void -png_read_filter_row_sub3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x16_t vtmp = vld1q_u8(rp); - uint8x8x2_t *vrpt = png_ptr(uint8x8x2_t, &vtmp); - uint8x8x2_t vrp = *vrpt; - - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - png_debug(1, "in png_read_filter_row_sub3_neon"); - - for (; rp < rp_stop;) - { - uint8x8_t vtmp1, vtmp2; - uint32x2_t *temp_pointer; - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); - vdest.val[0] = vadd_u8(vdest.val[3], vrp.val[0]); - vtmp2 = vext_u8(vrp.val[0], vrp.val[1], 6); - vdest.val[1] = vadd_u8(vdest.val[0], vtmp1); - - vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); - vdest.val[2] = vadd_u8(vdest.val[1], vtmp2); - vdest.val[3] = vadd_u8(vdest.val[2], vtmp1); - - vtmp = vld1q_u8(rp + 12); - vrpt = png_ptr(uint8x8x2_t, &vtmp); - vrp = *vrpt; - - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); - rp += 3; - } - - PNG_UNUSED(prev_row) -} - -void -png_read_filter_row_sub4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - png_debug(1, "in png_read_filter_row_sub4_neon"); - - for (; rp < rp_stop; rp += 16) - { - uint32x2x4_t vtmp = vld4_u32(png_ptr(uint32_t,rp)); - uint8x8x4_t *vrpt = png_ptr(uint8x8x4_t,&vtmp); - uint8x8x4_t vrp = *vrpt; - uint32x2x4_t *temp_pointer; - - vdest.val[0] = vadd_u8(vdest.val[3], vrp.val[0]); - vdest.val[1] = vadd_u8(vdest.val[0], vrp.val[1]); - vdest.val[2] = vadd_u8(vdest.val[1], vrp.val[2]); - vdest.val[3] = vadd_u8(vdest.val[2], vrp.val[3]); - vst4_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2x4_t,&vdest), 0); - } - - PNG_UNUSED(prev_row) -} - -void -png_read_filter_row_avg3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_const_bytep pp = prev_row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x16_t vtmp; - uint8x8x2_t *vrpt; - uint8x8x2_t vrp; - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - vtmp = vld1q_u8(rp); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - png_debug(1, "in png_read_filter_row_avg3_neon"); - - for (; rp < rp_stop; pp += 12) - { - uint8x8_t vtmp1, vtmp2, vtmp3; - - uint8x8x2_t *vppt; - uint8x8x2_t vpp; - - uint32x2_t *temp_pointer; - - vtmp = vld1q_u8(pp); - vppt = png_ptr(uint8x8x2_t,&vtmp); - vpp = *vppt; - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); - vdest.val[0] = vhadd_u8(vdest.val[3], vpp.val[0]); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - - vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 3); - vtmp3 = vext_u8(vrp.val[0], vrp.val[1], 6); - vdest.val[1] = vhadd_u8(vdest.val[0], vtmp2); - vdest.val[1] = vadd_u8(vdest.val[1], vtmp1); - - vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 6); - vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); - - vtmp = vld1q_u8(rp + 12); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - vdest.val[2] = vhadd_u8(vdest.val[1], vtmp2); - vdest.val[2] = vadd_u8(vdest.val[2], vtmp3); - - vtmp2 = vext_u8(vpp.val[1], vpp.val[1], 1); - - vdest.val[3] = vhadd_u8(vdest.val[2], vtmp2); - vdest.val[3] = vadd_u8(vdest.val[3], vtmp1); - - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); - rp += 3; - } -} - -void -png_read_filter_row_avg4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - png_const_bytep pp = prev_row; - - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - png_debug(1, "in png_read_filter_row_avg4_neon"); - - for (; rp < rp_stop; rp += 16, pp += 16) - { - uint32x2x4_t vtmp; - uint8x8x4_t *vrpt, *vppt; - uint8x8x4_t vrp, vpp; - uint32x2x4_t *temp_pointer; - - vtmp = vld4_u32(png_ptr(uint32_t,rp)); - vrpt = png_ptr(uint8x8x4_t,&vtmp); - vrp = *vrpt; - vtmp = vld4_u32(png_ptrc(uint32_t,pp)); - vppt = png_ptr(uint8x8x4_t,&vtmp); - vpp = *vppt; - - vdest.val[0] = vhadd_u8(vdest.val[3], vpp.val[0]); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - vdest.val[1] = vhadd_u8(vdest.val[0], vpp.val[1]); - vdest.val[1] = vadd_u8(vdest.val[1], vrp.val[1]); - vdest.val[2] = vhadd_u8(vdest.val[1], vpp.val[2]); - vdest.val[2] = vadd_u8(vdest.val[2], vrp.val[2]); - vdest.val[3] = vhadd_u8(vdest.val[2], vpp.val[3]); - vdest.val[3] = vadd_u8(vdest.val[3], vrp.val[3]); - - vst4_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2x4_t,&vdest), 0); - } -} - -static uint8x8_t -paeth(uint8x8_t a, uint8x8_t b, uint8x8_t c) -{ - uint8x8_t d, e; - uint16x8_t p1, pa, pb, pc; - - p1 = vaddl_u8(a, b); /* a + b */ - pc = vaddl_u8(c, c); /* c * 2 */ - pa = vabdl_u8(b, c); /* pa */ - pb = vabdl_u8(a, c); /* pb */ - pc = vabdq_u16(p1, pc); /* pc */ - - p1 = vcleq_u16(pa, pb); /* pa <= pb */ - pa = vcleq_u16(pa, pc); /* pa <= pc */ - pb = vcleq_u16(pb, pc); /* pb <= pc */ - - p1 = vandq_u16(p1, pa); /* pa <= pb && pa <= pc */ - - d = vmovn_u16(pb); - e = vmovn_u16(p1); - - d = vbsl_u8(d, b, c); - e = vbsl_u8(e, a, d); - - return e; -} - -void -png_read_filter_row_paeth3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_const_bytep pp = prev_row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x16_t vtmp; - uint8x8x2_t *vrpt; - uint8x8x2_t vrp; - uint8x8_t vlast = vdup_n_u8(0); - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - vtmp = vld1q_u8(rp); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - png_debug(1, "in png_read_filter_row_paeth3_neon"); - - for (; rp < rp_stop; pp += 12) - { - uint8x8x2_t *vppt; - uint8x8x2_t vpp; - uint8x8_t vtmp1, vtmp2, vtmp3; - uint32x2_t *temp_pointer; - - vtmp = vld1q_u8(pp); - vppt = png_ptr(uint8x8x2_t,&vtmp); - vpp = *vppt; - - vdest.val[0] = paeth(vdest.val[3], vpp.val[0], vlast); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); - vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 3); - vdest.val[1] = paeth(vdest.val[0], vtmp2, vpp.val[0]); - vdest.val[1] = vadd_u8(vdest.val[1], vtmp1); - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 6); - vtmp3 = vext_u8(vpp.val[0], vpp.val[1], 6); - vdest.val[2] = paeth(vdest.val[1], vtmp3, vtmp2); - vdest.val[2] = vadd_u8(vdest.val[2], vtmp1); - - vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); - vtmp2 = vext_u8(vpp.val[1], vpp.val[1], 1); - - vtmp = vld1q_u8(rp + 12); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - vdest.val[3] = paeth(vdest.val[2], vtmp2, vtmp3); - vdest.val[3] = vadd_u8(vdest.val[3], vtmp1); - - vlast = vtmp2; - - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); - rp += 3; - } -} - -void -png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - png_const_bytep pp = prev_row; - - uint8x8_t vlast = vdup_n_u8(0); - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - png_debug(1, "in png_read_filter_row_paeth4_neon"); - - for (; rp < rp_stop; rp += 16, pp += 16) - { - uint32x2x4_t vtmp; - uint8x8x4_t *vrpt, *vppt; - uint8x8x4_t vrp, vpp; - uint32x2x4_t *temp_pointer; - - vtmp = vld4_u32(png_ptr(uint32_t,rp)); - vrpt = png_ptr(uint8x8x4_t,&vtmp); - vrp = *vrpt; - vtmp = vld4_u32(png_ptrc(uint32_t,pp)); - vppt = png_ptr(uint8x8x4_t,&vtmp); - vpp = *vppt; - - vdest.val[0] = paeth(vdest.val[3], vpp.val[0], vlast); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - vdest.val[1] = paeth(vdest.val[0], vpp.val[1], vpp.val[0]); - vdest.val[1] = vadd_u8(vdest.val[1], vrp.val[1]); - vdest.val[2] = paeth(vdest.val[1], vpp.val[2], vpp.val[1]); - vdest.val[2] = vadd_u8(vdest.val[2], vrp.val[2]); - vdest.val[3] = paeth(vdest.val[2], vpp.val[3], vpp.val[2]); - vdest.val[3] = vadd_u8(vdest.val[3], vrp.val[3]); - - vlast = vpp.val[3]; - - vst4_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2x4_t,&vdest), 0); - } -} - -#endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* PNG_ARM_NEON_IMPLEMENTATION == 1 (intrinsics) */ -#endif /* READ */ diff --git a/src/png/libpng/intel/filter_sse2_intrinsics.c b/src/png/libpng/intel/filter_sse2_intrinsics.c deleted file mode 100644 index 5e8553fbb..000000000 --- a/src/png/libpng/intel/filter_sse2_intrinsics.c +++ /dev/null @@ -1,406 +0,0 @@ - -/* filter_sse2_intrinsics.c - SSE2 optimized filter functions - * - * Copyright (c) 2016-2017 Glenn Randers-Pehrson - * Written by Mike Klein and Matt Sarett - * Derived from arm/filter_neon_intrinsics.c - * - * Last changed in libpng 1.6.31 [July 27, 2017] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -#if PNG_INTEL_SSE_IMPLEMENTATION > 0 - -#include - -/* Functions in this file look at most 3 pixels (a,b,c) to predict the 4th (d). - * They're positioned like this: - * prev: c b - * row: a d - * The Sub filter predicts d=a, Avg d=(a+b)/2, and Paeth predicts d to be - * whichever of a, b, or c is closest to p=a+b-c. - */ - -static __m128i load4(const void* p) { - return _mm_cvtsi32_si128(*(const int*)p); -} - -static void store4(void* p, __m128i v) { - *(int*)p = _mm_cvtsi128_si32(v); -} - -static __m128i load3(const void* p) { - /* We'll load 2 bytes, then 1 byte, - * then mask them together, and finally load into SSE. - */ - const png_uint_16* p01 = (png_const_uint_16p)p; - const png_byte* p2 = (const png_byte*)(p01+1); - - png_uint_32 v012 = (png_uint_32)(*p01) - | (png_uint_32)(*p2) << 16; - return load4(&v012); -} - -static void store3(void* p, __m128i v) { - /* We'll pull from SSE as a 32-bit int, then write - * its bottom two bytes, then its third byte. - */ - png_uint_32 v012; - png_uint_16* p01; - png_byte* p2; - - store4(&v012, v); - - p01 = (png_uint_16p)p; - p2 = (png_byte*)(p01+1); - *p01 = (png_uint_16)v012; - *p2 = (png_byte)(v012 >> 16); -} - -void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) -{ - /* The Sub filter predicts each pixel as the previous pixel, a. - * There is no pixel to the left of the first pixel. It's encoded directly. - * That works with our main loop if we just say that left pixel was zero. - */ - png_size_t rb; - - __m128i a, d = _mm_setzero_si128(); - - png_debug(1, "in png_read_filter_row_sub3_sse2"); - - rb = row_info->rowbytes; - while (rb >= 4) { - a = d; d = load4(row); - d = _mm_add_epi8(d, a); - store3(row, d); - - row += 3; - rb -= 3; - } - if (rb > 0) { - a = d; d = load3(row); - d = _mm_add_epi8(d, a); - store3(row, d); - - row += 3; - rb -= 3; - } - PNG_UNUSED(prev) -} - -void png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) -{ - /* The Sub filter predicts each pixel as the previous pixel, a. - * There is no pixel to the left of the first pixel. It's encoded directly. - * That works with our main loop if we just say that left pixel was zero. - */ - png_size_t rb; - - __m128i a, d = _mm_setzero_si128(); - - png_debug(1, "in png_read_filter_row_sub4_sse2"); - - rb = row_info->rowbytes+4; - while (rb > 4) { - a = d; d = load4(row); - d = _mm_add_epi8(d, a); - store4(row, d); - - row += 4; - rb -= 4; - } - PNG_UNUSED(prev) -} - -void png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) -{ - /* The Avg filter predicts each pixel as the (truncated) average of a and b. - * There's no pixel to the left of the first pixel. Luckily, it's - * predicted to be half of the pixel above it. So again, this works - * perfectly with our loop if we make sure a starts at zero. - */ - - png_size_t rb; - - const __m128i zero = _mm_setzero_si128(); - - __m128i b; - __m128i a, d = zero; - - png_debug(1, "in png_read_filter_row_avg3_sse2"); - rb = row_info->rowbytes; - while (rb >= 4) { - __m128i avg; - b = load4(prev); - a = d; d = load4(row ); - - /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ - avg = _mm_avg_epu8(a,b); - /* ...but we can fix it up by subtracting off 1 if it rounded up. */ - avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a,b), - _mm_set1_epi8(1))); - d = _mm_add_epi8(d, avg); - store3(row, d); - - prev += 3; - row += 3; - rb -= 3; - } - if (rb > 0) { - __m128i avg; - b = load3(prev); - a = d; d = load3(row ); - - /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ - avg = _mm_avg_epu8(a,b); - /* ...but we can fix it up by subtracting off 1 if it rounded up. */ - avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a,b), - _mm_set1_epi8(1))); - - d = _mm_add_epi8(d, avg); - store3(row, d); - - prev += 3; - row += 3; - rb -= 3; - } -} - -void png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) -{ - /* The Avg filter predicts each pixel as the (truncated) average of a and b. - * There's no pixel to the left of the first pixel. Luckily, it's - * predicted to be half of the pixel above it. So again, this works - * perfectly with our loop if we make sure a starts at zero. - */ - png_size_t rb; - const __m128i zero = _mm_setzero_si128(); - __m128i b; - __m128i a, d = zero; - - png_debug(1, "in png_read_filter_row_avg4_sse2"); - - rb = row_info->rowbytes+4; - while (rb > 4) { - __m128i avg; - b = load4(prev); - a = d; d = load4(row ); - - /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ - avg = _mm_avg_epu8(a,b); - /* ...but we can fix it up by subtracting off 1 if it rounded up. */ - avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a,b), - _mm_set1_epi8(1))); - - d = _mm_add_epi8(d, avg); - store4(row, d); - - prev += 4; - row += 4; - rb -= 4; - } -} - -/* Returns |x| for 16-bit lanes. */ -static __m128i abs_i16(__m128i x) { -#if PNG_INTEL_SSE_IMPLEMENTATION >= 2 - return _mm_abs_epi16(x); -#else - /* Read this all as, return x<0 ? -x : x. - * To negate two's complement, you flip all the bits then add 1. - */ - __m128i is_negative = _mm_cmplt_epi16(x, _mm_setzero_si128()); - - /* Flip negative lanes. */ - x = _mm_xor_si128(x, is_negative); - - /* +1 to negative lanes, else +0. */ - x = _mm_sub_epi16(x, is_negative); - return x; -#endif -} - -/* Bytewise c ? t : e. */ -static __m128i if_then_else(__m128i c, __m128i t, __m128i e) { -#if PNG_INTEL_SSE_IMPLEMENTATION >= 3 - return _mm_blendv_epi8(e,t,c); -#else - return _mm_or_si128(_mm_and_si128(c, t), _mm_andnot_si128(c, e)); -#endif -} - -void png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) -{ - /* Paeth tries to predict pixel d using the pixel to the left of it, a, - * and two pixels from the previous row, b and c: - * prev: c b - * row: a d - * The Paeth function predicts d to be whichever of a, b, or c is nearest to - * p=a+b-c. - * - * The first pixel has no left context, and so uses an Up filter, p = b. - * This works naturally with our main loop's p = a+b-c if we force a and c - * to zero. - * Here we zero b and d, which become c and a respectively at the start of - * the loop. - */ - png_size_t rb; - const __m128i zero = _mm_setzero_si128(); - __m128i c, b = zero, - a, d = zero; - - png_debug(1, "in png_read_filter_row_paeth3_sse2"); - - rb = row_info->rowbytes; - while (rb >= 4) { - /* It's easiest to do this math (particularly, deal with pc) with 16-bit - * intermediates. - */ - __m128i pa,pb,pc,smallest,nearest; - c = b; b = _mm_unpacklo_epi8(load4(prev), zero); - a = d; d = _mm_unpacklo_epi8(load4(row ), zero); - - /* (p-a) == (a+b-c - a) == (b-c) */ - - pa = _mm_sub_epi16(b,c); - - /* (p-b) == (a+b-c - b) == (a-c) */ - pb = _mm_sub_epi16(a,c); - - /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ - pc = _mm_add_epi16(pa,pb); - - pa = abs_i16(pa); /* |p-a| */ - pb = abs_i16(pb); /* |p-b| */ - pc = abs_i16(pc); /* |p-c| */ - - smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); - - /* Paeth breaks ties favoring a over b over c. */ - nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, - if_then_else(_mm_cmpeq_epi16(smallest, pb), b, - c)); - - /* Note `_epi8`: we need addition to wrap modulo 255. */ - d = _mm_add_epi8(d, nearest); - store3(row, _mm_packus_epi16(d,d)); - - prev += 3; - row += 3; - rb -= 3; - } - if (rb > 0) { - /* It's easiest to do this math (particularly, deal with pc) with 16-bit - * intermediates. - */ - __m128i pa,pb,pc,smallest,nearest; - c = b; b = _mm_unpacklo_epi8(load3(prev), zero); - a = d; d = _mm_unpacklo_epi8(load3(row ), zero); - - /* (p-a) == (a+b-c - a) == (b-c) */ - pa = _mm_sub_epi16(b,c); - - /* (p-b) == (a+b-c - b) == (a-c) */ - pb = _mm_sub_epi16(a,c); - - /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ - pc = _mm_add_epi16(pa,pb); - - pa = abs_i16(pa); /* |p-a| */ - pb = abs_i16(pb); /* |p-b| */ - pc = abs_i16(pc); /* |p-c| */ - - smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); - - /* Paeth breaks ties favoring a over b over c. */ - nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, - if_then_else(_mm_cmpeq_epi16(smallest, pb), b, - c)); - - /* Note `_epi8`: we need addition to wrap modulo 255. */ - d = _mm_add_epi8(d, nearest); - store3(row, _mm_packus_epi16(d,d)); - - prev += 3; - row += 3; - rb -= 3; - } -} - -void png_read_filter_row_paeth4_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) -{ - /* Paeth tries to predict pixel d using the pixel to the left of it, a, - * and two pixels from the previous row, b and c: - * prev: c b - * row: a d - * The Paeth function predicts d to be whichever of a, b, or c is nearest to - * p=a+b-c. - * - * The first pixel has no left context, and so uses an Up filter, p = b. - * This works naturally with our main loop's p = a+b-c if we force a and c - * to zero. - * Here we zero b and d, which become c and a respectively at the start of - * the loop. - */ - png_size_t rb; - const __m128i zero = _mm_setzero_si128(); - __m128i pa,pb,pc,smallest,nearest; - __m128i c, b = zero, - a, d = zero; - - png_debug(1, "in png_read_filter_row_paeth4_sse2"); - - rb = row_info->rowbytes+4; - while (rb > 4) { - /* It's easiest to do this math (particularly, deal with pc) with 16-bit - * intermediates. - */ - c = b; b = _mm_unpacklo_epi8(load4(prev), zero); - a = d; d = _mm_unpacklo_epi8(load4(row ), zero); - - /* (p-a) == (a+b-c - a) == (b-c) */ - pa = _mm_sub_epi16(b,c); - - /* (p-b) == (a+b-c - b) == (a-c) */ - pb = _mm_sub_epi16(a,c); - - /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ - pc = _mm_add_epi16(pa,pb); - - pa = abs_i16(pa); /* |p-a| */ - pb = abs_i16(pb); /* |p-b| */ - pc = abs_i16(pc); /* |p-c| */ - - smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); - - /* Paeth breaks ties favoring a over b over c. */ - nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, - if_then_else(_mm_cmpeq_epi16(smallest, pb), b, - c)); - - /* Note `_epi8`: we need addition to wrap modulo 255. */ - d = _mm_add_epi8(d, nearest); - store4(row, _mm_packus_epi16(d,d)); - - prev += 4; - row += 4; - rb -= 4; - } -} - -#endif /* PNG_INTEL_SSE_IMPLEMENTATION > 0 */ -#endif /* READ */ diff --git a/src/png/libpng/intel/intel_init.c b/src/png/libpng/intel/intel_init.c deleted file mode 100644 index 8f08baf8c..000000000 --- a/src/png/libpng/intel/intel_init.c +++ /dev/null @@ -1,53 +0,0 @@ - -/* intel_init.c - SSE2 optimized filter functions - * - * Copyright (c) 2016-2017 Glenn Randers-Pehrson - * Written by Mike Klein and Matt Sarett, Google, Inc. - * Derived from arm/arm_init.c - * - * Last changed in libpng 1.6.29 [March 16, 2017] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED -#if PNG_INTEL_SSE_IMPLEMENTATION > 0 - -void -png_init_filter_functions_sse2(png_structp pp, unsigned int bpp) -{ - /* The techniques used to implement each of these filters in SSE operate on - * one pixel at a time. - * So they generally speed up 3bpp images about 3x, 4bpp images about 4x. - * They can scale up to 6 and 8 bpp images and down to 2 bpp images, - * but they'd not likely have any benefit for 1bpp images. - * Most of these can be implemented using only MMX and 64-bit registers, - * but they end up a bit slower than using the equally-ubiquitous SSE2. - */ - png_debug(1, "in png_init_filter_functions_sse2"); - if (bpp == 3) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_sse2; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_sse2; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth3_sse2; - } - else if (bpp == 4) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_sse2; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_sse2; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth4_sse2; - } - - /* No need optimize PNG_FILTER_VALUE_UP. The compiler should - * autovectorize. - */ -} - -#endif /* PNG_INTEL_SSE_IMPLEMENTATION > 0 */ -#endif /* PNG_READ_SUPPORTED */ diff --git a/src/png/libpng/libpng-config.in b/src/png/libpng/libpng-config.in deleted file mode 100644 index 69bf8e33f..000000000 --- a/src/png/libpng/libpng-config.in +++ /dev/null @@ -1,127 +0,0 @@ -#! /bin/sh - -# libpng-config -# provides configuration info for libpng. - -# Copyright (C) 2002, 2004, 2006, 2007 Glenn Randers-Pehrson - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Modeled after libxml-config. - -version="@PNGLIB_VERSION@" -prefix="@prefix@" -exec_prefix="@exec_prefix@" -libdir="@libdir@" -includedir="@includedir@/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@" -libs="-lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@" -all_libs="-lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ @LIBS@" -I_opts="-I${includedir}" -L_opts="-L${libdir}" -R_opts="" -cppflags="" -ccopts="" -ldopts="" - -usage() -{ - cat < -#include -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* This code requires -mfpu=msa on the command line: */ -#if PNG_MIPS_MSA_IMPLEMENTATION == 1 /* intrinsics code from pngpriv.h */ - -#include - -/* libpng row pointers are not necessarily aligned to any particular boundary, - * however this code will only work with appropriate alignment. mips/mips_init.c - * checks for this (and will not compile unless it is done). This code uses - * variants of png_aligncast to avoid compiler warnings. - */ -#define png_ptr(type,pointer) png_aligncast(type *,pointer) -#define png_ptrc(type,pointer) png_aligncastconst(const type *,pointer) - -/* The following relies on a variable 'temp_pointer' being declared with type - * 'type'. This is written this way just to hide the GCC strict aliasing - * warning; note that the code is safe because there never is an alias between - * the input and output pointers. - */ -#define png_ldr(type,pointer)\ - (temp_pointer = png_ptr(type,pointer), *temp_pointer) - -#if PNG_MIPS_MSA_OPT > 0 - -#ifdef CLANG_BUILD - #define MSA_SRLI_B(a, b) __msa_srli_b((v16i8) a, b) - - #define LW(psrc) \ - ( { \ - uint8_t *psrc_lw_m = (uint8_t *) (psrc); \ - uint32_t val_m; \ - \ - asm volatile ( \ - "lw %[val_m], %[psrc_lw_m] \n\t" \ - \ - : [val_m] "=r" (val_m) \ - : [psrc_lw_m] "m" (*psrc_lw_m) \ - ); \ - \ - val_m; \ - } ) - - #define SH(val, pdst) \ - { \ - uint8_t *pdst_sh_m = (uint8_t *) (pdst); \ - uint16_t val_m = (val); \ - \ - asm volatile ( \ - "sh %[val_m], %[pdst_sh_m] \n\t" \ - \ - : [pdst_sh_m] "=m" (*pdst_sh_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - - #define SW(val, pdst) \ - { \ - uint8_t *pdst_sw_m = (uint8_t *) (pdst); \ - uint32_t val_m = (val); \ - \ - asm volatile ( \ - "sw %[val_m], %[pdst_sw_m] \n\t" \ - \ - : [pdst_sw_m] "=m" (*pdst_sw_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - - #if (__mips == 64) - #define SD(val, pdst) \ - { \ - uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ - uint64_t val_m = (val); \ - \ - asm volatile ( \ - "sd %[val_m], %[pdst_sd_m] \n\t" \ - \ - : [pdst_sd_m] "=m" (*pdst_sd_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - #else - #define SD(val, pdst) \ - { \ - uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ - uint32_t val0_m, val1_m; \ - \ - val0_m = (uint32_t) ((val) & 0x00000000FFFFFFFF); \ - val1_m = (uint32_t) (((val) >> 32) & 0x00000000FFFFFFFF); \ - \ - SW(val0_m, pdst_sd_m); \ - SW(val1_m, pdst_sd_m + 4); \ - } - #endif -#else - #define MSA_SRLI_B(a, b) (a >> b) - -#if (__mips_isa_rev >= 6) - #define LW(psrc) \ - ( { \ - uint8_t *psrc_lw_m = (uint8_t *) (psrc); \ - uint32_t val_m; \ - \ - asm volatile ( \ - "lw %[val_m], %[psrc_lw_m] \n\t" \ - \ - : [val_m] "=r" (val_m) \ - : [psrc_lw_m] "m" (*psrc_lw_m) \ - ); \ - \ - val_m; \ - } ) - - #define SH(val, pdst) \ - { \ - uint8_t *pdst_sh_m = (uint8_t *) (pdst); \ - uint16_t val_m = (val); \ - \ - asm volatile ( \ - "sh %[val_m], %[pdst_sh_m] \n\t" \ - \ - : [pdst_sh_m] "=m" (*pdst_sh_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - - #define SW(val, pdst) \ - { \ - uint8_t *pdst_sw_m = (uint8_t *) (pdst); \ - uint32_t val_m = (val); \ - \ - asm volatile ( \ - "sw %[val_m], %[pdst_sw_m] \n\t" \ - \ - : [pdst_sw_m] "=m" (*pdst_sw_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - - #if (__mips == 64) - #define SD(val, pdst) \ - { \ - uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ - uint64_t val_m = (val); \ - \ - asm volatile ( \ - "sd %[val_m], %[pdst_sd_m] \n\t" \ - \ - : [pdst_sd_m] "=m" (*pdst_sd_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - #else - #define SD(val, pdst) \ - { \ - uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ - uint32_t val0_m, val1_m; \ - \ - val0_m = (uint32_t) ((val) & 0x00000000FFFFFFFF); \ - val1_m = (uint32_t) (((val) >> 32) & 0x00000000FFFFFFFF); \ - \ - SW(val0_m, pdst_sd_m); \ - SW(val1_m, pdst_sd_m + 4); \ - } - #endif -#else // !(__mips_isa_rev >= 6) - #define LW(psrc) \ - ( { \ - uint8_t *psrc_lw_m = (uint8_t *) (psrc); \ - uint32_t val_m; \ - \ - asm volatile ( \ - "ulw %[val_m], %[psrc_lw_m] \n\t" \ - \ - : [val_m] "=r" (val_m) \ - : [psrc_lw_m] "m" (*psrc_lw_m) \ - ); \ - \ - val_m; \ - } ) - - #define SH(val, pdst) \ - { \ - uint8_t *pdst_sh_m = (uint8_t *) (pdst); \ - uint16_t val_m = (val); \ - \ - asm volatile ( \ - "ush %[val_m], %[pdst_sh_m] \n\t" \ - \ - : [pdst_sh_m] "=m" (*pdst_sh_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - - #define SW(val, pdst) \ - { \ - uint8_t *pdst_sw_m = (uint8_t *) (pdst); \ - uint32_t val_m = (val); \ - \ - asm volatile ( \ - "usw %[val_m], %[pdst_sw_m] \n\t" \ - \ - : [pdst_sw_m] "=m" (*pdst_sw_m) \ - : [val_m] "r" (val_m) \ - ); \ - } - - #define SD(val, pdst) \ - { \ - uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ - uint32_t val0_m, val1_m; \ - \ - val0_m = (uint32_t) ((val) & 0x00000000FFFFFFFF); \ - val1_m = (uint32_t) (((val) >> 32) & 0x00000000FFFFFFFF); \ - \ - SW(val0_m, pdst_sd_m); \ - SW(val1_m, pdst_sd_m + 4); \ - } - - #define SW_ZERO(pdst) \ - { \ - uint8_t *pdst_m = (uint8_t *) (pdst); \ - \ - asm volatile ( \ - "usw $0, %[pdst_m] \n\t" \ - \ - : [pdst_m] "=m" (*pdst_m) \ - : \ - ); \ - } -#endif // (__mips_isa_rev >= 6) -#endif - -#define LD_B(RTYPE, psrc) *((RTYPE *) (psrc)) -#define LD_UB(...) LD_B(v16u8, __VA_ARGS__) -#define LD_B2(RTYPE, psrc, stride, out0, out1) \ -{ \ - out0 = LD_B(RTYPE, (psrc)); \ - out1 = LD_B(RTYPE, (psrc) + stride); \ -} -#define LD_UB2(...) LD_B2(v16u8, __VA_ARGS__) -#define LD_B4(RTYPE, psrc, stride, out0, out1, out2, out3) \ -{ \ - LD_B2(RTYPE, (psrc), stride, out0, out1); \ - LD_B2(RTYPE, (psrc) + 2 * stride , stride, out2, out3); \ -} -#define LD_UB4(...) LD_B4(v16u8, __VA_ARGS__) - -#define ST_B(RTYPE, in, pdst) *((RTYPE *) (pdst)) = (in) -#define ST_UB(...) ST_B(v16u8, __VA_ARGS__) -#define ST_B2(RTYPE, in0, in1, pdst, stride) \ -{ \ - ST_B(RTYPE, in0, (pdst)); \ - ST_B(RTYPE, in1, (pdst) + stride); \ -} -#define ST_UB2(...) ST_B2(v16u8, __VA_ARGS__) -#define ST_B4(RTYPE, in0, in1, in2, in3, pdst, stride) \ -{ \ - ST_B2(RTYPE, in0, in1, (pdst), stride); \ - ST_B2(RTYPE, in2, in3, (pdst) + 2 * stride, stride); \ -} -#define ST_UB4(...) ST_B4(v16u8, __VA_ARGS__) - -#define ADD2(in0, in1, in2, in3, out0, out1) \ -{ \ - out0 = in0 + in1; \ - out1 = in2 + in3; \ -} -#define ADD3(in0, in1, in2, in3, in4, in5, \ - out0, out1, out2) \ -{ \ - ADD2(in0, in1, in2, in3, out0, out1); \ - out2 = in4 + in5; \ -} -#define ADD4(in0, in1, in2, in3, in4, in5, in6, in7, \ - out0, out1, out2, out3) \ -{ \ - ADD2(in0, in1, in2, in3, out0, out1); \ - ADD2(in4, in5, in6, in7, out2, out3); \ -} - -#define ILVR_B2(RTYPE, in0, in1, in2, in3, out0, out1) \ -{ \ - out0 = (RTYPE) __msa_ilvr_b((v16i8) in0, (v16i8) in1); \ - out1 = (RTYPE) __msa_ilvr_b((v16i8) in2, (v16i8) in3); \ -} -#define ILVR_B2_SH(...) ILVR_B2(v8i16, __VA_ARGS__) - -#define HSUB_UB2(RTYPE, in0, in1, out0, out1) \ -{ \ - out0 = (RTYPE) __msa_hsub_u_h((v16u8) in0, (v16u8) in0); \ - out1 = (RTYPE) __msa_hsub_u_h((v16u8) in1, (v16u8) in1); \ -} -#define HSUB_UB2_SH(...) HSUB_UB2(v8i16, __VA_ARGS__) - -#define SLDI_B2_0(RTYPE, in0, in1, out0, out1, slide_val) \ -{ \ - v16i8 zero_m = { 0 }; \ - out0 = (RTYPE) __msa_sldi_b((v16i8) zero_m, (v16i8) in0, slide_val); \ - out1 = (RTYPE) __msa_sldi_b((v16i8) zero_m, (v16i8) in1, slide_val); \ -} -#define SLDI_B2_0_UB(...) SLDI_B2_0(v16u8, __VA_ARGS__) - -#define SLDI_B3_0(RTYPE, in0, in1, in2, out0, out1, out2, slide_val) \ -{ \ - v16i8 zero_m = { 0 }; \ - SLDI_B2_0(RTYPE, in0, in1, out0, out1, slide_val); \ - out2 = (RTYPE) __msa_sldi_b((v16i8) zero_m, (v16i8) in2, slide_val); \ -} -#define SLDI_B3_0_UB(...) SLDI_B3_0(v16u8, __VA_ARGS__) - -#define ILVEV_W2(RTYPE, in0, in1, in2, in3, out0, out1) \ -{ \ - out0 = (RTYPE) __msa_ilvev_w((v4i32) in1, (v4i32) in0); \ - out1 = (RTYPE) __msa_ilvev_w((v4i32) in3, (v4i32) in2); \ -} -#define ILVEV_W2_UB(...) ILVEV_W2(v16u8, __VA_ARGS__) - -#define ADD_ABS_H3(RTYPE, in0, in1, in2, out0, out1, out2) \ -{ \ - RTYPE zero = {0}; \ - \ - out0 = __msa_add_a_h((v8i16) zero, in0); \ - out1 = __msa_add_a_h((v8i16) zero, in1); \ - out2 = __msa_add_a_h((v8i16) zero, in2); \ -} -#define ADD_ABS_H3_SH(...) ADD_ABS_H3(v8i16, __VA_ARGS__) - -#define VSHF_B2(RTYPE, in0, in1, in2, in3, mask0, mask1, out0, out1) \ -{ \ - out0 = (RTYPE) __msa_vshf_b((v16i8) mask0, (v16i8) in1, (v16i8) in0); \ - out1 = (RTYPE) __msa_vshf_b((v16i8) mask1, (v16i8) in3, (v16i8) in2); \ -} -#define VSHF_B2_UB(...) VSHF_B2(v16u8, __VA_ARGS__) - -#define CMP_AND_SELECT(inp0, inp1, inp2, inp3, inp4, inp5, out0) \ -{ \ - v8i16 _sel_h0, _sel_h1; \ - v16u8 _sel_b0, _sel_b1; \ - _sel_h0 = (v8i16) __msa_clt_u_h((v8u16) inp1, (v8u16) inp0); \ - _sel_b0 = (v16u8) __msa_pckev_b((v16i8) _sel_h0, (v16i8) _sel_h0); \ - inp0 = (v8i16) __msa_bmnz_v((v16u8) inp0, (v16u8) inp1, (v16u8) _sel_h0); \ - inp4 = (v16u8) __msa_bmnz_v(inp3, inp4, _sel_b0); \ - _sel_h1 = (v8i16) __msa_clt_u_h((v8u16) inp2, (v8u16) inp0); \ - _sel_b1 = (v16u8) __msa_pckev_b((v16i8) _sel_h1, (v16i8) _sel_h1); \ - inp4 = (v16u8) __msa_bmnz_v(inp4, inp5, _sel_b1); \ - out0 += inp4; \ -} - -void png_read_filter_row_up_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i, cnt, cnt16, cnt32; - png_size_t istop = row_info->rowbytes; - png_bytep rp = row; - png_const_bytep pp = prev_row; - v16u8 src0, src1, src2, src3, src4, src5, src6, src7; - - for (i = 0; i < (istop >> 6); i++) - { - LD_UB4(rp, 16, src0, src1, src2, src3); - LD_UB4(pp, 16, src4, src5, src6, src7); - pp += 64; - - ADD4(src0, src4, src1, src5, src2, src6, src3, src7, - src0, src1, src2, src3); - - ST_UB4(src0, src1, src2, src3, rp, 16); - rp += 64; - } - - if (istop & 0x3F) - { - cnt32 = istop & 0x20; - cnt16 = istop & 0x10; - cnt = istop & 0xF; - - if(cnt32) - { - if (cnt16 && cnt) - { - LD_UB4(rp, 16, src0, src1, src2, src3); - LD_UB4(pp, 16, src4, src5, src6, src7); - - ADD4(src0, src4, src1, src5, src2, src6, src3, src7, - src0, src1, src2, src3); - - ST_UB4(src0, src1, src2, src3, rp, 16); - rp += 64; - } - else if (cnt16 || cnt) - { - LD_UB2(rp, 16, src0, src1); - LD_UB2(pp, 16, src4, src5); - pp += 32; - src2 = LD_UB(rp + 32); - src6 = LD_UB(pp); - - ADD3(src0, src4, src1, src5, src2, src6, src0, src1, src2); - - ST_UB2(src0, src1, rp, 16); - rp += 32; - ST_UB(src2, rp); - rp += 16; - } - else - { - LD_UB2(rp, 16, src0, src1); - LD_UB2(pp, 16, src4, src5); - - ADD2(src0, src4, src1, src5, src0, src1); - - ST_UB2(src0, src1, rp, 16); - rp += 32; - } - } - else if (cnt16 && cnt) - { - LD_UB2(rp, 16, src0, src1); - LD_UB2(pp, 16, src4, src5); - - ADD2(src0, src4, src1, src5, src0, src1); - - ST_UB2(src0, src1, rp, 16); - rp += 32; - } - else if (cnt16 || cnt) - { - src0 = LD_UB(rp); - src4 = LD_UB(pp); - pp += 16; - - src0 += src4; - - ST_UB(src0, rp); - rp += 16; - } - } -} - -void png_read_filter_row_sub4_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t count; - png_size_t istop = row_info->rowbytes; - png_bytep src = row; - png_bytep nxt = row + 4; - int32_t inp0; - v16u8 src0, src1, src2, src3, src4; - v16u8 dst0, dst1; - v16u8 zero = { 0 }; - - istop -= 4; - - inp0 = LW(src); - src += 4; - src0 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp0); - - for (count = 0; count < istop; count += 16) - { - src1 = LD_UB(src); - src += 16; - - src2 = (v16u8) __msa_sldi_b((v16i8) zero, (v16i8) src1, 4); - src3 = (v16u8) __msa_sldi_b((v16i8) zero, (v16i8) src1, 8); - src4 = (v16u8) __msa_sldi_b((v16i8) zero, (v16i8) src1, 12); - src1 += src0; - src2 += src1; - src3 += src2; - src4 += src3; - src0 = src4; - ILVEV_W2_UB(src1, src2, src3, src4, dst0, dst1); - dst0 = (v16u8) __msa_pckev_d((v2i64) dst1, (v2i64) dst0); - - ST_UB(dst0, nxt); - nxt += 16; - } -} - -void png_read_filter_row_sub3_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t count; - png_size_t istop = row_info->rowbytes; - png_bytep src = row; - png_bytep nxt = row + 3; - int64_t out0; - int32_t inp0, out1; - v16u8 src0, src1, src2, src3, src4, dst0, dst1; - v16u8 zero = { 0 }; - v16i8 mask0 = { 0, 1, 2, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - v16i8 mask1 = { 0, 1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0 }; - - istop -= 3; - - inp0 = LW(src); - src += 3; - src0 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp0); - - for (count = 0; count < istop; count += 12) - { - src1 = LD_UB(src); - src += 12; - - src2 = (v16u8) __msa_sldi_b((v16i8) zero, (v16i8) src1, 3); - src3 = (v16u8) __msa_sldi_b((v16i8) zero, (v16i8) src1, 6); - src4 = (v16u8) __msa_sldi_b((v16i8) zero, (v16i8) src1, 9); - src1 += src0; - src2 += src1; - src3 += src2; - src4 += src3; - src0 = src4; - VSHF_B2_UB(src1, src2, src3, src4, mask0, mask0, dst0, dst1); - dst0 = (v16u8) __msa_vshf_b(mask1, (v16i8) dst1, (v16i8) dst0); - out0 = __msa_copy_s_d((v2i64) dst0, 0); - out1 = __msa_copy_s_w((v4i32) dst0, 2); - - SD(out0, nxt); - nxt += 8; - SW(out1, nxt); - nxt += 4; - } -} - -void png_read_filter_row_avg4_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_bytep src = row; - png_bytep nxt = row; - png_const_bytep pp = prev_row; - png_size_t istop = row_info->rowbytes - 4; - int32_t inp0, inp1, out0; - v16u8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, dst0, dst1; - v16u8 zero = { 0 }; - - inp0 = LW(pp); - pp += 4; - inp1 = LW(src); - src += 4; - src0 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp0); - src1 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp1); - src0 = (v16u8) MSA_SRLI_B(src0, 1); - src1 += src0; - out0 = __msa_copy_s_w((v4i32) src1, 0); - SW(out0, nxt); - nxt += 4; - - for (i = 0; i < istop; i += 16) - { - src2 = LD_UB(pp); - pp += 16; - src6 = LD_UB(src); - src += 16; - - SLDI_B2_0_UB(src2, src6, src3, src7, 4); - SLDI_B2_0_UB(src2, src6, src4, src8, 8); - SLDI_B2_0_UB(src2, src6, src5, src9, 12); - src2 = __msa_ave_u_b(src2, src1); - src6 += src2; - src3 = __msa_ave_u_b(src3, src6); - src7 += src3; - src4 = __msa_ave_u_b(src4, src7); - src8 += src4; - src5 = __msa_ave_u_b(src5, src8); - src9 += src5; - src1 = src9; - ILVEV_W2_UB(src6, src7, src8, src9, dst0, dst1); - dst0 = (v16u8) __msa_pckev_d((v2i64) dst1, (v2i64) dst0); - - ST_UB(dst0, nxt); - nxt += 16; - } -} - -void png_read_filter_row_avg3_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_bytep src = row; - png_bytep nxt = row; - png_const_bytep pp = prev_row; - png_size_t istop = row_info->rowbytes - 3; - int64_t out0; - int32_t inp0, inp1, out1; - int16_t out2; - v16u8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, dst0, dst1; - v16u8 zero = { 0 }; - v16i8 mask0 = { 0, 1, 2, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - v16i8 mask1 = { 0, 1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0 }; - - inp0 = LW(pp); - pp += 3; - inp1 = LW(src); - src += 3; - src0 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp0); - src1 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp1); - src0 = (v16u8) MSA_SRLI_B(src0, 1); - src1 += src0; - out2 = __msa_copy_s_h((v8i16) src1, 0); - SH(out2, nxt); - nxt += 2; - nxt[0] = src1[2]; - nxt++; - - for (i = 0; i < istop; i += 12) - { - src2 = LD_UB(pp); - pp += 12; - src6 = LD_UB(src); - src += 12; - - SLDI_B2_0_UB(src2, src6, src3, src7, 3); - SLDI_B2_0_UB(src2, src6, src4, src8, 6); - SLDI_B2_0_UB(src2, src6, src5, src9, 9); - src2 = __msa_ave_u_b(src2, src1); - src6 += src2; - src3 = __msa_ave_u_b(src3, src6); - src7 += src3; - src4 = __msa_ave_u_b(src4, src7); - src8 += src4; - src5 = __msa_ave_u_b(src5, src8); - src9 += src5; - src1 = src9; - VSHF_B2_UB(src6, src7, src8, src9, mask0, mask0, dst0, dst1); - dst0 = (v16u8) __msa_vshf_b(mask1, (v16i8) dst1, (v16i8) dst0); - out0 = __msa_copy_s_d((v2i64) dst0, 0); - out1 = __msa_copy_s_w((v4i32) dst0, 2); - - SD(out0, nxt); - nxt += 8; - SW(out1, nxt); - nxt += 4; - } -} - -void png_read_filter_row_paeth4_msa(png_row_infop row_info, - png_bytep row, - png_const_bytep prev_row) -{ - int32_t count, rp_end; - png_bytep nxt; - png_const_bytep prev_nxt; - int32_t inp0, inp1, res0; - v16u8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9; - v16u8 src10, src11, src12, src13, dst0, dst1; - v8i16 vec0, vec1, vec2; - v16u8 zero = { 0 }; - - nxt = row; - prev_nxt = prev_row; - - inp0 = LW(nxt); - inp1 = LW(prev_nxt); - prev_nxt += 4; - src0 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp0); - src1 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp1); - - src1 += src0; - res0 = __msa_copy_s_w((v4i32) src1, 0); - - SW(res0, nxt); - nxt += 4; - - /* Remainder */ - rp_end = row_info->rowbytes - 4; - - for (count = 0; count < rp_end; count += 16) - { - src2 = LD_UB(prev_nxt); - prev_nxt += 16; - src6 = LD_UB(prev_row); - prev_row += 16; - src10 = LD_UB(nxt); - - SLDI_B3_0_UB(src2, src6, src10, src3, src7, src11, 4); - SLDI_B3_0_UB(src2, src6, src10, src4, src8, src12, 8); - SLDI_B3_0_UB(src2, src6, src10, src5, src9, src13, 12); - ILVR_B2_SH(src2, src6, src1, src6, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src1, src2, src6, src10); - ILVR_B2_SH(src3, src7, src10, src7, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src10, src3, src7, src11); - ILVR_B2_SH(src4, src8, src11, src8, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src11, src4, src8, src12); - ILVR_B2_SH(src5, src9, src12, src9, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src12, src5, src9, src13); - src1 = src13; - ILVEV_W2_UB(src10, src11, src12, src1, dst0, dst1); - dst0 = (v16u8) __msa_pckev_d((v2i64) dst1, (v2i64) dst0); - - ST_UB(dst0, nxt); - nxt += 16; - } -} - -void png_read_filter_row_paeth3_msa(png_row_infop row_info, - png_bytep row, - png_const_bytep prev_row) -{ - int32_t count, rp_end; - png_bytep nxt; - png_const_bytep prev_nxt; - int64_t out0; - int32_t inp0, inp1, out1; - int16_t out2; - v16u8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, dst0, dst1; - v16u8 src10, src11, src12, src13; - v8i16 vec0, vec1, vec2; - v16u8 zero = { 0 }; - v16i8 mask0 = { 0, 1, 2, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - v16i8 mask1 = { 0, 1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0 }; - - nxt = row; - prev_nxt = prev_row; - - inp0 = LW(nxt); - inp1 = LW(prev_nxt); - prev_nxt += 3; - src0 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp0); - src1 = (v16u8) __msa_insert_w((v4i32) zero, 0, inp1); - - src1 += src0; - out2 = __msa_copy_s_h((v8i16) src1, 0); - - SH(out2, nxt); - nxt += 2; - nxt[0] = src1[2]; - nxt++; - - /* Remainder */ - rp_end = row_info->rowbytes - 3; - - for (count = 0; count < rp_end; count += 12) - { - src2 = LD_UB(prev_nxt); - prev_nxt += 12; - src6 = LD_UB(prev_row); - prev_row += 12; - src10 = LD_UB(nxt); - - SLDI_B3_0_UB(src2, src6, src10, src3, src7, src11, 3); - SLDI_B3_0_UB(src2, src6, src10, src4, src8, src12, 6); - SLDI_B3_0_UB(src2, src6, src10, src5, src9, src13, 9); - ILVR_B2_SH(src2, src6, src1, src6, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src1, src2, src6, src10); - ILVR_B2_SH(src3, src7, src10, src7, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src10, src3, src7, src11); - ILVR_B2_SH(src4, src8, src11, src8, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src11, src4, src8, src12); - ILVR_B2_SH(src5, src9, src12, src9, vec0, vec1); - HSUB_UB2_SH(vec0, vec1, vec0, vec1); - vec2 = vec0 + vec1; - ADD_ABS_H3_SH(vec0, vec1, vec2, vec0, vec1, vec2); - CMP_AND_SELECT(vec0, vec1, vec2, src12, src5, src9, src13); - src1 = src13; - VSHF_B2_UB(src10, src11, src12, src13, mask0, mask0, dst0, dst1); - dst0 = (v16u8) __msa_vshf_b(mask1, (v16i8) dst1, (v16i8) dst0); - out0 = __msa_copy_s_d((v2i64) dst0, 0); - out1 = __msa_copy_s_w((v4i32) dst0, 2); - - SD(out0, nxt); - nxt += 8; - SW(out1, nxt); - nxt += 4; - } -} - -#endif /* PNG_MIPS_MSA_OPT > 0 */ -#endif /* PNG_MIPS_MSA_IMPLEMENTATION == 1 (intrinsics) */ -#endif /* READ */ diff --git a/src/png/libpng/mips/mips_init.c b/src/png/libpng/mips/mips_init.c deleted file mode 100644 index 0bfb7a32e..000000000 --- a/src/png/libpng/mips/mips_init.c +++ /dev/null @@ -1,129 +0,0 @@ - -/* mips_init.c - MSA optimised filter functions - * - * Copyright (c) 2016 Glenn Randers-Pehrson - * Written by Mandar Sahastrabuddhe, 2016. - * Last changed in libpng 1.6.25 [September 1, 2016] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ -/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are - * called. - */ -#define _POSIX_SOURCE 1 - -#include -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -#if PNG_MIPS_MSA_OPT > 0 -#ifdef PNG_MIPS_MSA_CHECK_SUPPORTED /* Do run-time checks */ -/* WARNING: it is strongly recommended that you do not build libpng with - * run-time checks for CPU features if at all possible. In the case of the MIPS - * MSA instructions there is no processor-specific way of detecting the - * presence of the required support, therefore run-time detection is extremely - * OS specific. - * - * You may set the macro PNG_MIPS_MSA_FILE to the file name of file containing - * a fragment of C source code which defines the png_have_msa function. There - * are a number of implementations in contrib/mips-msa, but the only one that - * has partial support is contrib/mips-msa/linux.c - a generic Linux - * implementation which reads /proc/cpufino. - */ -#ifndef PNG_MIPS_MSA_FILE -# ifdef __linux__ -# define PNG_MIPS_MSA_FILE "contrib/mips-msa/linux.c" -# endif -#endif - -#ifdef PNG_MIPS_MSA_FILE - -#include /* for sig_atomic_t */ -static int png_have_msa(png_structp png_ptr); -#include PNG_MIPS_MSA_FILE - -#else /* PNG_MIPS_MSA_FILE */ -# error "PNG_MIPS_MSA_FILE undefined: no support for run-time MIPS MSA checks" -#endif /* PNG_MIPS_MSA_FILE */ -#endif /* PNG_MIPS_MSA_CHECK_SUPPORTED */ - -#ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" -#endif - -void -png_init_filter_functions_msa(png_structp pp, unsigned int bpp) -{ - /* The switch statement is compiled in for MIPS_MSA_API, the call to - * png_have_msa is compiled in for MIPS_MSA_CHECK. If both are defined - * the check is only performed if the API has not set the MSA option on - * or off explicitly. In this case the check controls what happens. - */ - -#ifdef PNG_MIPS_MSA_API_SUPPORTED - switch ((pp->options >> PNG_MIPS_MSA) & 3) - { - case PNG_OPTION_UNSET: - /* Allow the run-time check to execute if it has been enabled - - * thus both API and CHECK can be turned on. If it isn't supported - * this case will fall through to the 'default' below, which just - * returns. - */ -#endif /* PNG_MIPS_MSA_API_SUPPORTED */ -#ifdef PNG_MIPS_MSA_CHECK_SUPPORTED - { - static volatile sig_atomic_t no_msa = -1; /* not checked */ - - if (no_msa < 0) - no_msa = !png_have_msa(pp); - - if (no_msa) - return; - } -#ifdef PNG_MIPS_MSA_API_SUPPORTED - break; -#endif -#endif /* PNG_MIPS_MSA_CHECK_SUPPORTED */ - -#ifdef PNG_MIPS_MSA_API_SUPPORTED - default: /* OFF or INVALID */ - return; - - case PNG_OPTION_ON: - /* Option turned on */ - break; - } -#endif - - /* IMPORTANT: any new external functions used here must be declared using - * PNG_INTERNAL_FUNCTION in ../pngpriv.h. This is required so that the - * 'prefix' option to configure works: - * - * ./configure --with-libpng-prefix=foobar_ - * - * Verify you have got this right by running the above command, doing a build - * and examining pngprefix.h; it must contain a #define for every external - * function you add. (Notice that this happens automatically for the - * initialization function.) - */ - pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_msa; - - if (bpp == 3) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_msa; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_msa; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth3_msa; - } - - else if (bpp == 4) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_msa; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_msa; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth4_msa; - } -} -#endif /* PNG_MIPS_MSA_OPT > 0 */ -#endif /* READ */ diff --git a/src/png/libpng/png.c b/src/png/libpng/png.c deleted file mode 100644 index ff02c5651..000000000 --- a/src/png/libpng/png.c +++ /dev/null @@ -1,4614 +0,0 @@ - -/* png.c - location for general purpose libpng functions - * - * Last changed in libpng 1.6.33 [September 28, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -/* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_34 Your_png_h_is_not_version_1_6_34; - -#ifdef __GNUC__ -/* The version tests may need to be added to, but the problem warning has - * consistently been fixed in GCC versions which obtain wide-spread release. - * The problem is that many versions of GCC rearrange comparison expressions in - * the optimizer in such a way that the results of the comparison will change - * if signed integer overflow occurs. Such comparisons are not permitted in - * ANSI C90, however GCC isn't clever enough to work out that that do not occur - * below in png_ascii_from_fp and png_muldiv, so it produces a warning with - * -Wextra. Unfortunately this is highly dependent on the optimizer and the - * machine architecture so the warning comes and goes unpredictably and is - * impossible to "fix", even were that a good idea. - */ -#if __GNUC__ == 7 && __GNUC_MINOR__ == 1 -#define GCC_STRICT_OVERFLOW 1 -#endif /* GNU 7.1.x */ -#endif /* GNU */ -#ifndef GCC_STRICT_OVERFLOW -#define GCC_STRICT_OVERFLOW 0 -#endif - -/* Tells libpng that we have already handled the first "num_bytes" bytes - * of the PNG file signature. If the PNG data is embedded into another - * stream we can set num_bytes = 8 so that libpng will not attempt to read - * or write any of the magic bytes before it starts on the IHDR. - */ - -#ifdef PNG_READ_SUPPORTED -void PNGAPI -png_set_sig_bytes(png_structrp png_ptr, int num_bytes) -{ - unsigned int nb = (unsigned int)num_bytes; - - png_debug(1, "in png_set_sig_bytes"); - - if (png_ptr == NULL) - return; - - if (num_bytes < 0) - nb = 0; - - if (nb > 8) - png_error(png_ptr, "Too many bytes for PNG signature"); - - png_ptr->sig_bytes = (png_byte)nb; -} - -/* Checks whether the supplied bytes match the PNG signature. We allow - * checking less than the full 8-byte signature so that those apps that - * already read the first few bytes of a file to determine the file type - * can simply check the remaining bytes for extra assurance. Returns - * an integer less than, equal to, or greater than zero if sig is found, - * respectively, to be less than, to match, or be greater than the correct - * PNG signature (this is the same behavior as strcmp, memcmp, etc). - */ -int PNGAPI -png_sig_cmp(png_const_bytep sig, png_size_t start, png_size_t num_to_check) -{ - png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10}; - - if (num_to_check > 8) - num_to_check = 8; - - else if (num_to_check < 1) - return (-1); - - if (start > 7) - return (-1); - - if (start + num_to_check > 8) - num_to_check = 8 - start; - - return ((int)(memcmp(&sig[start], &png_signature[start], num_to_check))); -} - -#endif /* READ */ - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) -/* Function to allocate memory for zlib */ -PNG_FUNCTION(voidpf /* PRIVATE */, -png_zalloc,(voidpf png_ptr, uInt items, uInt size),PNG_ALLOCATED) -{ - png_alloc_size_t num_bytes = size; - - if (png_ptr == NULL) - return NULL; - - if (items >= (~(png_alloc_size_t)0)/size) - { - png_warning (png_voidcast(png_structrp, png_ptr), - "Potential overflow in png_zalloc()"); - return NULL; - } - - num_bytes *= items; - return png_malloc_warn(png_voidcast(png_structrp, png_ptr), num_bytes); -} - -/* Function to free memory for zlib */ -void /* PRIVATE */ -png_zfree(voidpf png_ptr, voidpf ptr) -{ - png_free(png_voidcast(png_const_structrp,png_ptr), ptr); -} - -/* Reset the CRC variable to 32 bits of 1's. Care must be taken - * in case CRC is > 32 bits to leave the top bits 0. - */ -void /* PRIVATE */ -png_reset_crc(png_structrp png_ptr) -{ - /* The cast is safe because the crc is a 32-bit value. */ - png_ptr->crc = (png_uint_32)crc32(0, Z_NULL, 0); -} - -/* Calculate the CRC over a section of data. We can only pass as - * much data to this routine as the largest single buffer size. We - * also check that this data will actually be used before going to the - * trouble of calculating it. - */ -void /* PRIVATE */ -png_calculate_crc(png_structrp png_ptr, png_const_bytep ptr, png_size_t length) -{ - int need_crc = 1; - - if (PNG_CHUNK_ANCILLARY(png_ptr->chunk_name) != 0) - { - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == - (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) - need_crc = 0; - } - - else /* critical */ - { - if ((png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) != 0) - need_crc = 0; - } - - /* 'uLong' is defined in zlib.h as unsigned long; this means that on some - * systems it is a 64-bit value. crc32, however, returns 32 bits so the - * following cast is safe. 'uInt' may be no more than 16 bits, so it is - * necessary to perform a loop here. - */ - if (need_crc != 0 && length > 0) - { - uLong crc = png_ptr->crc; /* Should never issue a warning */ - - do - { - uInt safe_length = (uInt)length; -#ifndef __COVERITY__ - if (safe_length == 0) - safe_length = (uInt)-1; /* evil, but safe */ -#endif - - crc = crc32(crc, ptr, safe_length); - - /* The following should never issue compiler warnings; if they do the - * target system has characteristics that will probably violate other - * assumptions within the libpng code. - */ - ptr += safe_length; - length -= safe_length; - } - while (length > 0); - - /* And the following is always safe because the crc is only 32 bits. */ - png_ptr->crc = (png_uint_32)crc; - } -} - -/* Check a user supplied version number, called from both read and write - * functions that create a png_struct. - */ -int -png_user_version_check(png_structrp png_ptr, png_const_charp user_png_ver) -{ - /* Libpng versions 1.0.0 and later are binary compatible if the version - * string matches through the second '.'; we must recompile any - * applications that use any older library version. - */ - - if (user_png_ver != NULL) - { - int i = -1; - int found_dots = 0; - - do - { - i++; - if (user_png_ver[i] != PNG_LIBPNG_VER_STRING[i]) - png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; - if (user_png_ver[i] == '.') - found_dots++; - } while (found_dots < 2 && user_png_ver[i] != 0 && - PNG_LIBPNG_VER_STRING[i] != 0); - } - - else - png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; - - if ((png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH) != 0) - { -#ifdef PNG_WARNINGS_SUPPORTED - size_t pos = 0; - char m[128]; - - pos = png_safecat(m, (sizeof m), pos, - "Application built with libpng-"); - pos = png_safecat(m, (sizeof m), pos, user_png_ver); - pos = png_safecat(m, (sizeof m), pos, " but running with "); - pos = png_safecat(m, (sizeof m), pos, PNG_LIBPNG_VER_STRING); - PNG_UNUSED(pos) - - png_warning(png_ptr, m); -#endif - -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - png_ptr->flags = 0; -#endif - - return 0; - } - - /* Success return. */ - return 1; -} - -/* Generic function to create a png_struct for either read or write - this - * contains the common initialization. - */ -PNG_FUNCTION(png_structp /* PRIVATE */, -png_create_png_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) -{ - png_struct create_struct; -# ifdef PNG_SETJMP_SUPPORTED - jmp_buf create_jmp_buf; -# endif - - /* This temporary stack-allocated structure is used to provide a place to - * build enough context to allow the user provided memory allocator (if any) - * to be called. - */ - memset(&create_struct, 0, (sizeof create_struct)); - - /* Added at libpng-1.2.6 */ -# ifdef PNG_USER_LIMITS_SUPPORTED - create_struct.user_width_max = PNG_USER_WIDTH_MAX; - create_struct.user_height_max = PNG_USER_HEIGHT_MAX; - -# ifdef PNG_USER_CHUNK_CACHE_MAX - /* Added at libpng-1.2.43 and 1.4.0 */ - create_struct.user_chunk_cache_max = PNG_USER_CHUNK_CACHE_MAX; -# endif - -# ifdef PNG_USER_CHUNK_MALLOC_MAX - /* Added at libpng-1.2.43 and 1.4.1, required only for read but exists - * in png_struct regardless. - */ - create_struct.user_chunk_malloc_max = PNG_USER_CHUNK_MALLOC_MAX; -# endif -# endif - - /* The following two API calls simply set fields in png_struct, so it is safe - * to do them now even though error handling is not yet set up. - */ -# ifdef PNG_USER_MEM_SUPPORTED - png_set_mem_fn(&create_struct, mem_ptr, malloc_fn, free_fn); -# else - PNG_UNUSED(mem_ptr) - PNG_UNUSED(malloc_fn) - PNG_UNUSED(free_fn) -# endif - - /* (*error_fn) can return control to the caller after the error_ptr is set, - * this will result in a memory leak unless the error_fn does something - * extremely sophisticated. The design lacks merit but is implicit in the - * API. - */ - png_set_error_fn(&create_struct, error_ptr, error_fn, warn_fn); - -# ifdef PNG_SETJMP_SUPPORTED - if (!setjmp(create_jmp_buf)) -# endif - { -# ifdef PNG_SETJMP_SUPPORTED - /* Temporarily fake out the longjmp information until we have - * successfully completed this function. This only works if we have - * setjmp() support compiled in, but it is safe - this stuff should - * never happen. - */ - create_struct.jmp_buf_ptr = &create_jmp_buf; - create_struct.jmp_buf_size = 0; /*stack allocation*/ - create_struct.longjmp_fn = longjmp; -# endif - /* Call the general version checker (shared with read and write code): - */ - if (png_user_version_check(&create_struct, user_png_ver) != 0) - { - png_structrp png_ptr = png_voidcast(png_structrp, - png_malloc_warn(&create_struct, (sizeof *png_ptr))); - - if (png_ptr != NULL) - { - /* png_ptr->zstream holds a back-pointer to the png_struct, so - * this can only be done now: - */ - create_struct.zstream.zalloc = png_zalloc; - create_struct.zstream.zfree = png_zfree; - create_struct.zstream.opaque = png_ptr; - -# ifdef PNG_SETJMP_SUPPORTED - /* Eliminate the local error handling: */ - create_struct.jmp_buf_ptr = NULL; - create_struct.jmp_buf_size = 0; - create_struct.longjmp_fn = 0; -# endif - - *png_ptr = create_struct; - - /* This is the successful return point */ - return png_ptr; - } - } - } - - /* A longjmp because of a bug in the application storage allocator or a - * simple failure to allocate the png_struct. - */ - return NULL; -} - -/* Allocate the memory for an info_struct for the application. */ -PNG_FUNCTION(png_infop,PNGAPI -png_create_info_struct,(png_const_structrp png_ptr),PNG_ALLOCATED) -{ - png_inforp info_ptr; - - png_debug(1, "in png_create_info_struct"); - - if (png_ptr == NULL) - return NULL; - - /* Use the internal API that does not (or at least should not) error out, so - * that this call always returns ok. The application typically sets up the - * error handling *after* creating the info_struct because this is the way it - * has always been done in 'example.c'. - */ - info_ptr = png_voidcast(png_inforp, png_malloc_base(png_ptr, - (sizeof *info_ptr))); - - if (info_ptr != NULL) - memset(info_ptr, 0, (sizeof *info_ptr)); - - return info_ptr; -} - -/* This function frees the memory associated with a single info struct. - * Normally, one would use either png_destroy_read_struct() or - * png_destroy_write_struct() to free an info struct, but this may be - * useful for some applications. From libpng 1.6.0 this function is also used - * internally to implement the png_info release part of the 'struct' destroy - * APIs. This ensures that all possible approaches free the same data (all of - * it). - */ -void PNGAPI -png_destroy_info_struct(png_const_structrp png_ptr, png_infopp info_ptr_ptr) -{ - png_inforp info_ptr = NULL; - - png_debug(1, "in png_destroy_info_struct"); - - if (png_ptr == NULL) - return; - - if (info_ptr_ptr != NULL) - info_ptr = *info_ptr_ptr; - - if (info_ptr != NULL) - { - /* Do this first in case of an error below; if the app implements its own - * memory management this can lead to png_free calling png_error, which - * will abort this routine and return control to the app error handler. - * An infinite loop may result if it then tries to free the same info - * ptr. - */ - *info_ptr_ptr = NULL; - - png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); - memset(info_ptr, 0, (sizeof *info_ptr)); - png_free(png_ptr, info_ptr); - } -} - -/* Initialize the info structure. This is now an internal function (0.89) - * and applications using it are urged to use png_create_info_struct() - * instead. Use deprecated in 1.6.0, internal use removed (used internally it - * is just a memset). - * - * NOTE: it is almost inconceivable that this API is used because it bypasses - * the user-memory mechanism and the user error handling/warning mechanisms in - * those cases where it does anything other than a memset. - */ -PNG_FUNCTION(void,PNGAPI -png_info_init_3,(png_infopp ptr_ptr, png_size_t png_info_struct_size), - PNG_DEPRECATED) -{ - png_inforp info_ptr = *ptr_ptr; - - png_debug(1, "in png_info_init_3"); - - if (info_ptr == NULL) - return; - - if ((sizeof (png_info)) > png_info_struct_size) - { - *ptr_ptr = NULL; - /* The following line is why this API should not be used: */ - free(info_ptr); - info_ptr = png_voidcast(png_inforp, png_malloc_base(NULL, - (sizeof *info_ptr))); - if (info_ptr == NULL) - return; - *ptr_ptr = info_ptr; - } - - /* Set everything to 0 */ - memset(info_ptr, 0, (sizeof *info_ptr)); -} - -/* The following API is not called internally */ -void PNGAPI -png_data_freer(png_const_structrp png_ptr, png_inforp info_ptr, - int freer, png_uint_32 mask) -{ - png_debug(1, "in png_data_freer"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (freer == PNG_DESTROY_WILL_FREE_DATA) - info_ptr->free_me |= mask; - - else if (freer == PNG_USER_WILL_FREE_DATA) - info_ptr->free_me &= ~mask; - - else - png_error(png_ptr, "Unknown freer parameter in png_data_freer"); -} - -void PNGAPI -png_free_data(png_const_structrp png_ptr, png_inforp info_ptr, png_uint_32 mask, - int num) -{ - png_debug(1, "in png_free_data"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - -#ifdef PNG_TEXT_SUPPORTED - /* Free text item num or (if num == -1) all text items */ - if (info_ptr->text != NULL && - ((mask & PNG_FREE_TEXT) & info_ptr->free_me) != 0) - { - if (num != -1) - { - png_free(png_ptr, info_ptr->text[num].key); - info_ptr->text[num].key = NULL; - } - - else - { - int i; - - for (i = 0; i < info_ptr->num_text; i++) - png_free(png_ptr, info_ptr->text[i].key); - - png_free(png_ptr, info_ptr->text); - info_ptr->text = NULL; - info_ptr->num_text = 0; - info_ptr->max_text = 0; - } - } -#endif - -#ifdef PNG_tRNS_SUPPORTED - /* Free any tRNS entry */ - if (((mask & PNG_FREE_TRNS) & info_ptr->free_me) != 0) - { - info_ptr->valid &= ~PNG_INFO_tRNS; - png_free(png_ptr, info_ptr->trans_alpha); - info_ptr->trans_alpha = NULL; - info_ptr->num_trans = 0; - } -#endif - -#ifdef PNG_sCAL_SUPPORTED - /* Free any sCAL entry */ - if (((mask & PNG_FREE_SCAL) & info_ptr->free_me) != 0) - { - png_free(png_ptr, info_ptr->scal_s_width); - png_free(png_ptr, info_ptr->scal_s_height); - info_ptr->scal_s_width = NULL; - info_ptr->scal_s_height = NULL; - info_ptr->valid &= ~PNG_INFO_sCAL; - } -#endif - -#ifdef PNG_pCAL_SUPPORTED - /* Free any pCAL entry */ - if (((mask & PNG_FREE_PCAL) & info_ptr->free_me) != 0) - { - png_free(png_ptr, info_ptr->pcal_purpose); - png_free(png_ptr, info_ptr->pcal_units); - info_ptr->pcal_purpose = NULL; - info_ptr->pcal_units = NULL; - - if (info_ptr->pcal_params != NULL) - { - int i; - - for (i = 0; i < info_ptr->pcal_nparams; i++) - png_free(png_ptr, info_ptr->pcal_params[i]); - - png_free(png_ptr, info_ptr->pcal_params); - info_ptr->pcal_params = NULL; - } - info_ptr->valid &= ~PNG_INFO_pCAL; - } -#endif - -#ifdef PNG_iCCP_SUPPORTED - /* Free any profile entry */ - if (((mask & PNG_FREE_ICCP) & info_ptr->free_me) != 0) - { - png_free(png_ptr, info_ptr->iccp_name); - png_free(png_ptr, info_ptr->iccp_profile); - info_ptr->iccp_name = NULL; - info_ptr->iccp_profile = NULL; - info_ptr->valid &= ~PNG_INFO_iCCP; - } -#endif - -#ifdef PNG_sPLT_SUPPORTED - /* Free a given sPLT entry, or (if num == -1) all sPLT entries */ - if (info_ptr->splt_palettes != NULL && - ((mask & PNG_FREE_SPLT) & info_ptr->free_me) != 0) - { - if (num != -1) - { - png_free(png_ptr, info_ptr->splt_palettes[num].name); - png_free(png_ptr, info_ptr->splt_palettes[num].entries); - info_ptr->splt_palettes[num].name = NULL; - info_ptr->splt_palettes[num].entries = NULL; - } - - else - { - int i; - - for (i = 0; i < info_ptr->splt_palettes_num; i++) - { - png_free(png_ptr, info_ptr->splt_palettes[i].name); - png_free(png_ptr, info_ptr->splt_palettes[i].entries); - } - - png_free(png_ptr, info_ptr->splt_palettes); - info_ptr->splt_palettes = NULL; - info_ptr->splt_palettes_num = 0; - info_ptr->valid &= ~PNG_INFO_sPLT; - } - } -#endif - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED - if (info_ptr->unknown_chunks != NULL && - ((mask & PNG_FREE_UNKN) & info_ptr->free_me) != 0) - { - if (num != -1) - { - png_free(png_ptr, info_ptr->unknown_chunks[num].data); - info_ptr->unknown_chunks[num].data = NULL; - } - - else - { - int i; - - for (i = 0; i < info_ptr->unknown_chunks_num; i++) - png_free(png_ptr, info_ptr->unknown_chunks[i].data); - - png_free(png_ptr, info_ptr->unknown_chunks); - info_ptr->unknown_chunks = NULL; - info_ptr->unknown_chunks_num = 0; - } - } -#endif - -#ifdef PNG_eXIf_SUPPORTED - /* Free any eXIf entry */ - if (((mask & PNG_FREE_EXIF) & info_ptr->free_me) != 0) - { -# ifdef PNG_READ_eXIf_SUPPORTED - if (info_ptr->eXIf_buf) - { - png_free(png_ptr, info_ptr->eXIf_buf); - info_ptr->eXIf_buf = NULL; - } -# endif - if (info_ptr->exif) - { - png_free(png_ptr, info_ptr->exif); - info_ptr->exif = NULL; - } - info_ptr->valid &= ~PNG_INFO_eXIf; - } -#endif - -#ifdef PNG_hIST_SUPPORTED - /* Free any hIST entry */ - if (((mask & PNG_FREE_HIST) & info_ptr->free_me) != 0) - { - png_free(png_ptr, info_ptr->hist); - info_ptr->hist = NULL; - info_ptr->valid &= ~PNG_INFO_hIST; - } -#endif - - /* Free any PLTE entry that was internally allocated */ - if (((mask & PNG_FREE_PLTE) & info_ptr->free_me) != 0) - { - png_free(png_ptr, info_ptr->palette); - info_ptr->palette = NULL; - info_ptr->valid &= ~PNG_INFO_PLTE; - info_ptr->num_palette = 0; - } - -#ifdef PNG_INFO_IMAGE_SUPPORTED - /* Free any image bits attached to the info structure */ - if (((mask & PNG_FREE_ROWS) & info_ptr->free_me) != 0) - { - if (info_ptr->row_pointers != NULL) - { - png_uint_32 row; - for (row = 0; row < info_ptr->height; row++) - png_free(png_ptr, info_ptr->row_pointers[row]); - - png_free(png_ptr, info_ptr->row_pointers); - info_ptr->row_pointers = NULL; - } - info_ptr->valid &= ~PNG_INFO_IDAT; - } -#endif - - if (num != -1) - mask &= ~PNG_FREE_MUL; - - info_ptr->free_me &= ~mask; -} -#endif /* READ || WRITE */ - -/* This function returns a pointer to the io_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy() or png_read_destroy() are called. - */ -png_voidp PNGAPI -png_get_io_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return (NULL); - - return (png_ptr->io_ptr); -} - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) -# ifdef PNG_STDIO_SUPPORTED -/* Initialize the default input/output functions for the PNG file. If you - * use your own read or write routines, you can call either png_set_read_fn() - * or png_set_write_fn() instead of png_init_io(). If you have defined - * PNG_NO_STDIO or otherwise disabled PNG_STDIO_SUPPORTED, you must use a - * function of your own because "FILE *" isn't necessarily available. - */ -void PNGAPI -png_init_io(png_structrp png_ptr, png_FILE_p fp) -{ - png_debug(1, "in png_init_io"); - - if (png_ptr == NULL) - return; - - png_ptr->io_ptr = (png_voidp)fp; -} -# endif - -# ifdef PNG_SAVE_INT_32_SUPPORTED -/* PNG signed integers are saved in 32-bit 2's complement format. ANSI C-90 - * defines a cast of a signed integer to an unsigned integer either to preserve - * the value, if it is positive, or to calculate: - * - * (UNSIGNED_MAX+1) + integer - * - * Where UNSIGNED_MAX is the appropriate maximum unsigned value, so when the - * negative integral value is added the result will be an unsigned value - * correspnding to the 2's complement representation. - */ -void PNGAPI -png_save_int_32(png_bytep buf, png_int_32 i) -{ - png_save_uint_32(buf, (png_uint_32)i); -} -# endif - -# ifdef PNG_TIME_RFC1123_SUPPORTED -/* Convert the supplied time into an RFC 1123 string suitable for use in - * a "Creation Time" or other text-based time string. - */ -int PNGAPI -png_convert_to_rfc1123_buffer(char out[29], png_const_timep ptime) -{ - static PNG_CONST char short_months[12][4] = - {"Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; - - if (out == NULL) - return 0; - - if (ptime->year > 9999 /* RFC1123 limitation */ || - ptime->month == 0 || ptime->month > 12 || - ptime->day == 0 || ptime->day > 31 || - ptime->hour > 23 || ptime->minute > 59 || - ptime->second > 60) - return 0; - - { - size_t pos = 0; - char number_buf[5]; /* enough for a four-digit year */ - -# define APPEND_STRING(string) pos = png_safecat(out, 29, pos, (string)) -# define APPEND_NUMBER(format, value)\ - APPEND_STRING(PNG_FORMAT_NUMBER(number_buf, format, (value))) -# define APPEND(ch) if (pos < 28) out[pos++] = (ch) - - APPEND_NUMBER(PNG_NUMBER_FORMAT_u, (unsigned)ptime->day); - APPEND(' '); - APPEND_STRING(short_months[(ptime->month - 1)]); - APPEND(' '); - APPEND_NUMBER(PNG_NUMBER_FORMAT_u, ptime->year); - APPEND(' '); - APPEND_NUMBER(PNG_NUMBER_FORMAT_02u, (unsigned)ptime->hour); - APPEND(':'); - APPEND_NUMBER(PNG_NUMBER_FORMAT_02u, (unsigned)ptime->minute); - APPEND(':'); - APPEND_NUMBER(PNG_NUMBER_FORMAT_02u, (unsigned)ptime->second); - APPEND_STRING(" +0000"); /* This reliably terminates the buffer */ - PNG_UNUSED (pos) - -# undef APPEND -# undef APPEND_NUMBER -# undef APPEND_STRING - } - - return 1; -} - -# if PNG_LIBPNG_VER < 10700 -/* To do: remove the following from libpng-1.7 */ -/* Original API that uses a private buffer in png_struct. - * Deprecated because it causes png_struct to carry a spurious temporary - * buffer (png_struct::time_buffer), better to have the caller pass this in. - */ -png_const_charp PNGAPI -png_convert_to_rfc1123(png_structrp png_ptr, png_const_timep ptime) -{ - if (png_ptr != NULL) - { - /* The only failure above if png_ptr != NULL is from an invalid ptime */ - if (png_convert_to_rfc1123_buffer(png_ptr->time_buffer, ptime) == 0) - png_warning(png_ptr, "Ignoring invalid time value"); - - else - return png_ptr->time_buffer; - } - - return NULL; -} -# endif /* LIBPNG_VER < 10700 */ -# endif /* TIME_RFC1123 */ - -#endif /* READ || WRITE */ - -png_const_charp PNGAPI -png_get_copyright(png_const_structrp png_ptr) -{ - PNG_UNUSED(png_ptr) /* Silence compiler warning about unused png_ptr */ -#ifdef PNG_STRING_COPYRIGHT - return PNG_STRING_COPYRIGHT -#else -# ifdef __STDC__ - return PNG_STRING_NEWLINE \ - "libpng version 1.6.34 - September 29, 2017" PNG_STRING_NEWLINE \ - "Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson" \ - PNG_STRING_NEWLINE \ - "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ - "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \ - PNG_STRING_NEWLINE; -# else - return "libpng version 1.6.34 - September 29, 2017\ - Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson\ - Copyright (c) 1996-1997 Andreas Dilger\ - Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."; -# endif -#endif -} - -/* The following return the library version as a short string in the - * format 1.0.0 through 99.99.99zz. To get the version of *.h files - * used with your application, print out PNG_LIBPNG_VER_STRING, which - * is defined in png.h. - * Note: now there is no difference between png_get_libpng_ver() and - * png_get_header_ver(). Due to the version_nn_nn_nn typedef guard, - * it is guaranteed that png.c uses the correct version of png.h. - */ -png_const_charp PNGAPI -png_get_libpng_ver(png_const_structrp png_ptr) -{ - /* Version of *.c files used when building libpng */ - return png_get_header_ver(png_ptr); -} - -png_const_charp PNGAPI -png_get_header_ver(png_const_structrp png_ptr) -{ - /* Version of *.h files used when building libpng */ - PNG_UNUSED(png_ptr) /* Silence compiler warning about unused png_ptr */ - return PNG_LIBPNG_VER_STRING; -} - -png_const_charp PNGAPI -png_get_header_version(png_const_structrp png_ptr) -{ - /* Returns longer string containing both version and date */ - PNG_UNUSED(png_ptr) /* Silence compiler warning about unused png_ptr */ -#ifdef __STDC__ - return PNG_HEADER_VERSION_STRING -# ifndef PNG_READ_SUPPORTED - " (NO READ SUPPORT)" -# endif - PNG_STRING_NEWLINE; -#else - return PNG_HEADER_VERSION_STRING; -#endif -} - -#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -/* NOTE: this routine is not used internally! */ -/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth - * large of png_color. This lets grayscale images be treated as - * paletted. Most useful for gamma correction and simplification - * of code. This API is not used internally. - */ -void PNGAPI -png_build_grayscale_palette(int bit_depth, png_colorp palette) -{ - int num_palette; - int color_inc; - int i; - int v; - - png_debug(1, "in png_do_build_grayscale_palette"); - - if (palette == NULL) - return; - - switch (bit_depth) - { - case 1: - num_palette = 2; - color_inc = 0xff; - break; - - case 2: - num_palette = 4; - color_inc = 0x55; - break; - - case 4: - num_palette = 16; - color_inc = 0x11; - break; - - case 8: - num_palette = 256; - color_inc = 1; - break; - - default: - num_palette = 0; - color_inc = 0; - break; - } - - for (i = 0, v = 0; i < num_palette; i++, v += color_inc) - { - palette[i].red = (png_byte)(v & 0xff); - palette[i].green = (png_byte)(v & 0xff); - palette[i].blue = (png_byte)(v & 0xff); - } -} -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -int PNGAPI -png_handle_as_unknown(png_const_structrp png_ptr, png_const_bytep chunk_name) -{ - /* Check chunk_name and return "keep" value if it's on the list, else 0 */ - png_const_bytep p, p_end; - - if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list == 0) - return PNG_HANDLE_CHUNK_AS_DEFAULT; - - p_end = png_ptr->chunk_list; - p = p_end + png_ptr->num_chunk_list*5; /* beyond end */ - - /* The code is the fifth byte after each four byte string. Historically this - * code was always searched from the end of the list, this is no longer - * necessary because the 'set' routine handles duplicate entries correcty. - */ - do /* num_chunk_list > 0, so at least one */ - { - p -= 5; - - if (memcmp(chunk_name, p, 4) == 0) - return p[4]; - } - while (p > p_end); - - /* This means that known chunks should be processed and unknown chunks should - * be handled according to the value of png_ptr->unknown_default; this can be - * confusing because, as a result, there are two levels of defaulting for - * unknown chunks. - */ - return PNG_HANDLE_CHUNK_AS_DEFAULT; -} - -#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) ||\ - defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) -int /* PRIVATE */ -png_chunk_unknown_handling(png_const_structrp png_ptr, png_uint_32 chunk_name) -{ - png_byte chunk_string[5]; - - PNG_CSTRING_FROM_CHUNK(chunk_string, chunk_name); - return png_handle_as_unknown(png_ptr, chunk_string); -} -#endif /* READ_UNKNOWN_CHUNKS || HANDLE_AS_UNKNOWN */ -#endif /* SET_UNKNOWN_CHUNKS */ - -#ifdef PNG_READ_SUPPORTED -/* This function, added to libpng-1.0.6g, is untested. */ -int PNGAPI -png_reset_zstream(png_structrp png_ptr) -{ - if (png_ptr == NULL) - return Z_STREAM_ERROR; - - /* WARNING: this resets the window bits to the maximum! */ - return (inflateReset(&png_ptr->zstream)); -} -#endif /* READ */ - -/* This function was added to libpng-1.0.7 */ -png_uint_32 PNGAPI -png_access_version_number(void) -{ - /* Version of *.c files used when building libpng */ - return((png_uint_32)PNG_LIBPNG_VER); -} - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) -/* Ensure that png_ptr->zstream.msg holds some appropriate error message string. - * If it doesn't 'ret' is used to set it to something appropriate, even in cases - * like Z_OK or Z_STREAM_END where the error code is apparently a success code. - */ -void /* PRIVATE */ -png_zstream_error(png_structrp png_ptr, int ret) -{ - /* Translate 'ret' into an appropriate error string, priority is given to the - * one in zstream if set. This always returns a string, even in cases like - * Z_OK or Z_STREAM_END where the error code is a success code. - */ - if (png_ptr->zstream.msg == NULL) switch (ret) - { - default: - case Z_OK: - png_ptr->zstream.msg = PNGZ_MSG_CAST("unexpected zlib return code"); - break; - - case Z_STREAM_END: - /* Normal exit */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("unexpected end of LZ stream"); - break; - - case Z_NEED_DICT: - /* This means the deflate stream did not have a dictionary; this - * indicates a bogus PNG. - */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("missing LZ dictionary"); - break; - - case Z_ERRNO: - /* gz APIs only: should not happen */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("zlib IO error"); - break; - - case Z_STREAM_ERROR: - /* internal libpng error */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("bad parameters to zlib"); - break; - - case Z_DATA_ERROR: - png_ptr->zstream.msg = PNGZ_MSG_CAST("damaged LZ stream"); - break; - - case Z_MEM_ERROR: - png_ptr->zstream.msg = PNGZ_MSG_CAST("insufficient memory"); - break; - - case Z_BUF_ERROR: - /* End of input or output; not a problem if the caller is doing - * incremental read or write. - */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("truncated"); - break; - - case Z_VERSION_ERROR: - png_ptr->zstream.msg = PNGZ_MSG_CAST("unsupported zlib version"); - break; - - case PNG_UNEXPECTED_ZLIB_RETURN: - /* Compile errors here mean that zlib now uses the value co-opted in - * pngpriv.h for PNG_UNEXPECTED_ZLIB_RETURN; update the switch above - * and change pngpriv.h. Note that this message is "... return", - * whereas the default/Z_OK one is "... return code". - */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("unexpected zlib return"); - break; - } -} - -/* png_convert_size: a PNGAPI but no longer in png.h, so deleted - * at libpng 1.5.5! - */ - -/* Added at libpng version 1.2.34 and 1.4.0 (moved from pngset.c) */ -#ifdef PNG_GAMMA_SUPPORTED /* always set if COLORSPACE */ -static int -png_colorspace_check_gamma(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_fixed_point gAMA, int from) - /* This is called to check a new gamma value against an existing one. The - * routine returns false if the new gamma value should not be written. - * - * 'from' says where the new gamma value comes from: - * - * 0: the new gamma value is the libpng estimate for an ICC profile - * 1: the new gamma value comes from a gAMA chunk - * 2: the new gamma value comes from an sRGB chunk - */ -{ - png_fixed_point gtest; - - if ((colorspace->flags & PNG_COLORSPACE_HAVE_GAMMA) != 0 && - (png_muldiv(>est, colorspace->gamma, PNG_FP_1, gAMA) == 0 || - png_gamma_significant(gtest) != 0)) - { - /* Either this is an sRGB image, in which case the calculated gamma - * approximation should match, or this is an image with a profile and the - * value libpng calculates for the gamma of the profile does not match the - * value recorded in the file. The former, sRGB, case is an error, the - * latter is just a warning. - */ - if ((colorspace->flags & PNG_COLORSPACE_FROM_sRGB) != 0 || from == 2) - { - png_chunk_report(png_ptr, "gamma value does not match sRGB", - PNG_CHUNK_ERROR); - /* Do not overwrite an sRGB value */ - return from == 2; - } - - else /* sRGB tag not involved */ - { - png_chunk_report(png_ptr, "gamma value does not match libpng estimate", - PNG_CHUNK_WARNING); - return from == 1; - } - } - - return 1; -} - -void /* PRIVATE */ -png_colorspace_set_gamma(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_fixed_point gAMA) -{ - /* Changed in libpng-1.5.4 to limit the values to ensure overflow can't - * occur. Since the fixed point representation is asymetrical it is - * possible for 1/gamma to overflow the limit of 21474 and this means the - * gamma value must be at least 5/100000 and hence at most 20000.0. For - * safety the limits here are a little narrower. The values are 0.00016 to - * 6250.0, which are truly ridiculous gamma values (and will produce - * displays that are all black or all white.) - * - * In 1.6.0 this test replaces the ones in pngrutil.c, in the gAMA chunk - * handling code, which only required the value to be >0. - */ - png_const_charp errmsg; - - if (gAMA < 16 || gAMA > 625000000) - errmsg = "gamma value out of range"; - -# ifdef PNG_READ_gAMA_SUPPORTED - /* Allow the application to set the gamma value more than once */ - else if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - (colorspace->flags & PNG_COLORSPACE_FROM_gAMA) != 0) - errmsg = "duplicate"; -# endif - - /* Do nothing if the colorspace is already invalid */ - else if ((colorspace->flags & PNG_COLORSPACE_INVALID) != 0) - return; - - else - { - if (png_colorspace_check_gamma(png_ptr, colorspace, gAMA, - 1/*from gAMA*/) != 0) - { - /* Store this gamma value. */ - colorspace->gamma = gAMA; - colorspace->flags |= - (PNG_COLORSPACE_HAVE_GAMMA | PNG_COLORSPACE_FROM_gAMA); - } - - /* At present if the check_gamma test fails the gamma of the colorspace is - * not updated however the colorspace is not invalidated. This - * corresponds to the case where the existing gamma comes from an sRGB - * chunk or profile. An error message has already been output. - */ - return; - } - - /* Error exit - errmsg has been set. */ - colorspace->flags |= PNG_COLORSPACE_INVALID; - png_chunk_report(png_ptr, errmsg, PNG_CHUNK_WRITE_ERROR); -} - -void /* PRIVATE */ -png_colorspace_sync_info(png_const_structrp png_ptr, png_inforp info_ptr) -{ - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) != 0) - { - /* Everything is invalid */ - info_ptr->valid &= ~(PNG_INFO_gAMA|PNG_INFO_cHRM|PNG_INFO_sRGB| - PNG_INFO_iCCP); - -# ifdef PNG_COLORSPACE_SUPPORTED - /* Clean up the iCCP profile now if it won't be used. */ - png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, -1/*not used*/); -# else - PNG_UNUSED(png_ptr) -# endif - } - - else - { -# ifdef PNG_COLORSPACE_SUPPORTED - /* Leave the INFO_iCCP flag set if the pngset.c code has already set - * it; this allows a PNG to contain a profile which matches sRGB and - * yet still have that profile retrievable by the application. - */ - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_MATCHES_sRGB) != 0) - info_ptr->valid |= PNG_INFO_sRGB; - - else - info_ptr->valid &= ~PNG_INFO_sRGB; - - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - info_ptr->valid |= PNG_INFO_cHRM; - - else - info_ptr->valid &= ~PNG_INFO_cHRM; -# endif - - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) != 0) - info_ptr->valid |= PNG_INFO_gAMA; - - else - info_ptr->valid &= ~PNG_INFO_gAMA; - } -} - -#ifdef PNG_READ_SUPPORTED -void /* PRIVATE */ -png_colorspace_sync(png_const_structrp png_ptr, png_inforp info_ptr) -{ - if (info_ptr == NULL) /* reduce code size; check here not in the caller */ - return; - - info_ptr->colorspace = png_ptr->colorspace; - png_colorspace_sync_info(png_ptr, info_ptr); -} -#endif -#endif /* GAMMA */ - -#ifdef PNG_COLORSPACE_SUPPORTED -/* Added at libpng-1.5.5 to support read and write of true CIEXYZ values for - * cHRM, as opposed to using chromaticities. These internal APIs return - * non-zero on a parameter error. The X, Y and Z values are required to be - * positive and less than 1.0. - */ -static int -png_xy_from_XYZ(png_xy *xy, const png_XYZ *XYZ) -{ - png_int_32 d, dwhite, whiteX, whiteY; - - d = XYZ->red_X + XYZ->red_Y + XYZ->red_Z; - if (png_muldiv(&xy->redx, XYZ->red_X, PNG_FP_1, d) == 0) - return 1; - if (png_muldiv(&xy->redy, XYZ->red_Y, PNG_FP_1, d) == 0) - return 1; - dwhite = d; - whiteX = XYZ->red_X; - whiteY = XYZ->red_Y; - - d = XYZ->green_X + XYZ->green_Y + XYZ->green_Z; - if (png_muldiv(&xy->greenx, XYZ->green_X, PNG_FP_1, d) == 0) - return 1; - if (png_muldiv(&xy->greeny, XYZ->green_Y, PNG_FP_1, d) == 0) - return 1; - dwhite += d; - whiteX += XYZ->green_X; - whiteY += XYZ->green_Y; - - d = XYZ->blue_X + XYZ->blue_Y + XYZ->blue_Z; - if (png_muldiv(&xy->bluex, XYZ->blue_X, PNG_FP_1, d) == 0) - return 1; - if (png_muldiv(&xy->bluey, XYZ->blue_Y, PNG_FP_1, d) == 0) - return 1; - dwhite += d; - whiteX += XYZ->blue_X; - whiteY += XYZ->blue_Y; - - /* The reference white is simply the sum of the end-point (X,Y,Z) vectors, - * thus: - */ - if (png_muldiv(&xy->whitex, whiteX, PNG_FP_1, dwhite) == 0) - return 1; - if (png_muldiv(&xy->whitey, whiteY, PNG_FP_1, dwhite) == 0) - return 1; - - return 0; -} - -static int -png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) -{ - png_fixed_point red_inverse, green_inverse, blue_scale; - png_fixed_point left, right, denominator; - - /* Check xy and, implicitly, z. Note that wide gamut color spaces typically - * have end points with 0 tristimulus values (these are impossible end - * points, but they are used to cover the possible colors). We check - * xy->whitey against 5, not 0, to avoid a possible integer overflow. - */ - if (xy->redx < 0 || xy->redx > PNG_FP_1) return 1; - if (xy->redy < 0 || xy->redy > PNG_FP_1-xy->redx) return 1; - if (xy->greenx < 0 || xy->greenx > PNG_FP_1) return 1; - if (xy->greeny < 0 || xy->greeny > PNG_FP_1-xy->greenx) return 1; - if (xy->bluex < 0 || xy->bluex > PNG_FP_1) return 1; - if (xy->bluey < 0 || xy->bluey > PNG_FP_1-xy->bluex) return 1; - if (xy->whitex < 0 || xy->whitex > PNG_FP_1) return 1; - if (xy->whitey < 5 || xy->whitey > PNG_FP_1-xy->whitex) return 1; - - /* The reverse calculation is more difficult because the original tristimulus - * value had 9 independent values (red,green,blue)x(X,Y,Z) however only 8 - * derived values were recorded in the cHRM chunk; - * (red,green,blue,white)x(x,y). This loses one degree of freedom and - * therefore an arbitrary ninth value has to be introduced to undo the - * original transformations. - * - * Think of the original end-points as points in (X,Y,Z) space. The - * chromaticity values (c) have the property: - * - * C - * c = --------- - * X + Y + Z - * - * For each c (x,y,z) from the corresponding original C (X,Y,Z). Thus the - * three chromaticity values (x,y,z) for each end-point obey the - * relationship: - * - * x + y + z = 1 - * - * This describes the plane in (X,Y,Z) space that intersects each axis at the - * value 1.0; call this the chromaticity plane. Thus the chromaticity - * calculation has scaled each end-point so that it is on the x+y+z=1 plane - * and chromaticity is the intersection of the vector from the origin to the - * (X,Y,Z) value with the chromaticity plane. - * - * To fully invert the chromaticity calculation we would need the three - * end-point scale factors, (red-scale, green-scale, blue-scale), but these - * were not recorded. Instead we calculated the reference white (X,Y,Z) and - * recorded the chromaticity of this. The reference white (X,Y,Z) would have - * given all three of the scale factors since: - * - * color-C = color-c * color-scale - * white-C = red-C + green-C + blue-C - * = red-c*red-scale + green-c*green-scale + blue-c*blue-scale - * - * But cHRM records only white-x and white-y, so we have lost the white scale - * factor: - * - * white-C = white-c*white-scale - * - * To handle this the inverse transformation makes an arbitrary assumption - * about white-scale: - * - * Assume: white-Y = 1.0 - * Hence: white-scale = 1/white-y - * Or: red-Y + green-Y + blue-Y = 1.0 - * - * Notice the last statement of the assumption gives an equation in three of - * the nine values we want to calculate. 8 more equations come from the - * above routine as summarised at the top above (the chromaticity - * calculation): - * - * Given: color-x = color-X / (color-X + color-Y + color-Z) - * Hence: (color-x - 1)*color-X + color.x*color-Y + color.x*color-Z = 0 - * - * This is 9 simultaneous equations in the 9 variables "color-C" and can be - * solved by Cramer's rule. Cramer's rule requires calculating 10 9x9 matrix - * determinants, however this is not as bad as it seems because only 28 of - * the total of 90 terms in the various matrices are non-zero. Nevertheless - * Cramer's rule is notoriously numerically unstable because the determinant - * calculation involves the difference of large, but similar, numbers. It is - * difficult to be sure that the calculation is stable for real world values - * and it is certain that it becomes unstable where the end points are close - * together. - * - * So this code uses the perhaps slightly less optimal but more - * understandable and totally obvious approach of calculating color-scale. - * - * This algorithm depends on the precision in white-scale and that is - * (1/white-y), so we can immediately see that as white-y approaches 0 the - * accuracy inherent in the cHRM chunk drops off substantially. - * - * libpng arithmetic: a simple inversion of the above equations - * ------------------------------------------------------------ - * - * white_scale = 1/white-y - * white-X = white-x * white-scale - * white-Y = 1.0 - * white-Z = (1 - white-x - white-y) * white_scale - * - * white-C = red-C + green-C + blue-C - * = red-c*red-scale + green-c*green-scale + blue-c*blue-scale - * - * This gives us three equations in (red-scale,green-scale,blue-scale) where - * all the coefficients are now known: - * - * red-x*red-scale + green-x*green-scale + blue-x*blue-scale - * = white-x/white-y - * red-y*red-scale + green-y*green-scale + blue-y*blue-scale = 1 - * red-z*red-scale + green-z*green-scale + blue-z*blue-scale - * = (1 - white-x - white-y)/white-y - * - * In the last equation color-z is (1 - color-x - color-y) so we can add all - * three equations together to get an alternative third: - * - * red-scale + green-scale + blue-scale = 1/white-y = white-scale - * - * So now we have a Cramer's rule solution where the determinants are just - * 3x3 - far more tractible. Unfortunately 3x3 determinants still involve - * multiplication of three coefficients so we can't guarantee to avoid - * overflow in the libpng fixed point representation. Using Cramer's rule in - * floating point is probably a good choice here, but it's not an option for - * fixed point. Instead proceed to simplify the first two equations by - * eliminating what is likely to be the largest value, blue-scale: - * - * blue-scale = white-scale - red-scale - green-scale - * - * Hence: - * - * (red-x - blue-x)*red-scale + (green-x - blue-x)*green-scale = - * (white-x - blue-x)*white-scale - * - * (red-y - blue-y)*red-scale + (green-y - blue-y)*green-scale = - * 1 - blue-y*white-scale - * - * And now we can trivially solve for (red-scale,green-scale): - * - * green-scale = - * (white-x - blue-x)*white-scale - (red-x - blue-x)*red-scale - * ----------------------------------------------------------- - * green-x - blue-x - * - * red-scale = - * 1 - blue-y*white-scale - (green-y - blue-y) * green-scale - * --------------------------------------------------------- - * red-y - blue-y - * - * Hence: - * - * red-scale = - * ( (green-x - blue-x) * (white-y - blue-y) - - * (green-y - blue-y) * (white-x - blue-x) ) / white-y - * ------------------------------------------------------------------------- - * (green-x - blue-x)*(red-y - blue-y)-(green-y - blue-y)*(red-x - blue-x) - * - * green-scale = - * ( (red-y - blue-y) * (white-x - blue-x) - - * (red-x - blue-x) * (white-y - blue-y) ) / white-y - * ------------------------------------------------------------------------- - * (green-x - blue-x)*(red-y - blue-y)-(green-y - blue-y)*(red-x - blue-x) - * - * Accuracy: - * The input values have 5 decimal digits of accuracy. The values are all in - * the range 0 < value < 1, so simple products are in the same range but may - * need up to 10 decimal digits to preserve the original precision and avoid - * underflow. Because we are using a 32-bit signed representation we cannot - * match this; the best is a little over 9 decimal digits, less than 10. - * - * The approach used here is to preserve the maximum precision within the - * signed representation. Because the red-scale calculation above uses the - * difference between two products of values that must be in the range -1..+1 - * it is sufficient to divide the product by 7; ceil(100,000/32767*2). The - * factor is irrelevant in the calculation because it is applied to both - * numerator and denominator. - * - * Note that the values of the differences of the products of the - * chromaticities in the above equations tend to be small, for example for - * the sRGB chromaticities they are: - * - * red numerator: -0.04751 - * green numerator: -0.08788 - * denominator: -0.2241 (without white-y multiplication) - * - * The resultant Y coefficients from the chromaticities of some widely used - * color space definitions are (to 15 decimal places): - * - * sRGB - * 0.212639005871510 0.715168678767756 0.072192315360734 - * Kodak ProPhoto - * 0.288071128229293 0.711843217810102 0.000085653960605 - * Adobe RGB - * 0.297344975250536 0.627363566255466 0.075291458493998 - * Adobe Wide Gamut RGB - * 0.258728243040113 0.724682314948566 0.016589442011321 - */ - /* By the argument, above overflow should be impossible here. The return - * value of 2 indicates an internal error to the caller. - */ - if (png_muldiv(&left, xy->greenx-xy->bluex, xy->redy - xy->bluey, 7) == 0) - return 2; - if (png_muldiv(&right, xy->greeny-xy->bluey, xy->redx - xy->bluex, 7) == 0) - return 2; - denominator = left - right; - - /* Now find the red numerator. */ - if (png_muldiv(&left, xy->greenx-xy->bluex, xy->whitey-xy->bluey, 7) == 0) - return 2; - if (png_muldiv(&right, xy->greeny-xy->bluey, xy->whitex-xy->bluex, 7) == 0) - return 2; - - /* Overflow is possible here and it indicates an extreme set of PNG cHRM - * chunk values. This calculation actually returns the reciprocal of the - * scale value because this allows us to delay the multiplication of white-y - * into the denominator, which tends to produce a small number. - */ - if (png_muldiv(&red_inverse, xy->whitey, denominator, left-right) == 0 || - red_inverse <= xy->whitey /* r+g+b scales = white scale */) - return 1; - - /* Similarly for green_inverse: */ - if (png_muldiv(&left, xy->redy-xy->bluey, xy->whitex-xy->bluex, 7) == 0) - return 2; - if (png_muldiv(&right, xy->redx-xy->bluex, xy->whitey-xy->bluey, 7) == 0) - return 2; - if (png_muldiv(&green_inverse, xy->whitey, denominator, left-right) == 0 || - green_inverse <= xy->whitey) - return 1; - - /* And the blue scale, the checks above guarantee this can't overflow but it - * can still produce 0 for extreme cHRM values. - */ - blue_scale = png_reciprocal(xy->whitey) - png_reciprocal(red_inverse) - - png_reciprocal(green_inverse); - if (blue_scale <= 0) - return 1; - - - /* And fill in the png_XYZ: */ - if (png_muldiv(&XYZ->red_X, xy->redx, PNG_FP_1, red_inverse) == 0) - return 1; - if (png_muldiv(&XYZ->red_Y, xy->redy, PNG_FP_1, red_inverse) == 0) - return 1; - if (png_muldiv(&XYZ->red_Z, PNG_FP_1 - xy->redx - xy->redy, PNG_FP_1, - red_inverse) == 0) - return 1; - - if (png_muldiv(&XYZ->green_X, xy->greenx, PNG_FP_1, green_inverse) == 0) - return 1; - if (png_muldiv(&XYZ->green_Y, xy->greeny, PNG_FP_1, green_inverse) == 0) - return 1; - if (png_muldiv(&XYZ->green_Z, PNG_FP_1 - xy->greenx - xy->greeny, PNG_FP_1, - green_inverse) == 0) - return 1; - - if (png_muldiv(&XYZ->blue_X, xy->bluex, blue_scale, PNG_FP_1) == 0) - return 1; - if (png_muldiv(&XYZ->blue_Y, xy->bluey, blue_scale, PNG_FP_1) == 0) - return 1; - if (png_muldiv(&XYZ->blue_Z, PNG_FP_1 - xy->bluex - xy->bluey, blue_scale, - PNG_FP_1) == 0) - return 1; - - return 0; /*success*/ -} - -static int -png_XYZ_normalize(png_XYZ *XYZ) -{ - png_int_32 Y; - - if (XYZ->red_Y < 0 || XYZ->green_Y < 0 || XYZ->blue_Y < 0 || - XYZ->red_X < 0 || XYZ->green_X < 0 || XYZ->blue_X < 0 || - XYZ->red_Z < 0 || XYZ->green_Z < 0 || XYZ->blue_Z < 0) - return 1; - - /* Normalize by scaling so the sum of the end-point Y values is PNG_FP_1. - * IMPLEMENTATION NOTE: ANSI requires signed overflow not to occur, therefore - * relying on addition of two positive values producing a negative one is not - * safe. - */ - Y = XYZ->red_Y; - if (0x7fffffff - Y < XYZ->green_X) - return 1; - Y += XYZ->green_Y; - if (0x7fffffff - Y < XYZ->blue_X) - return 1; - Y += XYZ->blue_Y; - - if (Y != PNG_FP_1) - { - if (png_muldiv(&XYZ->red_X, XYZ->red_X, PNG_FP_1, Y) == 0) - return 1; - if (png_muldiv(&XYZ->red_Y, XYZ->red_Y, PNG_FP_1, Y) == 0) - return 1; - if (png_muldiv(&XYZ->red_Z, XYZ->red_Z, PNG_FP_1, Y) == 0) - return 1; - - if (png_muldiv(&XYZ->green_X, XYZ->green_X, PNG_FP_1, Y) == 0) - return 1; - if (png_muldiv(&XYZ->green_Y, XYZ->green_Y, PNG_FP_1, Y) == 0) - return 1; - if (png_muldiv(&XYZ->green_Z, XYZ->green_Z, PNG_FP_1, Y) == 0) - return 1; - - if (png_muldiv(&XYZ->blue_X, XYZ->blue_X, PNG_FP_1, Y) == 0) - return 1; - if (png_muldiv(&XYZ->blue_Y, XYZ->blue_Y, PNG_FP_1, Y) == 0) - return 1; - if (png_muldiv(&XYZ->blue_Z, XYZ->blue_Z, PNG_FP_1, Y) == 0) - return 1; - } - - return 0; -} - -static int -png_colorspace_endpoints_match(const png_xy *xy1, const png_xy *xy2, int delta) -{ - /* Allow an error of +/-0.01 (absolute value) on each chromaticity */ - if (PNG_OUT_OF_RANGE(xy1->whitex, xy2->whitex,delta) || - PNG_OUT_OF_RANGE(xy1->whitey, xy2->whitey,delta) || - PNG_OUT_OF_RANGE(xy1->redx, xy2->redx, delta) || - PNG_OUT_OF_RANGE(xy1->redy, xy2->redy, delta) || - PNG_OUT_OF_RANGE(xy1->greenx, xy2->greenx,delta) || - PNG_OUT_OF_RANGE(xy1->greeny, xy2->greeny,delta) || - PNG_OUT_OF_RANGE(xy1->bluex, xy2->bluex, delta) || - PNG_OUT_OF_RANGE(xy1->bluey, xy2->bluey, delta)) - return 0; - return 1; -} - -/* Added in libpng-1.6.0, a different check for the validity of a set of cHRM - * chunk chromaticities. Earlier checks used to simply look for the overflow - * condition (where the determinant of the matrix to solve for XYZ ends up zero - * because the chromaticity values are not all distinct.) Despite this it is - * theoretically possible to produce chromaticities that are apparently valid - * but that rapidly degrade to invalid, potentially crashing, sets because of - * arithmetic inaccuracies when calculations are performed on them. The new - * check is to round-trip xy -> XYZ -> xy and then check that the result is - * within a small percentage of the original. - */ -static int -png_colorspace_check_xy(png_XYZ *XYZ, const png_xy *xy) -{ - int result; - png_xy xy_test; - - /* As a side-effect this routine also returns the XYZ endpoints. */ - result = png_XYZ_from_xy(XYZ, xy); - if (result != 0) - return result; - - result = png_xy_from_XYZ(&xy_test, XYZ); - if (result != 0) - return result; - - if (png_colorspace_endpoints_match(xy, &xy_test, - 5/*actually, the math is pretty accurate*/) != 0) - return 0; - - /* Too much slip */ - return 1; -} - -/* This is the check going the other way. The XYZ is modified to normalize it - * (another side-effect) and the xy chromaticities are returned. - */ -static int -png_colorspace_check_XYZ(png_xy *xy, png_XYZ *XYZ) -{ - int result; - png_XYZ XYZtemp; - - result = png_XYZ_normalize(XYZ); - if (result != 0) - return result; - - result = png_xy_from_XYZ(xy, XYZ); - if (result != 0) - return result; - - XYZtemp = *XYZ; - return png_colorspace_check_xy(&XYZtemp, xy); -} - -/* Used to check for an endpoint match against sRGB */ -static const png_xy sRGB_xy = /* From ITU-R BT.709-3 */ -{ - /* color x y */ - /* red */ 64000, 33000, - /* green */ 30000, 60000, - /* blue */ 15000, 6000, - /* white */ 31270, 32900 -}; - -static int -png_colorspace_set_xy_and_XYZ(png_const_structrp png_ptr, - png_colorspacerp colorspace, const png_xy *xy, const png_XYZ *XYZ, - int preferred) -{ - if ((colorspace->flags & PNG_COLORSPACE_INVALID) != 0) - return 0; - - /* The consistency check is performed on the chromaticities; this factors out - * variations because of the normalization (or not) of the end point Y - * values. - */ - if (preferred < 2 && - (colorspace->flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - { - /* The end points must be reasonably close to any we already have. The - * following allows an error of up to +/-.001 - */ - if (png_colorspace_endpoints_match(xy, &colorspace->end_points_xy, - 100) == 0) - { - colorspace->flags |= PNG_COLORSPACE_INVALID; - png_benign_error(png_ptr, "inconsistent chromaticities"); - return 0; /* failed */ - } - - /* Only overwrite with preferred values */ - if (preferred == 0) - return 1; /* ok, but no change */ - } - - colorspace->end_points_xy = *xy; - colorspace->end_points_XYZ = *XYZ; - colorspace->flags |= PNG_COLORSPACE_HAVE_ENDPOINTS; - - /* The end points are normally quoted to two decimal digits, so allow +/-0.01 - * on this test. - */ - if (png_colorspace_endpoints_match(xy, &sRGB_xy, 1000) != 0) - colorspace->flags |= PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB; - - else - colorspace->flags &= PNG_COLORSPACE_CANCEL( - PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB); - - return 2; /* ok and changed */ -} - -int /* PRIVATE */ -png_colorspace_set_chromaticities(png_const_structrp png_ptr, - png_colorspacerp colorspace, const png_xy *xy, int preferred) -{ - /* We must check the end points to ensure they are reasonable - in the past - * color management systems have crashed as a result of getting bogus - * colorant values, while this isn't the fault of libpng it is the - * responsibility of libpng because PNG carries the bomb and libpng is in a - * position to protect against it. - */ - png_XYZ XYZ; - - switch (png_colorspace_check_xy(&XYZ, xy)) - { - case 0: /* success */ - return png_colorspace_set_xy_and_XYZ(png_ptr, colorspace, xy, &XYZ, - preferred); - - case 1: - /* We can't invert the chromaticities so we can't produce value XYZ - * values. Likely as not a color management system will fail too. - */ - colorspace->flags |= PNG_COLORSPACE_INVALID; - png_benign_error(png_ptr, "invalid chromaticities"); - break; - - default: - /* libpng is broken; this should be a warning but if it happens we - * want error reports so for the moment it is an error. - */ - colorspace->flags |= PNG_COLORSPACE_INVALID; - png_error(png_ptr, "internal error checking chromaticities"); - } - - return 0; /* failed */ -} - -int /* PRIVATE */ -png_colorspace_set_endpoints(png_const_structrp png_ptr, - png_colorspacerp colorspace, const png_XYZ *XYZ_in, int preferred) -{ - png_XYZ XYZ = *XYZ_in; - png_xy xy; - - switch (png_colorspace_check_XYZ(&xy, &XYZ)) - { - case 0: - return png_colorspace_set_xy_and_XYZ(png_ptr, colorspace, &xy, &XYZ, - preferred); - - case 1: - /* End points are invalid. */ - colorspace->flags |= PNG_COLORSPACE_INVALID; - png_benign_error(png_ptr, "invalid end points"); - break; - - default: - colorspace->flags |= PNG_COLORSPACE_INVALID; - png_error(png_ptr, "internal error checking chromaticities"); - } - - return 0; /* failed */ -} - -#if defined(PNG_sRGB_SUPPORTED) || defined(PNG_iCCP_SUPPORTED) -/* Error message generation */ -static char -png_icc_tag_char(png_uint_32 byte) -{ - byte &= 0xff; - if (byte >= 32 && byte <= 126) - return (char)byte; - else - return '?'; -} - -static void -png_icc_tag_name(char *name, png_uint_32 tag) -{ - name[0] = '\''; - name[1] = png_icc_tag_char(tag >> 24); - name[2] = png_icc_tag_char(tag >> 16); - name[3] = png_icc_tag_char(tag >> 8); - name[4] = png_icc_tag_char(tag ); - name[5] = '\''; -} - -static int -is_ICC_signature_char(png_alloc_size_t it) -{ - return it == 32 || (it >= 48 && it <= 57) || (it >= 65 && it <= 90) || - (it >= 97 && it <= 122); -} - -static int -is_ICC_signature(png_alloc_size_t it) -{ - return is_ICC_signature_char(it >> 24) /* checks all the top bits */ && - is_ICC_signature_char((it >> 16) & 0xff) && - is_ICC_signature_char((it >> 8) & 0xff) && - is_ICC_signature_char(it & 0xff); -} - -static int -png_icc_profile_error(png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_charp name, png_alloc_size_t value, png_const_charp reason) -{ - size_t pos; - char message[196]; /* see below for calculation */ - - if (colorspace != NULL) - colorspace->flags |= PNG_COLORSPACE_INVALID; - - pos = png_safecat(message, (sizeof message), 0, "profile '"); /* 9 chars */ - pos = png_safecat(message, pos+79, pos, name); /* Truncate to 79 chars */ - pos = png_safecat(message, (sizeof message), pos, "': "); /* +2 = 90 */ - if (is_ICC_signature(value) != 0) - { - /* So 'value' is at most 4 bytes and the following cast is safe */ - png_icc_tag_name(message+pos, (png_uint_32)value); - pos += 6; /* total +8; less than the else clause */ - message[pos++] = ':'; - message[pos++] = ' '; - } -# ifdef PNG_WARNINGS_SUPPORTED - else - { - char number[PNG_NUMBER_BUFFER_SIZE]; /* +24 = 114*/ - - pos = png_safecat(message, (sizeof message), pos, - png_format_number(number, number+(sizeof number), - PNG_NUMBER_FORMAT_x, value)); - pos = png_safecat(message, (sizeof message), pos, "h: "); /*+2 = 116*/ - } -# endif - /* The 'reason' is an arbitrary message, allow +79 maximum 195 */ - pos = png_safecat(message, (sizeof message), pos, reason); - PNG_UNUSED(pos) - - /* This is recoverable, but make it unconditionally an app_error on write to - * avoid writing invalid ICC profiles into PNG files (i.e., we handle them - * on read, with a warning, but on write unless the app turns off - * application errors the PNG won't be written.) - */ - png_chunk_report(png_ptr, message, - (colorspace != NULL) ? PNG_CHUNK_ERROR : PNG_CHUNK_WRITE_ERROR); - - return 0; -} -#endif /* sRGB || iCCP */ - -#ifdef PNG_sRGB_SUPPORTED -int /* PRIVATE */ -png_colorspace_set_sRGB(png_const_structrp png_ptr, png_colorspacerp colorspace, - int intent) -{ - /* sRGB sets known gamma, end points and (from the chunk) intent. */ - /* IMPORTANT: these are not necessarily the values found in an ICC profile - * because ICC profiles store values adapted to a D50 environment; it is - * expected that the ICC profile mediaWhitePointTag will be D50; see the - * checks and code elsewhere to understand this better. - * - * These XYZ values, which are accurate to 5dp, produce rgb to gray - * coefficients of (6968,23435,2366), which are reduced (because they add up - * to 32769 not 32768) to (6968,23434,2366). These are the values that - * libpng has traditionally used (and are the best values given the 15bit - * algorithm used by the rgb to gray code.) - */ - static const png_XYZ sRGB_XYZ = /* D65 XYZ (*not* the D50 adapted values!) */ - { - /* color X Y Z */ - /* red */ 41239, 21264, 1933, - /* green */ 35758, 71517, 11919, - /* blue */ 18048, 7219, 95053 - }; - - /* Do nothing if the colorspace is already invalidated. */ - if ((colorspace->flags & PNG_COLORSPACE_INVALID) != 0) - return 0; - - /* Check the intent, then check for existing settings. It is valid for the - * PNG file to have cHRM or gAMA chunks along with sRGB, but the values must - * be consistent with the correct values. If, however, this function is - * called below because an iCCP chunk matches sRGB then it is quite - * conceivable that an older app recorded incorrect gAMA and cHRM because of - * an incorrect calculation based on the values in the profile - this does - * *not* invalidate the profile (though it still produces an error, which can - * be ignored.) - */ - if (intent < 0 || intent >= PNG_sRGB_INTENT_LAST) - return png_icc_profile_error(png_ptr, colorspace, "sRGB", - (png_alloc_size_t)intent, "invalid sRGB rendering intent"); - - if ((colorspace->flags & PNG_COLORSPACE_HAVE_INTENT) != 0 && - colorspace->rendering_intent != intent) - return png_icc_profile_error(png_ptr, colorspace, "sRGB", - (png_alloc_size_t)intent, "inconsistent rendering intents"); - - if ((colorspace->flags & PNG_COLORSPACE_FROM_sRGB) != 0) - { - png_benign_error(png_ptr, "duplicate sRGB information ignored"); - return 0; - } - - /* If the standard sRGB cHRM chunk does not match the one from the PNG file - * warn but overwrite the value with the correct one. - */ - if ((colorspace->flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0 && - !png_colorspace_endpoints_match(&sRGB_xy, &colorspace->end_points_xy, - 100)) - png_chunk_report(png_ptr, "cHRM chunk does not match sRGB", - PNG_CHUNK_ERROR); - - /* This check is just done for the error reporting - the routine always - * returns true when the 'from' argument corresponds to sRGB (2). - */ - (void)png_colorspace_check_gamma(png_ptr, colorspace, PNG_GAMMA_sRGB_INVERSE, - 2/*from sRGB*/); - - /* intent: bugs in GCC force 'int' to be used as the parameter type. */ - colorspace->rendering_intent = (png_uint_16)intent; - colorspace->flags |= PNG_COLORSPACE_HAVE_INTENT; - - /* endpoints */ - colorspace->end_points_xy = sRGB_xy; - colorspace->end_points_XYZ = sRGB_XYZ; - colorspace->flags |= - (PNG_COLORSPACE_HAVE_ENDPOINTS|PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB); - - /* gamma */ - colorspace->gamma = PNG_GAMMA_sRGB_INVERSE; - colorspace->flags |= PNG_COLORSPACE_HAVE_GAMMA; - - /* Finally record that we have an sRGB profile */ - colorspace->flags |= - (PNG_COLORSPACE_MATCHES_sRGB|PNG_COLORSPACE_FROM_sRGB); - - return 1; /* set */ -} -#endif /* sRGB */ - -#ifdef PNG_iCCP_SUPPORTED -/* Encoded value of D50 as an ICC XYZNumber. From the ICC 2010 spec the value - * is XYZ(0.9642,1.0,0.8249), which scales to: - * - * (63189.8112, 65536, 54060.6464) - */ -static const png_byte D50_nCIEXYZ[12] = - { 0x00, 0x00, 0xf6, 0xd6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x2d }; - -static int /* bool */ -icc_check_length(png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_charp name, png_uint_32 profile_length) -{ - if (profile_length < 132) - return png_icc_profile_error(png_ptr, colorspace, name, profile_length, - "too short"); - return 1; -} - -#ifdef PNG_READ_iCCP_SUPPORTED -int /* PRIVATE */ -png_icc_check_length(png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_charp name, png_uint_32 profile_length) -{ - if (!icc_check_length(png_ptr, colorspace, name, profile_length)) - return 0; - - /* This needs to be here because the 'normal' check is in - * png_decompress_chunk, yet this happens after the attempt to - * png_malloc_base the required data. We only need this on read; on write - * the caller supplies the profile buffer so libpng doesn't allocate it. See - * the call to icc_check_length below (the write case). - */ -# ifdef PNG_SET_USER_LIMITS_SUPPORTED - else if (png_ptr->user_chunk_malloc_max > 0 && - png_ptr->user_chunk_malloc_max < profile_length) - return png_icc_profile_error(png_ptr, colorspace, name, profile_length, - "exceeds application limits"); -# elif PNG_USER_CHUNK_MALLOC_MAX > 0 - else if (PNG_USER_CHUNK_MALLOC_MAX < profile_length) - return png_icc_profile_error(png_ptr, colorspace, name, profile_length, - "exceeds libpng limits"); -# else /* !SET_USER_LIMITS */ - /* This will get compiled out on all 32-bit and better systems. */ - else if (PNG_SIZE_MAX < profile_length) - return png_icc_profile_error(png_ptr, colorspace, name, profile_length, - "exceeds system limits"); -# endif /* !SET_USER_LIMITS */ - - return 1; -} -#endif /* READ_iCCP */ - -int /* PRIVATE */ -png_icc_check_header(png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_charp name, png_uint_32 profile_length, - png_const_bytep profile/* first 132 bytes only */, int color_type) -{ - png_uint_32 temp; - - /* Length check; this cannot be ignored in this code because profile_length - * is used later to check the tag table, so even if the profile seems over - * long profile_length from the caller must be correct. The caller can fix - * this up on read or write by just passing in the profile header length. - */ - temp = png_get_uint_32(profile); - if (temp != profile_length) - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "length does not match profile"); - - temp = (png_uint_32) (*(profile+8)); - if (temp > 3 && (profile_length & 3)) - return png_icc_profile_error(png_ptr, colorspace, name, profile_length, - "invalid length"); - - temp = png_get_uint_32(profile+128); /* tag count: 12 bytes/tag */ - if (temp > 357913930 || /* (2^32-4-132)/12: maximum possible tag count */ - profile_length < 132+12*temp) /* truncated tag table */ - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "tag count too large"); - - /* The 'intent' must be valid or we can't store it, ICC limits the intent to - * 16 bits. - */ - temp = png_get_uint_32(profile+64); - if (temp >= 0xffff) /* The ICC limit */ - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "invalid rendering intent"); - - /* This is just a warning because the profile may be valid in future - * versions. - */ - if (temp >= PNG_sRGB_INTENT_LAST) - (void)png_icc_profile_error(png_ptr, NULL, name, temp, - "intent outside defined range"); - - /* At this point the tag table can't be checked because it hasn't necessarily - * been loaded; however, various header fields can be checked. These checks - * are for values permitted by the PNG spec in an ICC profile; the PNG spec - * restricts the profiles that can be passed in an iCCP chunk (they must be - * appropriate to processing PNG data!) - */ - - /* Data checks (could be skipped). These checks must be independent of the - * version number; however, the version number doesn't accomodate changes in - * the header fields (just the known tags and the interpretation of the - * data.) - */ - temp = png_get_uint_32(profile+36); /* signature 'ascp' */ - if (temp != 0x61637370) - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "invalid signature"); - - /* Currently the PCS illuminant/adopted white point (the computational - * white point) are required to be D50, - * however the profile contains a record of the illuminant so perhaps ICC - * expects to be able to change this in the future (despite the rationale in - * the introduction for using a fixed PCS adopted white.) Consequently the - * following is just a warning. - */ - if (memcmp(profile+68, D50_nCIEXYZ, 12) != 0) - (void)png_icc_profile_error(png_ptr, NULL, name, 0/*no tag value*/, - "PCS illuminant is not D50"); - - /* The PNG spec requires this: - * "If the iCCP chunk is present, the image samples conform to the colour - * space represented by the embedded ICC profile as defined by the - * International Color Consortium [ICC]. The colour space of the ICC profile - * shall be an RGB colour space for colour images (PNG colour types 2, 3, and - * 6), or a greyscale colour space for greyscale images (PNG colour types 0 - * and 4)." - * - * This checking code ensures the embedded profile (on either read or write) - * conforms to the specification requirements. Notice that an ICC 'gray' - * color-space profile contains the information to transform the monochrome - * data to XYZ or L*a*b (according to which PCS the profile uses) and this - * should be used in preference to the standard libpng K channel replication - * into R, G and B channels. - * - * Previously it was suggested that an RGB profile on grayscale data could be - * handled. However it it is clear that using an RGB profile in this context - * must be an error - there is no specification of what it means. Thus it is - * almost certainly more correct to ignore the profile. - */ - temp = png_get_uint_32(profile+16); /* data colour space field */ - switch (temp) - { - case 0x52474220: /* 'RGB ' */ - if ((color_type & PNG_COLOR_MASK_COLOR) == 0) - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "RGB color space not permitted on grayscale PNG"); - break; - - case 0x47524159: /* 'GRAY' */ - if ((color_type & PNG_COLOR_MASK_COLOR) != 0) - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "Gray color space not permitted on RGB PNG"); - break; - - default: - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "invalid ICC profile color space"); - } - - /* It is up to the application to check that the profile class matches the - * application requirements; the spec provides no guidance, but it's pretty - * weird if the profile is not scanner ('scnr'), monitor ('mntr'), printer - * ('prtr') or 'spac' (for generic color spaces). Issue a warning in these - * cases. Issue an error for device link or abstract profiles - these don't - * contain the records necessary to transform the color-space to anything - * other than the target device (and not even that for an abstract profile). - * Profiles of these classes may not be embedded in images. - */ - temp = png_get_uint_32(profile+12); /* profile/device class */ - switch (temp) - { - case 0x73636e72: /* 'scnr' */ - case 0x6d6e7472: /* 'mntr' */ - case 0x70727472: /* 'prtr' */ - case 0x73706163: /* 'spac' */ - /* All supported */ - break; - - case 0x61627374: /* 'abst' */ - /* May not be embedded in an image */ - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "invalid embedded Abstract ICC profile"); - - case 0x6c696e6b: /* 'link' */ - /* DeviceLink profiles cannot be interpreted in a non-device specific - * fashion, if an app uses the AToB0Tag in the profile the results are - * undefined unless the result is sent to the intended device, - * therefore a DeviceLink profile should not be found embedded in a - * PNG. - */ - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "unexpected DeviceLink ICC profile class"); - - case 0x6e6d636c: /* 'nmcl' */ - /* A NamedColor profile is also device specific, however it doesn't - * contain an AToB0 tag that is open to misinterpretation. Almost - * certainly it will fail the tests below. - */ - (void)png_icc_profile_error(png_ptr, NULL, name, temp, - "unexpected NamedColor ICC profile class"); - break; - - default: - /* To allow for future enhancements to the profile accept unrecognized - * profile classes with a warning, these then hit the test below on the - * tag content to ensure they are backward compatible with one of the - * understood profiles. - */ - (void)png_icc_profile_error(png_ptr, NULL, name, temp, - "unrecognized ICC profile class"); - break; - } - - /* For any profile other than a device link one the PCS must be encoded - * either in XYZ or Lab. - */ - temp = png_get_uint_32(profile+20); - switch (temp) - { - case 0x58595a20: /* 'XYZ ' */ - case 0x4c616220: /* 'Lab ' */ - break; - - default: - return png_icc_profile_error(png_ptr, colorspace, name, temp, - "unexpected ICC PCS encoding"); - } - - return 1; -} - -int /* PRIVATE */ -png_icc_check_tag_table(png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_charp name, png_uint_32 profile_length, - png_const_bytep profile /* header plus whole tag table */) -{ - png_uint_32 tag_count = png_get_uint_32(profile+128); - png_uint_32 itag; - png_const_bytep tag = profile+132; /* The first tag */ - - /* First scan all the tags in the table and add bits to the icc_info value - * (temporarily in 'tags'). - */ - for (itag=0; itag < tag_count; ++itag, tag += 12) - { - png_uint_32 tag_id = png_get_uint_32(tag+0); - png_uint_32 tag_start = png_get_uint_32(tag+4); /* must be aligned */ - png_uint_32 tag_length = png_get_uint_32(tag+8);/* not padded */ - - /* The ICC specification does not exclude zero length tags, therefore the - * start might actually be anywhere if there is no data, but this would be - * a clear abuse of the intent of the standard so the start is checked for - * being in range. All defined tag types have an 8 byte header - a 4 byte - * type signature then 0. - */ - - /* This is a hard error; potentially it can cause read outside the - * profile. - */ - if (tag_start > profile_length || tag_length > profile_length - tag_start) - return png_icc_profile_error(png_ptr, colorspace, name, tag_id, - "ICC profile tag outside profile"); - - if ((tag_start & 3) != 0) - { - /* CNHP730S.icc shipped with Microsoft Windows 64 violates this; it is - * only a warning here because libpng does not care about the - * alignment. - */ - (void)png_icc_profile_error(png_ptr, NULL, name, tag_id, - "ICC profile tag start not a multiple of 4"); - } - } - - return 1; /* success, maybe with warnings */ -} - -#ifdef PNG_sRGB_SUPPORTED -#if PNG_sRGB_PROFILE_CHECKS >= 0 -/* Information about the known ICC sRGB profiles */ -static const struct -{ - png_uint_32 adler, crc, length; - png_uint_32 md5[4]; - png_byte have_md5; - png_byte is_broken; - png_uint_16 intent; - -# define PNG_MD5(a,b,c,d) { a, b, c, d }, (a!=0)||(b!=0)||(c!=0)||(d!=0) -# define PNG_ICC_CHECKSUM(adler, crc, md5, intent, broke, date, length, fname)\ - { adler, crc, length, md5, broke, intent }, - -} png_sRGB_checks[] = -{ - /* This data comes from contrib/tools/checksum-icc run on downloads of - * all four ICC sRGB profiles from www.color.org. - */ - /* adler32, crc32, MD5[4], intent, date, length, file-name */ - PNG_ICC_CHECKSUM(0x0a3fd9f6, 0x3b8772b9, - PNG_MD5(0x29f83dde, 0xaff255ae, 0x7842fae4, 0xca83390d), 0, 0, - "2009/03/27 21:36:31", 3048, "sRGB_IEC61966-2-1_black_scaled.icc") - - /* ICC sRGB v2 perceptual no black-compensation: */ - PNG_ICC_CHECKSUM(0x4909e5e1, 0x427ebb21, - PNG_MD5(0xc95bd637, 0xe95d8a3b, 0x0df38f99, 0xc1320389), 1, 0, - "2009/03/27 21:37:45", 3052, "sRGB_IEC61966-2-1_no_black_scaling.icc") - - PNG_ICC_CHECKSUM(0xfd2144a1, 0x306fd8ae, - PNG_MD5(0xfc663378, 0x37e2886b, 0xfd72e983, 0x8228f1b8), 0, 0, - "2009/08/10 17:28:01", 60988, "sRGB_v4_ICC_preference_displayclass.icc") - - /* ICC sRGB v4 perceptual */ - PNG_ICC_CHECKSUM(0x209c35d2, 0xbbef7812, - PNG_MD5(0x34562abf, 0x994ccd06, 0x6d2c5721, 0xd0d68c5d), 0, 0, - "2007/07/25 00:05:37", 60960, "sRGB_v4_ICC_preference.icc") - - /* The following profiles have no known MD5 checksum. If there is a match - * on the (empty) MD5 the other fields are used to attempt a match and - * a warning is produced. The first two of these profiles have a 'cprt' tag - * which suggests that they were also made by Hewlett Packard. - */ - PNG_ICC_CHECKSUM(0xa054d762, 0x5d5129ce, - PNG_MD5(0x00000000, 0x00000000, 0x00000000, 0x00000000), 1, 0, - "2004/07/21 18:57:42", 3024, "sRGB_IEC61966-2-1_noBPC.icc") - - /* This is a 'mntr' (display) profile with a mediaWhitePointTag that does not - * match the D50 PCS illuminant in the header (it is in fact the D65 values, - * so the white point is recorded as the un-adapted value.) The profiles - * below only differ in one byte - the intent - and are basically the same as - * the previous profile except for the mediaWhitePointTag error and a missing - * chromaticAdaptationTag. - */ - PNG_ICC_CHECKSUM(0xf784f3fb, 0x182ea552, - PNG_MD5(0x00000000, 0x00000000, 0x00000000, 0x00000000), 0, 1/*broken*/, - "1998/02/09 06:49:00", 3144, "HP-Microsoft sRGB v2 perceptual") - - PNG_ICC_CHECKSUM(0x0398f3fc, 0xf29e526d, - PNG_MD5(0x00000000, 0x00000000, 0x00000000, 0x00000000), 1, 1/*broken*/, - "1998/02/09 06:49:00", 3144, "HP-Microsoft sRGB v2 media-relative") -}; - -static int -png_compare_ICC_profile_with_sRGB(png_const_structrp png_ptr, - png_const_bytep profile, uLong adler) -{ - /* The quick check is to verify just the MD5 signature and trust the - * rest of the data. Because the profile has already been verified for - * correctness this is safe. png_colorspace_set_sRGB will check the 'intent' - * field too, so if the profile has been edited with an intent not defined - * by sRGB (but maybe defined by a later ICC specification) the read of - * the profile will fail at that point. - */ - - png_uint_32 length = 0; - png_uint_32 intent = 0x10000; /* invalid */ -#if PNG_sRGB_PROFILE_CHECKS > 1 - uLong crc = 0; /* the value for 0 length data */ -#endif - unsigned int i; - -#ifdef PNG_SET_OPTION_SUPPORTED - /* First see if PNG_SKIP_sRGB_CHECK_PROFILE has been set to "on" */ - if (((png_ptr->options >> PNG_SKIP_sRGB_CHECK_PROFILE) & 3) == - PNG_OPTION_ON) - return 0; -#endif - - for (i=0; i < (sizeof png_sRGB_checks) / (sizeof png_sRGB_checks[0]); ++i) - { - if (png_get_uint_32(profile+84) == png_sRGB_checks[i].md5[0] && - png_get_uint_32(profile+88) == png_sRGB_checks[i].md5[1] && - png_get_uint_32(profile+92) == png_sRGB_checks[i].md5[2] && - png_get_uint_32(profile+96) == png_sRGB_checks[i].md5[3]) - { - /* This may be one of the old HP profiles without an MD5, in that - * case we can only use the length and Adler32 (note that these - * are not used by default if there is an MD5!) - */ -# if PNG_sRGB_PROFILE_CHECKS == 0 - if (png_sRGB_checks[i].have_md5 != 0) - return 1+png_sRGB_checks[i].is_broken; -# endif - - /* Profile is unsigned or more checks have been configured in. */ - if (length == 0) - { - length = png_get_uint_32(profile); - intent = png_get_uint_32(profile+64); - } - - /* Length *and* intent must match */ - if (length == (png_uint_32) png_sRGB_checks[i].length && - intent == (png_uint_32) png_sRGB_checks[i].intent) - { - /* Now calculate the adler32 if not done already. */ - if (adler == 0) - { - adler = adler32(0, NULL, 0); - adler = adler32(adler, profile, length); - } - - if (adler == png_sRGB_checks[i].adler) - { - /* These basic checks suggest that the data has not been - * modified, but if the check level is more than 1 perform - * our own crc32 checksum on the data. - */ -# if PNG_sRGB_PROFILE_CHECKS > 1 - if (crc == 0) - { - crc = crc32(0, NULL, 0); - crc = crc32(crc, profile, length); - } - - /* So this check must pass for the 'return' below to happen. - */ - if (crc == png_sRGB_checks[i].crc) -# endif - { - if (png_sRGB_checks[i].is_broken != 0) - { - /* These profiles are known to have bad data that may cause - * problems if they are used, therefore attempt to - * discourage their use, skip the 'have_md5' warning below, - * which is made irrelevant by this error. - */ - png_chunk_report(png_ptr, "known incorrect sRGB profile", - PNG_CHUNK_ERROR); - } - - /* Warn that this being done; this isn't even an error since - * the profile is perfectly valid, but it would be nice if - * people used the up-to-date ones. - */ - else if (png_sRGB_checks[i].have_md5 == 0) - { - png_chunk_report(png_ptr, - "out-of-date sRGB profile with no signature", - PNG_CHUNK_WARNING); - } - - return 1+png_sRGB_checks[i].is_broken; - } - } - -# if PNG_sRGB_PROFILE_CHECKS > 0 - /* The signature matched, but the profile had been changed in some - * way. This probably indicates a data error or uninformed hacking. - * Fall through to "no match". - */ - png_chunk_report(png_ptr, - "Not recognizing known sRGB profile that has been edited", - PNG_CHUNK_WARNING); - break; -# endif - } - } - } - - return 0; /* no match */ -} - -void /* PRIVATE */ -png_icc_set_sRGB(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_bytep profile, uLong adler) -{ - /* Is this profile one of the known ICC sRGB profiles? If it is, just set - * the sRGB information. - */ - if (png_compare_ICC_profile_with_sRGB(png_ptr, profile, adler) != 0) - (void)png_colorspace_set_sRGB(png_ptr, colorspace, - (int)/*already checked*/png_get_uint_32(profile+64)); -} -#endif /* PNG_sRGB_PROFILE_CHECKS >= 0 */ -#endif /* sRGB */ - -int /* PRIVATE */ -png_colorspace_set_ICC(png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_charp name, png_uint_32 profile_length, png_const_bytep profile, - int color_type) -{ - if ((colorspace->flags & PNG_COLORSPACE_INVALID) != 0) - return 0; - - if (icc_check_length(png_ptr, colorspace, name, profile_length) != 0 && - png_icc_check_header(png_ptr, colorspace, name, profile_length, profile, - color_type) != 0 && - png_icc_check_tag_table(png_ptr, colorspace, name, profile_length, - profile) != 0) - { -# if defined(PNG_sRGB_SUPPORTED) && PNG_sRGB_PROFILE_CHECKS >= 0 - /* If no sRGB support, don't try storing sRGB information */ - png_icc_set_sRGB(png_ptr, colorspace, profile, 0); -# endif - return 1; - } - - /* Failure case */ - return 0; -} -#endif /* iCCP */ - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -void /* PRIVATE */ -png_colorspace_set_rgb_coefficients(png_structrp png_ptr) -{ - /* Set the rgb_to_gray coefficients from the colorspace. */ - if (png_ptr->rgb_to_gray_coefficients_set == 0 && - (png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - { - /* png_set_background has not been called, get the coefficients from the Y - * values of the colorspace colorants. - */ - png_fixed_point r = png_ptr->colorspace.end_points_XYZ.red_Y; - png_fixed_point g = png_ptr->colorspace.end_points_XYZ.green_Y; - png_fixed_point b = png_ptr->colorspace.end_points_XYZ.blue_Y; - png_fixed_point total = r+g+b; - - if (total > 0 && - r >= 0 && png_muldiv(&r, r, 32768, total) && r >= 0 && r <= 32768 && - g >= 0 && png_muldiv(&g, g, 32768, total) && g >= 0 && g <= 32768 && - b >= 0 && png_muldiv(&b, b, 32768, total) && b >= 0 && b <= 32768 && - r+g+b <= 32769) - { - /* We allow 0 coefficients here. r+g+b may be 32769 if two or - * all of the coefficients were rounded up. Handle this by - * reducing the *largest* coefficient by 1; this matches the - * approach used for the default coefficients in pngrtran.c - */ - int add = 0; - - if (r+g+b > 32768) - add = -1; - else if (r+g+b < 32768) - add = 1; - - if (add != 0) - { - if (g >= r && g >= b) - g += add; - else if (r >= g && r >= b) - r += add; - else - b += add; - } - - /* Check for an internal error. */ - if (r+g+b != 32768) - png_error(png_ptr, - "internal error handling cHRM coefficients"); - - else - { - png_ptr->rgb_to_gray_red_coeff = (png_uint_16)r; - png_ptr->rgb_to_gray_green_coeff = (png_uint_16)g; - } - } - - /* This is a png_error at present even though it could be ignored - - * it should never happen, but it is important that if it does, the - * bug is fixed. - */ - else - png_error(png_ptr, "internal error handling cHRM->XYZ"); - } -} -#endif /* READ_RGB_TO_GRAY */ - -#endif /* COLORSPACE */ - -#ifdef __GNUC__ -/* This exists solely to work round a warning from GNU C. */ -static int /* PRIVATE */ -png_gt(size_t a, size_t b) -{ - return a > b; -} -#else -# define png_gt(a,b) ((a) > (b)) -#endif - -void /* PRIVATE */ -png_check_IHDR(png_const_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type) -{ - int error = 0; - - /* Check for width and height valid values */ - if (width == 0) - { - png_warning(png_ptr, "Image width is zero in IHDR"); - error = 1; - } - - if (width > PNG_UINT_31_MAX) - { - png_warning(png_ptr, "Invalid image width in IHDR"); - error = 1; - } - - if (png_gt(((width + 7) & (~7U)), - ((PNG_SIZE_MAX - - 48 /* big_row_buf hack */ - - 1) /* filter byte */ - / 8) /* 8-byte RGBA pixels */ - - 1)) /* extra max_pixel_depth pad */ - { - /* The size of the row must be within the limits of this architecture. - * Because the read code can perform arbitrary transformations the - * maximum size is checked here. Because the code in png_read_start_row - * adds extra space "for safety's sake" in several places a conservative - * limit is used here. - * - * NOTE: it would be far better to check the size that is actually used, - * but the effect in the real world is minor and the changes are more - * extensive, therefore much more dangerous and much more difficult to - * write in a way that avoids compiler warnings. - */ - png_warning(png_ptr, "Image width is too large for this architecture"); - error = 1; - } - -#ifdef PNG_SET_USER_LIMITS_SUPPORTED - if (width > png_ptr->user_width_max) -#else - if (width > PNG_USER_WIDTH_MAX) -#endif - { - png_warning(png_ptr, "Image width exceeds user limit in IHDR"); - error = 1; - } - - if (height == 0) - { - png_warning(png_ptr, "Image height is zero in IHDR"); - error = 1; - } - - if (height > PNG_UINT_31_MAX) - { - png_warning(png_ptr, "Invalid image height in IHDR"); - error = 1; - } - -#ifdef PNG_SET_USER_LIMITS_SUPPORTED - if (height > png_ptr->user_height_max) -#else - if (height > PNG_USER_HEIGHT_MAX) -#endif - { - png_warning(png_ptr, "Image height exceeds user limit in IHDR"); - error = 1; - } - - /* Check other values */ - if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && - bit_depth != 8 && bit_depth != 16) - { - png_warning(png_ptr, "Invalid bit depth in IHDR"); - error = 1; - } - - if (color_type < 0 || color_type == 1 || - color_type == 5 || color_type > 6) - { - png_warning(png_ptr, "Invalid color type in IHDR"); - error = 1; - } - - if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) || - ((color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA || - color_type == PNG_COLOR_TYPE_RGB_ALPHA) && bit_depth < 8)) - { - png_warning(png_ptr, "Invalid color type/bit depth combination in IHDR"); - error = 1; - } - - if (interlace_type >= PNG_INTERLACE_LAST) - { - png_warning(png_ptr, "Unknown interlace method in IHDR"); - error = 1; - } - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - { - png_warning(png_ptr, "Unknown compression method in IHDR"); - error = 1; - } - -#ifdef PNG_MNG_FEATURES_SUPPORTED - /* Accept filter_method 64 (intrapixel differencing) only if - * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and - * 2. Libpng did not read a PNG signature (this filter_method is only - * used in PNG datastreams that are embedded in MNG datastreams) and - * 3. The application called png_permit_mng_features with a mask that - * included PNG_FLAG_MNG_FILTER_64 and - * 4. The filter_method is 64 and - * 5. The color_type is RGB or RGBA - */ - if ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) != 0 && - png_ptr->mng_features_permitted != 0) - png_warning(png_ptr, "MNG features are not allowed in a PNG datastream"); - - if (filter_type != PNG_FILTER_TYPE_BASE) - { - if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 && - (filter_type == PNG_INTRAPIXEL_DIFFERENCING) && - ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) == 0) && - (color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_RGB_ALPHA))) - { - png_warning(png_ptr, "Unknown filter method in IHDR"); - error = 1; - } - - if ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) != 0) - { - png_warning(png_ptr, "Invalid filter method in IHDR"); - error = 1; - } - } - -#else - if (filter_type != PNG_FILTER_TYPE_BASE) - { - png_warning(png_ptr, "Unknown filter method in IHDR"); - error = 1; - } -#endif - - if (error == 1) - png_error(png_ptr, "Invalid IHDR data"); -} - -#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED) -/* ASCII to fp functions */ -/* Check an ASCII formated floating point value, see the more detailed - * comments in pngpriv.h - */ -/* The following is used internally to preserve the sticky flags */ -#define png_fp_add(state, flags) ((state) |= (flags)) -#define png_fp_set(state, value) ((state) = (value) | ((state) & PNG_FP_STICKY)) - -int /* PRIVATE */ -png_check_fp_number(png_const_charp string, png_size_t size, int *statep, - png_size_tp whereami) -{ - int state = *statep; - png_size_t i = *whereami; - - while (i < size) - { - int type; - /* First find the type of the next character */ - switch (string[i]) - { - case 43: type = PNG_FP_SAW_SIGN; break; - case 45: type = PNG_FP_SAW_SIGN + PNG_FP_NEGATIVE; break; - case 46: type = PNG_FP_SAW_DOT; break; - case 48: type = PNG_FP_SAW_DIGIT; break; - case 49: case 50: case 51: case 52: - case 53: case 54: case 55: case 56: - case 57: type = PNG_FP_SAW_DIGIT + PNG_FP_NONZERO; break; - case 69: - case 101: type = PNG_FP_SAW_E; break; - default: goto PNG_FP_End; - } - - /* Now deal with this type according to the current - * state, the type is arranged to not overlap the - * bits of the PNG_FP_STATE. - */ - switch ((state & PNG_FP_STATE) + (type & PNG_FP_SAW_ANY)) - { - case PNG_FP_INTEGER + PNG_FP_SAW_SIGN: - if ((state & PNG_FP_SAW_ANY) != 0) - goto PNG_FP_End; /* not a part of the number */ - - png_fp_add(state, type); - break; - - case PNG_FP_INTEGER + PNG_FP_SAW_DOT: - /* Ok as trailer, ok as lead of fraction. */ - if ((state & PNG_FP_SAW_DOT) != 0) /* two dots */ - goto PNG_FP_End; - - else if ((state & PNG_FP_SAW_DIGIT) != 0) /* trailing dot? */ - png_fp_add(state, type); - - else - png_fp_set(state, PNG_FP_FRACTION | type); - - break; - - case PNG_FP_INTEGER + PNG_FP_SAW_DIGIT: - if ((state & PNG_FP_SAW_DOT) != 0) /* delayed fraction */ - png_fp_set(state, PNG_FP_FRACTION | PNG_FP_SAW_DOT); - - png_fp_add(state, type | PNG_FP_WAS_VALID); - - break; - - case PNG_FP_INTEGER + PNG_FP_SAW_E: - if ((state & PNG_FP_SAW_DIGIT) == 0) - goto PNG_FP_End; - - png_fp_set(state, PNG_FP_EXPONENT); - - break; - - /* case PNG_FP_FRACTION + PNG_FP_SAW_SIGN: - goto PNG_FP_End; ** no sign in fraction */ - - /* case PNG_FP_FRACTION + PNG_FP_SAW_DOT: - goto PNG_FP_End; ** Because SAW_DOT is always set */ - - case PNG_FP_FRACTION + PNG_FP_SAW_DIGIT: - png_fp_add(state, type | PNG_FP_WAS_VALID); - break; - - case PNG_FP_FRACTION + PNG_FP_SAW_E: - /* This is correct because the trailing '.' on an - * integer is handled above - so we can only get here - * with the sequence ".E" (with no preceding digits). - */ - if ((state & PNG_FP_SAW_DIGIT) == 0) - goto PNG_FP_End; - - png_fp_set(state, PNG_FP_EXPONENT); - - break; - - case PNG_FP_EXPONENT + PNG_FP_SAW_SIGN: - if ((state & PNG_FP_SAW_ANY) != 0) - goto PNG_FP_End; /* not a part of the number */ - - png_fp_add(state, PNG_FP_SAW_SIGN); - - break; - - /* case PNG_FP_EXPONENT + PNG_FP_SAW_DOT: - goto PNG_FP_End; */ - - case PNG_FP_EXPONENT + PNG_FP_SAW_DIGIT: - png_fp_add(state, PNG_FP_SAW_DIGIT | PNG_FP_WAS_VALID); - - break; - - /* case PNG_FP_EXPONEXT + PNG_FP_SAW_E: - goto PNG_FP_End; */ - - default: goto PNG_FP_End; /* I.e. break 2 */ - } - - /* The character seems ok, continue. */ - ++i; - } - -PNG_FP_End: - /* Here at the end, update the state and return the correct - * return code. - */ - *statep = state; - *whereami = i; - - return (state & PNG_FP_SAW_DIGIT) != 0; -} - - -/* The same but for a complete string. */ -int -png_check_fp_string(png_const_charp string, png_size_t size) -{ - int state=0; - png_size_t char_index=0; - - if (png_check_fp_number(string, size, &state, &char_index) != 0 && - (char_index == size || string[char_index] == 0)) - return state /* must be non-zero - see above */; - - return 0; /* i.e. fail */ -} -#endif /* pCAL || sCAL */ - -#ifdef PNG_sCAL_SUPPORTED -# ifdef PNG_FLOATING_POINT_SUPPORTED -/* Utility used below - a simple accurate power of ten from an integral - * exponent. - */ -static double -png_pow10(int power) -{ - int recip = 0; - double d = 1; - - /* Handle negative exponent with a reciprocal at the end because - * 10 is exact whereas .1 is inexact in base 2 - */ - if (power < 0) - { - if (power < DBL_MIN_10_EXP) return 0; - recip = 1; power = -power; - } - - if (power > 0) - { - /* Decompose power bitwise. */ - double mult = 10; - do - { - if (power & 1) d *= mult; - mult *= mult; - power >>= 1; - } - while (power > 0); - - if (recip != 0) d = 1/d; - } - /* else power is 0 and d is 1 */ - - return d; -} - -/* Function to format a floating point value in ASCII with a given - * precision. - */ -#if GCC_STRICT_OVERFLOW -#pragma GCC diagnostic push -/* The problem arises below with exp_b10, which can never overflow because it - * comes, originally, from frexp and is therefore limited to a range which is - * typically +/-710 (log2(DBL_MAX)/log2(DBL_MIN)). - */ -#pragma GCC diagnostic warning "-Wstrict-overflow=2" -#endif /* GCC_STRICT_OVERFLOW */ -void /* PRIVATE */ -png_ascii_from_fp(png_const_structrp png_ptr, png_charp ascii, png_size_t size, - double fp, unsigned int precision) -{ - /* We use standard functions from math.h, but not printf because - * that would require stdio. The caller must supply a buffer of - * sufficient size or we will png_error. The tests on size and - * the space in ascii[] consumed are indicated below. - */ - if (precision < 1) - precision = DBL_DIG; - - /* Enforce the limit of the implementation precision too. */ - if (precision > DBL_DIG+1) - precision = DBL_DIG+1; - - /* Basic sanity checks */ - if (size >= precision+5) /* See the requirements below. */ - { - if (fp < 0) - { - fp = -fp; - *ascii++ = 45; /* '-' PLUS 1 TOTAL 1 */ - --size; - } - - if (fp >= DBL_MIN && fp <= DBL_MAX) - { - int exp_b10; /* A base 10 exponent */ - double base; /* 10^exp_b10 */ - - /* First extract a base 10 exponent of the number, - * the calculation below rounds down when converting - * from base 2 to base 10 (multiply by log10(2) - - * 0.3010, but 77/256 is 0.3008, so exp_b10 needs to - * be increased. Note that the arithmetic shift - * performs a floor() unlike C arithmetic - using a - * C multiply would break the following for negative - * exponents. - */ - (void)frexp(fp, &exp_b10); /* exponent to base 2 */ - - exp_b10 = (exp_b10 * 77) >> 8; /* <= exponent to base 10 */ - - /* Avoid underflow here. */ - base = png_pow10(exp_b10); /* May underflow */ - - while (base < DBL_MIN || base < fp) - { - /* And this may overflow. */ - double test = png_pow10(exp_b10+1); - - if (test <= DBL_MAX) - { - ++exp_b10; base = test; - } - - else - break; - } - - /* Normalize fp and correct exp_b10, after this fp is in the - * range [.1,1) and exp_b10 is both the exponent and the digit - * *before* which the decimal point should be inserted - * (starting with 0 for the first digit). Note that this - * works even if 10^exp_b10 is out of range because of the - * test on DBL_MAX above. - */ - fp /= base; - while (fp >= 1) - { - fp /= 10; ++exp_b10; - } - - /* Because of the code above fp may, at this point, be - * less than .1, this is ok because the code below can - * handle the leading zeros this generates, so no attempt - * is made to correct that here. - */ - - { - unsigned int czero, clead, cdigits; - char exponent[10]; - - /* Allow up to two leading zeros - this will not lengthen - * the number compared to using E-n. - */ - if (exp_b10 < 0 && exp_b10 > -3) /* PLUS 3 TOTAL 4 */ - { - czero = 0U-exp_b10; /* PLUS 2 digits: TOTAL 3 */ - exp_b10 = 0; /* Dot added below before first output. */ - } - else - czero = 0; /* No zeros to add */ - - /* Generate the digit list, stripping trailing zeros and - * inserting a '.' before a digit if the exponent is 0. - */ - clead = czero; /* Count of leading zeros */ - cdigits = 0; /* Count of digits in list. */ - - do - { - double d; - - fp *= 10; - /* Use modf here, not floor and subtract, so that - * the separation is done in one step. At the end - * of the loop don't break the number into parts so - * that the final digit is rounded. - */ - if (cdigits+czero+1 < precision+clead) - fp = modf(fp, &d); - - else - { - d = floor(fp + .5); - - if (d > 9) - { - /* Rounding up to 10, handle that here. */ - if (czero > 0) - { - --czero; d = 1; - if (cdigits == 0) --clead; - } - else - { - while (cdigits > 0 && d > 9) - { - int ch = *--ascii; - - if (exp_b10 != (-1)) - ++exp_b10; - - else if (ch == 46) - { - ch = *--ascii; ++size; - /* Advance exp_b10 to '1', so that the - * decimal point happens after the - * previous digit. - */ - exp_b10 = 1; - } - - --cdigits; - d = ch - 47; /* I.e. 1+(ch-48) */ - } - - /* Did we reach the beginning? If so adjust the - * exponent but take into account the leading - * decimal point. - */ - if (d > 9) /* cdigits == 0 */ - { - if (exp_b10 == (-1)) - { - /* Leading decimal point (plus zeros?), if - * we lose the decimal point here it must - * be reentered below. - */ - int ch = *--ascii; - - if (ch == 46) - { - ++size; exp_b10 = 1; - } - - /* Else lost a leading zero, so 'exp_b10' is - * still ok at (-1) - */ - } - else - ++exp_b10; - - /* In all cases we output a '1' */ - d = 1; - } - } - } - fp = 0; /* Guarantees termination below. */ - } - - if (d == 0) - { - ++czero; - if (cdigits == 0) ++clead; - } - else - { - /* Included embedded zeros in the digit count. */ - cdigits += czero - clead; - clead = 0; - - while (czero > 0) - { - /* exp_b10 == (-1) means we just output the decimal - * place - after the DP don't adjust 'exp_b10' any - * more! - */ - if (exp_b10 != (-1)) - { - if (exp_b10 == 0) - { - *ascii++ = 46; --size; - } - /* PLUS 1: TOTAL 4 */ - --exp_b10; - } - *ascii++ = 48; --czero; - } - - if (exp_b10 != (-1)) - { - if (exp_b10 == 0) - { - *ascii++ = 46; --size; /* counted above */ - } - - --exp_b10; - } - *ascii++ = (char)(48 + (int)d); ++cdigits; - } - } - while (cdigits+czero < precision+clead && fp > DBL_MIN); - - /* The total output count (max) is now 4+precision */ - - /* Check for an exponent, if we don't need one we are - * done and just need to terminate the string. At - * this point exp_b10==(-1) is effectively a flag - it got - * to '-1' because of the decrement after outputting - * the decimal point above (the exponent required is - * *not* -1!) - */ - if (exp_b10 >= (-1) && exp_b10 <= 2) - { - /* The following only happens if we didn't output the - * leading zeros above for negative exponent, so this - * doesn't add to the digit requirement. Note that the - * two zeros here can only be output if the two leading - * zeros were *not* output, so this doesn't increase - * the output count. - */ - while (exp_b10-- > 0) *ascii++ = 48; - - *ascii = 0; - - /* Total buffer requirement (including the '\0') is - * 5+precision - see check at the start. - */ - return; - } - - /* Here if an exponent is required, adjust size for - * the digits we output but did not count. The total - * digit output here so far is at most 1+precision - no - * decimal point and no leading or trailing zeros have - * been output. - */ - size -= cdigits; - - *ascii++ = 69; --size; /* 'E': PLUS 1 TOTAL 2+precision */ - - /* The following use of an unsigned temporary avoids ambiguities in - * the signed arithmetic on exp_b10 and permits GCC at least to do - * better optimization. - */ - { - unsigned int uexp_b10; - - if (exp_b10 < 0) - { - *ascii++ = 45; --size; /* '-': PLUS 1 TOTAL 3+precision */ - uexp_b10 = 0U-exp_b10; - } - - else - uexp_b10 = 0U+exp_b10; - - cdigits = 0; - - while (uexp_b10 > 0) - { - exponent[cdigits++] = (char)(48 + uexp_b10 % 10); - uexp_b10 /= 10; - } - } - - /* Need another size check here for the exponent digits, so - * this need not be considered above. - */ - if (size > cdigits) - { - while (cdigits > 0) *ascii++ = exponent[--cdigits]; - - *ascii = 0; - - return; - } - } - } - else if (!(fp >= DBL_MIN)) - { - *ascii++ = 48; /* '0' */ - *ascii = 0; - return; - } - else - { - *ascii++ = 105; /* 'i' */ - *ascii++ = 110; /* 'n' */ - *ascii++ = 102; /* 'f' */ - *ascii = 0; - return; - } - } - - /* Here on buffer too small. */ - png_error(png_ptr, "ASCII conversion buffer too small"); -} -#if GCC_STRICT_OVERFLOW -#pragma GCC diagnostic pop -#endif /* GCC_STRICT_OVERFLOW */ - -# endif /* FLOATING_POINT */ - -# ifdef PNG_FIXED_POINT_SUPPORTED -/* Function to format a fixed point value in ASCII. - */ -void /* PRIVATE */ -png_ascii_from_fixed(png_const_structrp png_ptr, png_charp ascii, - png_size_t size, png_fixed_point fp) -{ - /* Require space for 10 decimal digits, a decimal point, a minus sign and a - * trailing \0, 13 characters: - */ - if (size > 12) - { - png_uint_32 num; - - /* Avoid overflow here on the minimum integer. */ - if (fp < 0) - { - *ascii++ = 45; num = (png_uint_32)(-fp); - } - else - num = (png_uint_32)fp; - - if (num <= 0x80000000) /* else overflowed */ - { - unsigned int ndigits = 0, first = 16 /* flag value */; - char digits[10]; - - while (num) - { - /* Split the low digit off num: */ - unsigned int tmp = num/10; - num -= tmp*10; - digits[ndigits++] = (char)(48 + num); - /* Record the first non-zero digit, note that this is a number - * starting at 1, it's not actually the array index. - */ - if (first == 16 && num > 0) - first = ndigits; - num = tmp; - } - - if (ndigits > 0) - { - while (ndigits > 5) *ascii++ = digits[--ndigits]; - /* The remaining digits are fractional digits, ndigits is '5' or - * smaller at this point. It is certainly not zero. Check for a - * non-zero fractional digit: - */ - if (first <= 5) - { - unsigned int i; - *ascii++ = 46; /* decimal point */ - /* ndigits may be <5 for small numbers, output leading zeros - * then ndigits digits to first: - */ - i = 5; - while (ndigits < i) - { - *ascii++ = 48; --i; - } - while (ndigits >= first) *ascii++ = digits[--ndigits]; - /* Don't output the trailing zeros! */ - } - } - else - *ascii++ = 48; - - /* And null terminate the string: */ - *ascii = 0; - return; - } - } - - /* Here on buffer too small. */ - png_error(png_ptr, "ASCII conversion buffer too small"); -} -# endif /* FIXED_POINT */ -#endif /* SCAL */ - -#if defined(PNG_FLOATING_POINT_SUPPORTED) && \ - !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \ - (defined(PNG_gAMA_SUPPORTED) || defined(PNG_cHRM_SUPPORTED) || \ - defined(PNG_sCAL_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \ - (defined(PNG_sCAL_SUPPORTED) && \ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)) -png_fixed_point -png_fixed(png_const_structrp png_ptr, double fp, png_const_charp text) -{ - double r = floor(100000 * fp + .5); - - if (r > 2147483647. || r < -2147483648.) - png_fixed_error(png_ptr, text); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(text) -# endif - - return (png_fixed_point)r; -} -#endif - -#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_COLORSPACE_SUPPORTED) ||\ - defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED) -/* muldiv functions */ -/* This API takes signed arguments and rounds the result to the nearest - * integer (or, for a fixed point number - the standard argument - to - * the nearest .00001). Overflow and divide by zero are signalled in - * the result, a boolean - true on success, false on overflow. - */ -#if GCC_STRICT_OVERFLOW /* from above */ -/* It is not obvious which comparison below gets optimized in such a way that - * signed overflow would change the result; looking through the code does not - * reveal any tests which have the form GCC complains about, so presumably the - * optimizer is moving an add or subtract into the 'if' somewhere. - */ -#pragma GCC diagnostic push -#pragma GCC diagnostic warning "-Wstrict-overflow=2" -#endif /* GCC_STRICT_OVERFLOW */ -int -png_muldiv(png_fixed_point_p res, png_fixed_point a, png_int_32 times, - png_int_32 divisor) -{ - /* Return a * times / divisor, rounded. */ - if (divisor != 0) - { - if (a == 0 || times == 0) - { - *res = 0; - return 1; - } - else - { -#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - double r = a; - r *= times; - r /= divisor; - r = floor(r+.5); - - /* A png_fixed_point is a 32-bit integer. */ - if (r <= 2147483647. && r >= -2147483648.) - { - *res = (png_fixed_point)r; - return 1; - } -#else - int negative = 0; - png_uint_32 A, T, D; - png_uint_32 s16, s32, s00; - - if (a < 0) - negative = 1, A = -a; - else - A = a; - - if (times < 0) - negative = !negative, T = -times; - else - T = times; - - if (divisor < 0) - negative = !negative, D = -divisor; - else - D = divisor; - - /* Following can't overflow because the arguments only - * have 31 bits each, however the result may be 32 bits. - */ - s16 = (A >> 16) * (T & 0xffff) + - (A & 0xffff) * (T >> 16); - /* Can't overflow because the a*times bit is only 30 - * bits at most. - */ - s32 = (A >> 16) * (T >> 16) + (s16 >> 16); - s00 = (A & 0xffff) * (T & 0xffff); - - s16 = (s16 & 0xffff) << 16; - s00 += s16; - - if (s00 < s16) - ++s32; /* carry */ - - if (s32 < D) /* else overflow */ - { - /* s32.s00 is now the 64-bit product, do a standard - * division, we know that s32 < D, so the maximum - * required shift is 31. - */ - int bitshift = 32; - png_fixed_point result = 0; /* NOTE: signed */ - - while (--bitshift >= 0) - { - png_uint_32 d32, d00; - - if (bitshift > 0) - d32 = D >> (32-bitshift), d00 = D << bitshift; - - else - d32 = 0, d00 = D; - - if (s32 > d32) - { - if (s00 < d00) --s32; /* carry */ - s32 -= d32, s00 -= d00, result += 1<= d00) - s32 = 0, s00 -= d00, result += 1<= (D >> 1)) - ++result; - - if (negative != 0) - result = -result; - - /* Check for overflow. */ - if ((negative != 0 && result <= 0) || - (negative == 0 && result >= 0)) - { - *res = result; - return 1; - } - } -#endif - } - } - - return 0; -} -#if GCC_STRICT_OVERFLOW -#pragma GCC diagnostic pop -#endif /* GCC_STRICT_OVERFLOW */ -#endif /* READ_GAMMA || INCH_CONVERSIONS */ - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED) -/* The following is for when the caller doesn't much care about the - * result. - */ -png_fixed_point -png_muldiv_warn(png_const_structrp png_ptr, png_fixed_point a, png_int_32 times, - png_int_32 divisor) -{ - png_fixed_point result; - - if (png_muldiv(&result, a, times, divisor) != 0) - return result; - - png_warning(png_ptr, "fixed point overflow ignored"); - return 0; -} -#endif - -#ifdef PNG_GAMMA_SUPPORTED /* more fixed point functions for gamma */ -/* Calculate a reciprocal, return 0 on div-by-zero or overflow. */ -png_fixed_point -png_reciprocal(png_fixed_point a) -{ -#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - double r = floor(1E10/a+.5); - - if (r <= 2147483647. && r >= -2147483648.) - return (png_fixed_point)r; -#else - png_fixed_point res; - - if (png_muldiv(&res, 100000, 100000, a) != 0) - return res; -#endif - - return 0; /* error/overflow */ -} - -/* This is the shared test on whether a gamma value is 'significant' - whether - * it is worth doing gamma correction. - */ -int /* PRIVATE */ -png_gamma_significant(png_fixed_point gamma_val) -{ - return gamma_val < PNG_FP_1 - PNG_GAMMA_THRESHOLD_FIXED || - gamma_val > PNG_FP_1 + PNG_GAMMA_THRESHOLD_FIXED; -} -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -#ifdef PNG_16BIT_SUPPORTED -/* A local convenience routine. */ -static png_fixed_point -png_product2(png_fixed_point a, png_fixed_point b) -{ - /* The required result is 1/a * 1/b; the following preserves accuracy. */ -#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - double r = a * 1E-5; - r *= b; - r = floor(r+.5); - - if (r <= 2147483647. && r >= -2147483648.) - return (png_fixed_point)r; -#else - png_fixed_point res; - - if (png_muldiv(&res, a, b, 100000) != 0) - return res; -#endif - - return 0; /* overflow */ -} -#endif /* 16BIT */ - -/* The inverse of the above. */ -png_fixed_point -png_reciprocal2(png_fixed_point a, png_fixed_point b) -{ - /* The required result is 1/a * 1/b; the following preserves accuracy. */ -#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - if (a != 0 && b != 0) - { - double r = 1E15/a; - r /= b; - r = floor(r+.5); - - if (r <= 2147483647. && r >= -2147483648.) - return (png_fixed_point)r; - } -#else - /* This may overflow because the range of png_fixed_point isn't symmetric, - * but this API is only used for the product of file and screen gamma so it - * doesn't matter that the smallest number it can produce is 1/21474, not - * 1/100000 - */ - png_fixed_point res = png_product2(a, b); - - if (res != 0) - return png_reciprocal(res); -#endif - - return 0; /* overflow */ -} -#endif /* READ_GAMMA */ - -#ifdef PNG_READ_GAMMA_SUPPORTED /* gamma table code */ -#ifndef PNG_FLOATING_ARITHMETIC_SUPPORTED -/* Fixed point gamma. - * - * The code to calculate the tables used below can be found in the shell script - * contrib/tools/intgamma.sh - * - * To calculate gamma this code implements fast log() and exp() calls using only - * fixed point arithmetic. This code has sufficient precision for either 8-bit - * or 16-bit sample values. - * - * The tables used here were calculated using simple 'bc' programs, but C double - * precision floating point arithmetic would work fine. - * - * 8-bit log table - * This is a table of -log(value/255)/log(2) for 'value' in the range 128 to - * 255, so it's the base 2 logarithm of a normalized 8-bit floating point - * mantissa. The numbers are 32-bit fractions. - */ -static const png_uint_32 -png_8bit_l2[128] = -{ - 4270715492U, 4222494797U, 4174646467U, 4127164793U, 4080044201U, 4033279239U, - 3986864580U, 3940795015U, 3895065449U, 3849670902U, 3804606499U, 3759867474U, - 3715449162U, 3671346997U, 3627556511U, 3584073329U, 3540893168U, 3498011834U, - 3455425220U, 3413129301U, 3371120137U, 3329393864U, 3287946700U, 3246774933U, - 3205874930U, 3165243125U, 3124876025U, 3084770202U, 3044922296U, 3005329011U, - 2965987113U, 2926893432U, 2888044853U, 2849438323U, 2811070844U, 2772939474U, - 2735041326U, 2697373562U, 2659933400U, 2622718104U, 2585724991U, 2548951424U, - 2512394810U, 2476052606U, 2439922311U, 2404001468U, 2368287663U, 2332778523U, - 2297471715U, 2262364947U, 2227455964U, 2192742551U, 2158222529U, 2123893754U, - 2089754119U, 2055801552U, 2022034013U, 1988449497U, 1955046031U, 1921821672U, - 1888774511U, 1855902668U, 1823204291U, 1790677560U, 1758320682U, 1726131893U, - 1694109454U, 1662251657U, 1630556815U, 1599023271U, 1567649391U, 1536433567U, - 1505374214U, 1474469770U, 1443718700U, 1413119487U, 1382670639U, 1352370686U, - 1322218179U, 1292211689U, 1262349810U, 1232631153U, 1203054352U, 1173618059U, - 1144320946U, 1115161701U, 1086139034U, 1057251672U, 1028498358U, 999877854U, - 971388940U, 943030410U, 914801076U, 886699767U, 858725327U, 830876614U, - 803152505U, 775551890U, 748073672U, 720716771U, 693480120U, 666362667U, - 639363374U, 612481215U, 585715177U, 559064263U, 532527486U, 506103872U, - 479792461U, 453592303U, 427502463U, 401522014U, 375650043U, 349885648U, - 324227938U, 298676034U, 273229066U, 247886176U, 222646516U, 197509248U, - 172473545U, 147538590U, 122703574U, 97967701U, 73330182U, 48790236U, - 24347096U, 0U - -#if 0 - /* The following are the values for 16-bit tables - these work fine for the - * 8-bit conversions but produce very slightly larger errors in the 16-bit - * log (about 1.2 as opposed to 0.7 absolute error in the final value). To - * use these all the shifts below must be adjusted appropriately. - */ - 65166, 64430, 63700, 62976, 62257, 61543, 60835, 60132, 59434, 58741, 58054, - 57371, 56693, 56020, 55352, 54689, 54030, 53375, 52726, 52080, 51439, 50803, - 50170, 49542, 48918, 48298, 47682, 47070, 46462, 45858, 45257, 44661, 44068, - 43479, 42894, 42312, 41733, 41159, 40587, 40020, 39455, 38894, 38336, 37782, - 37230, 36682, 36137, 35595, 35057, 34521, 33988, 33459, 32932, 32408, 31887, - 31369, 30854, 30341, 29832, 29325, 28820, 28319, 27820, 27324, 26830, 26339, - 25850, 25364, 24880, 24399, 23920, 23444, 22970, 22499, 22029, 21562, 21098, - 20636, 20175, 19718, 19262, 18808, 18357, 17908, 17461, 17016, 16573, 16132, - 15694, 15257, 14822, 14390, 13959, 13530, 13103, 12678, 12255, 11834, 11415, - 10997, 10582, 10168, 9756, 9346, 8937, 8531, 8126, 7723, 7321, 6921, 6523, - 6127, 5732, 5339, 4947, 4557, 4169, 3782, 3397, 3014, 2632, 2251, 1872, 1495, - 1119, 744, 372 -#endif -}; - -static png_int_32 -png_log8bit(unsigned int x) -{ - unsigned int lg2 = 0; - /* Each time 'x' is multiplied by 2, 1 must be subtracted off the final log, - * because the log is actually negate that means adding 1. The final - * returned value thus has the range 0 (for 255 input) to 7.994 (for 1 - * input), return -1 for the overflow (log 0) case, - so the result is - * always at most 19 bits. - */ - if ((x &= 0xff) == 0) - return -1; - - if ((x & 0xf0) == 0) - lg2 = 4, x <<= 4; - - if ((x & 0xc0) == 0) - lg2 += 2, x <<= 2; - - if ((x & 0x80) == 0) - lg2 += 1, x <<= 1; - - /* result is at most 19 bits, so this cast is safe: */ - return (png_int_32)((lg2 << 16) + ((png_8bit_l2[x-128]+32768)>>16)); -} - -/* The above gives exact (to 16 binary places) log2 values for 8-bit images, - * for 16-bit images we use the most significant 8 bits of the 16-bit value to - * get an approximation then multiply the approximation by a correction factor - * determined by the remaining up to 8 bits. This requires an additional step - * in the 16-bit case. - * - * We want log2(value/65535), we have log2(v'/255), where: - * - * value = v' * 256 + v'' - * = v' * f - * - * So f is value/v', which is equal to (256+v''/v') since v' is in the range 128 - * to 255 and v'' is in the range 0 to 255 f will be in the range 256 to less - * than 258. The final factor also needs to correct for the fact that our 8-bit - * value is scaled by 255, whereas the 16-bit values must be scaled by 65535. - * - * This gives a final formula using a calculated value 'x' which is value/v' and - * scaling by 65536 to match the above table: - * - * log2(x/257) * 65536 - * - * Since these numbers are so close to '1' we can use simple linear - * interpolation between the two end values 256/257 (result -368.61) and 258/257 - * (result 367.179). The values used below are scaled by a further 64 to give - * 16-bit precision in the interpolation: - * - * Start (256): -23591 - * Zero (257): 0 - * End (258): 23499 - */ -#ifdef PNG_16BIT_SUPPORTED -static png_int_32 -png_log16bit(png_uint_32 x) -{ - unsigned int lg2 = 0; - - /* As above, but now the input has 16 bits. */ - if ((x &= 0xffff) == 0) - return -1; - - if ((x & 0xff00) == 0) - lg2 = 8, x <<= 8; - - if ((x & 0xf000) == 0) - lg2 += 4, x <<= 4; - - if ((x & 0xc000) == 0) - lg2 += 2, x <<= 2; - - if ((x & 0x8000) == 0) - lg2 += 1, x <<= 1; - - /* Calculate the base logarithm from the top 8 bits as a 28-bit fractional - * value. - */ - lg2 <<= 28; - lg2 += (png_8bit_l2[(x>>8)-128]+8) >> 4; - - /* Now we need to interpolate the factor, this requires a division by the top - * 8 bits. Do this with maximum precision. - */ - x = ((x << 16) + (x >> 9)) / (x >> 8); - - /* Since we divided by the top 8 bits of 'x' there will be a '1' at 1<<24, - * the value at 1<<16 (ignoring this) will be 0 or 1; this gives us exactly - * 16 bits to interpolate to get the low bits of the result. Round the - * answer. Note that the end point values are scaled by 64 to retain overall - * precision and that 'lg2' is current scaled by an extra 12 bits, so adjust - * the overall scaling by 6-12. Round at every step. - */ - x -= 1U << 24; - - if (x <= 65536U) /* <= '257' */ - lg2 += ((23591U * (65536U-x)) + (1U << (16+6-12-1))) >> (16+6-12); - - else - lg2 -= ((23499U * (x-65536U)) + (1U << (16+6-12-1))) >> (16+6-12); - - /* Safe, because the result can't have more than 20 bits: */ - return (png_int_32)((lg2 + 2048) >> 12); -} -#endif /* 16BIT */ - -/* The 'exp()' case must invert the above, taking a 20-bit fixed point - * logarithmic value and returning a 16 or 8-bit number as appropriate. In - * each case only the low 16 bits are relevant - the fraction - since the - * integer bits (the top 4) simply determine a shift. - * - * The worst case is the 16-bit distinction between 65535 and 65534. This - * requires perhaps spurious accuracy in the decoding of the logarithm to - * distinguish log2(65535/65534.5) - 10^-5 or 17 bits. There is little chance - * of getting this accuracy in practice. - * - * To deal with this the following exp() function works out the exponent of the - * fractional part of the logarithm by using an accurate 32-bit value from the - * top four fractional bits then multiplying in the remaining bits. - */ -static const png_uint_32 -png_32bit_exp[16] = -{ - /* NOTE: the first entry is deliberately set to the maximum 32-bit value. */ - 4294967295U, 4112874773U, 3938502376U, 3771522796U, 3611622603U, 3458501653U, - 3311872529U, 3171459999U, 3037000500U, 2908241642U, 2784941738U, 2666869345U, - 2553802834U, 2445529972U, 2341847524U, 2242560872U -}; - -/* Adjustment table; provided to explain the numbers in the code below. */ -#if 0 -for (i=11;i>=0;--i){ print i, " ", (1 - e(-(2^i)/65536*l(2))) * 2^(32-i), "\n"} - 11 44937.64284865548751208448 - 10 45180.98734845585101160448 - 9 45303.31936980687359311872 - 8 45364.65110595323018870784 - 7 45395.35850361789624614912 - 6 45410.72259715102037508096 - 5 45418.40724413220722311168 - 4 45422.25021786898173001728 - 3 45424.17186732298419044352 - 2 45425.13273269940811464704 - 1 45425.61317555035558641664 - 0 45425.85339951654943850496 -#endif - -static png_uint_32 -png_exp(png_fixed_point x) -{ - if (x > 0 && x <= 0xfffff) /* Else overflow or zero (underflow) */ - { - /* Obtain a 4-bit approximation */ - png_uint_32 e = png_32bit_exp[(x >> 12) & 0x0f]; - - /* Incorporate the low 12 bits - these decrease the returned value by - * multiplying by a number less than 1 if the bit is set. The multiplier - * is determined by the above table and the shift. Notice that the values - * converge on 45426 and this is used to allow linear interpolation of the - * low bits. - */ - if (x & 0x800) - e -= (((e >> 16) * 44938U) + 16U) >> 5; - - if (x & 0x400) - e -= (((e >> 16) * 45181U) + 32U) >> 6; - - if (x & 0x200) - e -= (((e >> 16) * 45303U) + 64U) >> 7; - - if (x & 0x100) - e -= (((e >> 16) * 45365U) + 128U) >> 8; - - if (x & 0x080) - e -= (((e >> 16) * 45395U) + 256U) >> 9; - - if (x & 0x040) - e -= (((e >> 16) * 45410U) + 512U) >> 10; - - /* And handle the low 6 bits in a single block. */ - e -= (((e >> 16) * 355U * (x & 0x3fU)) + 256U) >> 9; - - /* Handle the upper bits of x. */ - e >>= x >> 16; - return e; - } - - /* Check for overflow */ - if (x <= 0) - return png_32bit_exp[0]; - - /* Else underflow */ - return 0; -} - -static png_byte -png_exp8bit(png_fixed_point lg2) -{ - /* Get a 32-bit value: */ - png_uint_32 x = png_exp(lg2); - - /* Convert the 32-bit value to 0..255 by multiplying by 256-1. Note that the - * second, rounding, step can't overflow because of the first, subtraction, - * step. - */ - x -= x >> 8; - return (png_byte)(((x + 0x7fffffU) >> 24) & 0xff); -} - -#ifdef PNG_16BIT_SUPPORTED -static png_uint_16 -png_exp16bit(png_fixed_point lg2) -{ - /* Get a 32-bit value: */ - png_uint_32 x = png_exp(lg2); - - /* Convert the 32-bit value to 0..65535 by multiplying by 65536-1: */ - x -= x >> 16; - return (png_uint_16)((x + 32767U) >> 16); -} -#endif /* 16BIT */ -#endif /* FLOATING_ARITHMETIC */ - -png_byte -png_gamma_8bit_correct(unsigned int value, png_fixed_point gamma_val) -{ - if (value > 0 && value < 255) - { -# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - /* 'value' is unsigned, ANSI-C90 requires the compiler to correctly - * convert this to a floating point value. This includes values that - * would overflow if 'value' were to be converted to 'int'. - * - * Apparently GCC, however, does an intermediate conversion to (int) - * on some (ARM) but not all (x86) platforms, possibly because of - * hardware FP limitations. (E.g. if the hardware conversion always - * assumes the integer register contains a signed value.) This results - * in ANSI-C undefined behavior for large values. - * - * Other implementations on the same machine might actually be ANSI-C90 - * conformant and therefore compile spurious extra code for the large - * values. - * - * We can be reasonably sure that an unsigned to float conversion - * won't be faster than an int to float one. Therefore this code - * assumes responsibility for the undefined behavior, which it knows - * can't happen because of the check above. - * - * Note the argument to this routine is an (unsigned int) because, on - * 16-bit platforms, it is assigned a value which might be out of - * range for an (int); that would result in undefined behavior in the - * caller if the *argument* ('value') were to be declared (int). - */ - double r = floor(255*pow((int)/*SAFE*/value/255.,gamma_val*.00001)+.5); - return (png_byte)r; -# else - png_int_32 lg2 = png_log8bit(value); - png_fixed_point res; - - if (png_muldiv(&res, gamma_val, lg2, PNG_FP_1) != 0) - return png_exp8bit(res); - - /* Overflow. */ - value = 0; -# endif - } - - return (png_byte)(value & 0xff); -} - -#ifdef PNG_16BIT_SUPPORTED -png_uint_16 -png_gamma_16bit_correct(unsigned int value, png_fixed_point gamma_val) -{ - if (value > 0 && value < 65535) - { -# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - /* The same (unsigned int)->(double) constraints apply here as above, - * however in this case the (unsigned int) to (int) conversion can - * overflow on an ANSI-C90 compliant system so the cast needs to ensure - * that this is not possible. - */ - double r = floor(65535*pow((png_int_32)value/65535., - gamma_val*.00001)+.5); - return (png_uint_16)r; -# else - png_int_32 lg2 = png_log16bit(value); - png_fixed_point res; - - if (png_muldiv(&res, gamma_val, lg2, PNG_FP_1) != 0) - return png_exp16bit(res); - - /* Overflow. */ - value = 0; -# endif - } - - return (png_uint_16)value; -} -#endif /* 16BIT */ - -/* This does the right thing based on the bit_depth field of the - * png_struct, interpreting values as 8-bit or 16-bit. While the result - * is nominally a 16-bit value if bit depth is 8 then the result is - * 8-bit (as are the arguments.) - */ -png_uint_16 /* PRIVATE */ -png_gamma_correct(png_structrp png_ptr, unsigned int value, - png_fixed_point gamma_val) -{ - if (png_ptr->bit_depth == 8) - return png_gamma_8bit_correct(value, gamma_val); - -#ifdef PNG_16BIT_SUPPORTED - else - return png_gamma_16bit_correct(value, gamma_val); -#else - /* should not reach this */ - return 0; -#endif /* 16BIT */ -} - -#ifdef PNG_16BIT_SUPPORTED -/* Internal function to build a single 16-bit table - the table consists of - * 'num' 256 entry subtables, where 'num' is determined by 'shift' - the amount - * to shift the input values right (or 16-number_of_signifiant_bits). - * - * The caller is responsible for ensuring that the table gets cleaned up on - * png_error (i.e. if one of the mallocs below fails) - i.e. the *table argument - * should be somewhere that will be cleaned. - */ -static void -png_build_16bit_table(png_structrp png_ptr, png_uint_16pp *ptable, - PNG_CONST unsigned int shift, PNG_CONST png_fixed_point gamma_val) -{ - /* Various values derived from 'shift': */ - PNG_CONST unsigned int num = 1U << (8U - shift); -#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - /* CSE the division and work round wacky GCC warnings (see the comments - * in png_gamma_8bit_correct for where these come from.) - */ - PNG_CONST double fmax = 1./(((png_int_32)1 << (16U - shift))-1); -#endif - PNG_CONST unsigned int max = (1U << (16U - shift))-1U; - PNG_CONST unsigned int max_by_2 = 1U << (15U-shift); - unsigned int i; - - png_uint_16pp table = *ptable = - (png_uint_16pp)png_calloc(png_ptr, num * (sizeof (png_uint_16p))); - - for (i = 0; i < num; i++) - { - png_uint_16p sub_table = table[i] = - (png_uint_16p)png_malloc(png_ptr, 256 * (sizeof (png_uint_16))); - - /* The 'threshold' test is repeated here because it can arise for one of - * the 16-bit tables even if the others don't hit it. - */ - if (png_gamma_significant(gamma_val) != 0) - { - /* The old code would overflow at the end and this would cause the - * 'pow' function to return a result >1, resulting in an - * arithmetic error. This code follows the spec exactly; ig is - * the recovered input sample, it always has 8-16 bits. - * - * We want input * 65535/max, rounded, the arithmetic fits in 32 - * bits (unsigned) so long as max <= 32767. - */ - unsigned int j; - for (j = 0; j < 256; j++) - { - png_uint_32 ig = (j << (8-shift)) + i; -# ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED - /* Inline the 'max' scaling operation: */ - /* See png_gamma_8bit_correct for why the cast to (int) is - * required here. - */ - double d = floor(65535.*pow(ig*fmax, gamma_val*.00001)+.5); - sub_table[j] = (png_uint_16)d; -# else - if (shift != 0) - ig = (ig * 65535U + max_by_2)/max; - - sub_table[j] = png_gamma_16bit_correct(ig, gamma_val); -# endif - } - } - else - { - /* We must still build a table, but do it the fast way. */ - unsigned int j; - - for (j = 0; j < 256; j++) - { - png_uint_32 ig = (j << (8-shift)) + i; - - if (shift != 0) - ig = (ig * 65535U + max_by_2)/max; - - sub_table[j] = (png_uint_16)ig; - } - } - } -} - -/* NOTE: this function expects the *inverse* of the overall gamma transformation - * required. - */ -static void -png_build_16to8_table(png_structrp png_ptr, png_uint_16pp *ptable, - PNG_CONST unsigned int shift, PNG_CONST png_fixed_point gamma_val) -{ - PNG_CONST unsigned int num = 1U << (8U - shift); - PNG_CONST unsigned int max = (1U << (16U - shift))-1U; - unsigned int i; - png_uint_32 last; - - png_uint_16pp table = *ptable = - (png_uint_16pp)png_calloc(png_ptr, num * (sizeof (png_uint_16p))); - - /* 'num' is the number of tables and also the number of low bits of low - * bits of the input 16-bit value used to select a table. Each table is - * itself indexed by the high 8 bits of the value. - */ - for (i = 0; i < num; i++) - table[i] = (png_uint_16p)png_malloc(png_ptr, - 256 * (sizeof (png_uint_16))); - - /* 'gamma_val' is set to the reciprocal of the value calculated above, so - * pow(out,g) is an *input* value. 'last' is the last input value set. - * - * In the loop 'i' is used to find output values. Since the output is - * 8-bit there are only 256 possible values. The tables are set up to - * select the closest possible output value for each input by finding - * the input value at the boundary between each pair of output values - * and filling the table up to that boundary with the lower output - * value. - * - * The boundary values are 0.5,1.5..253.5,254.5. Since these are 9-bit - * values the code below uses a 16-bit value in i; the values start at - * 128.5 (for 0.5) and step by 257, for a total of 254 values (the last - * entries are filled with 255). Start i at 128 and fill all 'last' - * table entries <= 'max' - */ - last = 0; - for (i = 0; i < 255; ++i) /* 8-bit output value */ - { - /* Find the corresponding maximum input value */ - png_uint_16 out = (png_uint_16)(i * 257U); /* 16-bit output value */ - - /* Find the boundary value in 16 bits: */ - png_uint_32 bound = png_gamma_16bit_correct(out+128U, gamma_val); - - /* Adjust (round) to (16-shift) bits: */ - bound = (bound * max + 32768U)/65535U + 1U; - - while (last < bound) - { - table[last & (0xffU >> shift)][last >> (8U - shift)] = out; - last++; - } - } - - /* And fill in the final entries. */ - while (last < (num << 8)) - { - table[last & (0xff >> shift)][last >> (8U - shift)] = 65535U; - last++; - } -} -#endif /* 16BIT */ - -/* Build a single 8-bit table: same as the 16-bit case but much simpler (and - * typically much faster). Note that libpng currently does no sBIT processing - * (apparently contrary to the spec) so a 256-entry table is always generated. - */ -static void -png_build_8bit_table(png_structrp png_ptr, png_bytepp ptable, - PNG_CONST png_fixed_point gamma_val) -{ - unsigned int i; - png_bytep table = *ptable = (png_bytep)png_malloc(png_ptr, 256); - - if (png_gamma_significant(gamma_val) != 0) - for (i=0; i<256; i++) - table[i] = png_gamma_8bit_correct(i, gamma_val); - - else - for (i=0; i<256; ++i) - table[i] = (png_byte)(i & 0xff); -} - -/* Used from png_read_destroy and below to release the memory used by the gamma - * tables. - */ -void /* PRIVATE */ -png_destroy_gamma_table(png_structrp png_ptr) -{ - png_free(png_ptr, png_ptr->gamma_table); - png_ptr->gamma_table = NULL; - -#ifdef PNG_16BIT_SUPPORTED - if (png_ptr->gamma_16_table != NULL) - { - int i; - int istop = (1 << (8 - png_ptr->gamma_shift)); - for (i = 0; i < istop; i++) - { - png_free(png_ptr, png_ptr->gamma_16_table[i]); - } - png_free(png_ptr, png_ptr->gamma_16_table); - png_ptr->gamma_16_table = NULL; - } -#endif /* 16BIT */ - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) - png_free(png_ptr, png_ptr->gamma_from_1); - png_ptr->gamma_from_1 = NULL; - png_free(png_ptr, png_ptr->gamma_to_1); - png_ptr->gamma_to_1 = NULL; - -#ifdef PNG_16BIT_SUPPORTED - if (png_ptr->gamma_16_from_1 != NULL) - { - int i; - int istop = (1 << (8 - png_ptr->gamma_shift)); - for (i = 0; i < istop; i++) - { - png_free(png_ptr, png_ptr->gamma_16_from_1[i]); - } - png_free(png_ptr, png_ptr->gamma_16_from_1); - png_ptr->gamma_16_from_1 = NULL; - } - if (png_ptr->gamma_16_to_1 != NULL) - { - int i; - int istop = (1 << (8 - png_ptr->gamma_shift)); - for (i = 0; i < istop; i++) - { - png_free(png_ptr, png_ptr->gamma_16_to_1[i]); - } - png_free(png_ptr, png_ptr->gamma_16_to_1); - png_ptr->gamma_16_to_1 = NULL; - } -#endif /* 16BIT */ -#endif /* READ_BACKGROUND || READ_ALPHA_MODE || RGB_TO_GRAY */ -} - -/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit - * tables, we don't make a full table if we are reducing to 8-bit in - * the future. Note also how the gamma_16 tables are segmented so that - * we don't need to allocate > 64K chunks for a full 16-bit table. - */ -void /* PRIVATE */ -png_build_gamma_table(png_structrp png_ptr, int bit_depth) -{ - png_debug(1, "in png_build_gamma_table"); - - /* Remove any existing table; this copes with multiple calls to - * png_read_update_info. The warning is because building the gamma tables - * multiple times is a performance hit - it's harmless but the ability to - * call png_read_update_info() multiple times is new in 1.5.6 so it seems - * sensible to warn if the app introduces such a hit. - */ - if (png_ptr->gamma_table != NULL || png_ptr->gamma_16_table != NULL) - { - png_warning(png_ptr, "gamma table being rebuilt"); - png_destroy_gamma_table(png_ptr); - } - - if (bit_depth <= 8) - { - png_build_8bit_table(png_ptr, &png_ptr->gamma_table, - png_ptr->screen_gamma > 0 ? - png_reciprocal2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma) : PNG_FP_1); - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) - if ((png_ptr->transformations & (PNG_COMPOSE | PNG_RGB_TO_GRAY)) != 0) - { - png_build_8bit_table(png_ptr, &png_ptr->gamma_to_1, - png_reciprocal(png_ptr->colorspace.gamma)); - - png_build_8bit_table(png_ptr, &png_ptr->gamma_from_1, - png_ptr->screen_gamma > 0 ? - png_reciprocal(png_ptr->screen_gamma) : - png_ptr->colorspace.gamma/* Probably doing rgb_to_gray */); - } -#endif /* READ_BACKGROUND || READ_ALPHA_MODE || RGB_TO_GRAY */ - } -#ifdef PNG_16BIT_SUPPORTED - else - { - png_byte shift, sig_bit; - - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - sig_bit = png_ptr->sig_bit.red; - - if (png_ptr->sig_bit.green > sig_bit) - sig_bit = png_ptr->sig_bit.green; - - if (png_ptr->sig_bit.blue > sig_bit) - sig_bit = png_ptr->sig_bit.blue; - } - else - sig_bit = png_ptr->sig_bit.gray; - - /* 16-bit gamma code uses this equation: - * - * ov = table[(iv & 0xff) >> gamma_shift][iv >> 8] - * - * Where 'iv' is the input color value and 'ov' is the output value - - * pow(iv, gamma). - * - * Thus the gamma table consists of up to 256 256-entry tables. The table - * is selected by the (8-gamma_shift) most significant of the low 8 bits - * of the color value then indexed by the upper 8 bits: - * - * table[low bits][high 8 bits] - * - * So the table 'n' corresponds to all those 'iv' of: - * - * ..<(n+1 << gamma_shift)-1> - * - */ - if (sig_bit > 0 && sig_bit < 16U) - /* shift == insignificant bits */ - shift = (png_byte)((16U - sig_bit) & 0xff); - - else - shift = 0; /* keep all 16 bits */ - - if ((png_ptr->transformations & (PNG_16_TO_8 | PNG_SCALE_16_TO_8)) != 0) - { - /* PNG_MAX_GAMMA_8 is the number of bits to keep - effectively - * the significant bits in the *input* when the output will - * eventually be 8 bits. By default it is 11. - */ - if (shift < (16U - PNG_MAX_GAMMA_8)) - shift = (16U - PNG_MAX_GAMMA_8); - } - - if (shift > 8U) - shift = 8U; /* Guarantees at least one table! */ - - png_ptr->gamma_shift = shift; - - /* NOTE: prior to 1.5.4 this test used to include PNG_BACKGROUND (now - * PNG_COMPOSE). This effectively smashed the background calculation for - * 16-bit output because the 8-bit table assumes the result will be - * reduced to 8 bits. - */ - if ((png_ptr->transformations & (PNG_16_TO_8 | PNG_SCALE_16_TO_8)) != 0) - png_build_16to8_table(png_ptr, &png_ptr->gamma_16_table, shift, - png_ptr->screen_gamma > 0 ? png_product2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma) : PNG_FP_1); - - else - png_build_16bit_table(png_ptr, &png_ptr->gamma_16_table, shift, - png_ptr->screen_gamma > 0 ? png_reciprocal2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma) : PNG_FP_1); - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) - if ((png_ptr->transformations & (PNG_COMPOSE | PNG_RGB_TO_GRAY)) != 0) - { - png_build_16bit_table(png_ptr, &png_ptr->gamma_16_to_1, shift, - png_reciprocal(png_ptr->colorspace.gamma)); - - /* Notice that the '16 from 1' table should be full precision, however - * the lookup on this table still uses gamma_shift, so it can't be. - * TODO: fix this. - */ - png_build_16bit_table(png_ptr, &png_ptr->gamma_16_from_1, shift, - png_ptr->screen_gamma > 0 ? png_reciprocal(png_ptr->screen_gamma) : - png_ptr->colorspace.gamma/* Probably doing rgb_to_gray */); - } -#endif /* READ_BACKGROUND || READ_ALPHA_MODE || RGB_TO_GRAY */ - } -#endif /* 16BIT */ -} -#endif /* READ_GAMMA */ - -/* HARDWARE OR SOFTWARE OPTION SUPPORT */ -#ifdef PNG_SET_OPTION_SUPPORTED -int PNGAPI -png_set_option(png_structrp png_ptr, int option, int onoff) -{ - if (png_ptr != NULL && option >= 0 && option < PNG_OPTION_NEXT && - (option & 1) == 0) - { - png_uint_32 mask = 3U << option; - png_uint_32 setting = (2U + (onoff != 0)) << option; - png_uint_32 current = png_ptr->options; - - png_ptr->options = (png_uint_32)(((current & ~mask) | setting) & 0xff); - - return (int)(current & mask) >> option; - } - - return PNG_OPTION_INVALID; -} -#endif - -/* sRGB support */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -/* sRGB conversion tables; these are machine generated with the code in - * contrib/tools/makesRGB.c. The actual sRGB transfer curve defined in the - * specification (see the article at https://en.wikipedia.org/wiki/SRGB) - * is used, not the gamma=1/2.2 approximation use elsewhere in libpng. - * The sRGB to linear table is exact (to the nearest 16-bit linear fraction). - * The inverse (linear to sRGB) table has accuracies as follows: - * - * For all possible (255*65535+1) input values: - * - * error: -0.515566 - 0.625971, 79441 (0.475369%) of readings inexact - * - * For the input values corresponding to the 65536 16-bit values: - * - * error: -0.513727 - 0.607759, 308 (0.469978%) of readings inexact - * - * In all cases the inexact readings are only off by one. - */ - -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -/* The convert-to-sRGB table is only currently required for read. */ -const png_uint_16 png_sRGB_table[256] = -{ - 0,20,40,60,80,99,119,139, - 159,179,199,219,241,264,288,313, - 340,367,396,427,458,491,526,562, - 599,637,677,718,761,805,851,898, - 947,997,1048,1101,1156,1212,1270,1330, - 1391,1453,1517,1583,1651,1720,1790,1863, - 1937,2013,2090,2170,2250,2333,2418,2504, - 2592,2681,2773,2866,2961,3058,3157,3258, - 3360,3464,3570,3678,3788,3900,4014,4129, - 4247,4366,4488,4611,4736,4864,4993,5124, - 5257,5392,5530,5669,5810,5953,6099,6246, - 6395,6547,6700,6856,7014,7174,7335,7500, - 7666,7834,8004,8177,8352,8528,8708,8889, - 9072,9258,9445,9635,9828,10022,10219,10417, - 10619,10822,11028,11235,11446,11658,11873,12090, - 12309,12530,12754,12980,13209,13440,13673,13909, - 14146,14387,14629,14874,15122,15371,15623,15878, - 16135,16394,16656,16920,17187,17456,17727,18001, - 18277,18556,18837,19121,19407,19696,19987,20281, - 20577,20876,21177,21481,21787,22096,22407,22721, - 23038,23357,23678,24002,24329,24658,24990,25325, - 25662,26001,26344,26688,27036,27386,27739,28094, - 28452,28813,29176,29542,29911,30282,30656,31033, - 31412,31794,32179,32567,32957,33350,33745,34143, - 34544,34948,35355,35764,36176,36591,37008,37429, - 37852,38278,38706,39138,39572,40009,40449,40891, - 41337,41785,42236,42690,43147,43606,44069,44534, - 45002,45473,45947,46423,46903,47385,47871,48359, - 48850,49344,49841,50341,50844,51349,51858,52369, - 52884,53401,53921,54445,54971,55500,56032,56567, - 57105,57646,58190,58737,59287,59840,60396,60955, - 61517,62082,62650,63221,63795,64372,64952,65535 -}; -#endif /* SIMPLIFIED_READ */ - -/* The base/delta tables are required for both read and write (but currently - * only the simplified versions.) - */ -const png_uint_16 png_sRGB_base[512] = -{ - 128,1782,3383,4644,5675,6564,7357,8074, - 8732,9346,9921,10463,10977,11466,11935,12384, - 12816,13233,13634,14024,14402,14769,15125,15473, - 15812,16142,16466,16781,17090,17393,17690,17981, - 18266,18546,18822,19093,19359,19621,19879,20133, - 20383,20630,20873,21113,21349,21583,21813,22041, - 22265,22487,22707,22923,23138,23350,23559,23767, - 23972,24175,24376,24575,24772,24967,25160,25352, - 25542,25730,25916,26101,26284,26465,26645,26823, - 27000,27176,27350,27523,27695,27865,28034,28201, - 28368,28533,28697,28860,29021,29182,29341,29500, - 29657,29813,29969,30123,30276,30429,30580,30730, - 30880,31028,31176,31323,31469,31614,31758,31902, - 32045,32186,32327,32468,32607,32746,32884,33021, - 33158,33294,33429,33564,33697,33831,33963,34095, - 34226,34357,34486,34616,34744,34873,35000,35127, - 35253,35379,35504,35629,35753,35876,35999,36122, - 36244,36365,36486,36606,36726,36845,36964,37083, - 37201,37318,37435,37551,37668,37783,37898,38013, - 38127,38241,38354,38467,38580,38692,38803,38915, - 39026,39136,39246,39356,39465,39574,39682,39790, - 39898,40005,40112,40219,40325,40431,40537,40642, - 40747,40851,40955,41059,41163,41266,41369,41471, - 41573,41675,41777,41878,41979,42079,42179,42279, - 42379,42478,42577,42676,42775,42873,42971,43068, - 43165,43262,43359,43456,43552,43648,43743,43839, - 43934,44028,44123,44217,44311,44405,44499,44592, - 44685,44778,44870,44962,45054,45146,45238,45329, - 45420,45511,45601,45692,45782,45872,45961,46051, - 46140,46229,46318,46406,46494,46583,46670,46758, - 46846,46933,47020,47107,47193,47280,47366,47452, - 47538,47623,47709,47794,47879,47964,48048,48133, - 48217,48301,48385,48468,48552,48635,48718,48801, - 48884,48966,49048,49131,49213,49294,49376,49458, - 49539,49620,49701,49782,49862,49943,50023,50103, - 50183,50263,50342,50422,50501,50580,50659,50738, - 50816,50895,50973,51051,51129,51207,51285,51362, - 51439,51517,51594,51671,51747,51824,51900,51977, - 52053,52129,52205,52280,52356,52432,52507,52582, - 52657,52732,52807,52881,52956,53030,53104,53178, - 53252,53326,53400,53473,53546,53620,53693,53766, - 53839,53911,53984,54056,54129,54201,54273,54345, - 54417,54489,54560,54632,54703,54774,54845,54916, - 54987,55058,55129,55199,55269,55340,55410,55480, - 55550,55620,55689,55759,55828,55898,55967,56036, - 56105,56174,56243,56311,56380,56448,56517,56585, - 56653,56721,56789,56857,56924,56992,57059,57127, - 57194,57261,57328,57395,57462,57529,57595,57662, - 57728,57795,57861,57927,57993,58059,58125,58191, - 58256,58322,58387,58453,58518,58583,58648,58713, - 58778,58843,58908,58972,59037,59101,59165,59230, - 59294,59358,59422,59486,59549,59613,59677,59740, - 59804,59867,59930,59993,60056,60119,60182,60245, - 60308,60370,60433,60495,60558,60620,60682,60744, - 60806,60868,60930,60992,61054,61115,61177,61238, - 61300,61361,61422,61483,61544,61605,61666,61727, - 61788,61848,61909,61969,62030,62090,62150,62211, - 62271,62331,62391,62450,62510,62570,62630,62689, - 62749,62808,62867,62927,62986,63045,63104,63163, - 63222,63281,63340,63398,63457,63515,63574,63632, - 63691,63749,63807,63865,63923,63981,64039,64097, - 64155,64212,64270,64328,64385,64443,64500,64557, - 64614,64672,64729,64786,64843,64900,64956,65013, - 65070,65126,65183,65239,65296,65352,65409,65465 -}; - -const png_byte png_sRGB_delta[512] = -{ - 207,201,158,129,113,100,90,82,77,72,68,64,61,59,56,54, - 52,50,49,47,46,45,43,42,41,40,39,39,38,37,36,36, - 35,34,34,33,33,32,32,31,31,30,30,30,29,29,28,28, - 28,27,27,27,27,26,26,26,25,25,25,25,24,24,24,24, - 23,23,23,23,23,22,22,22,22,22,22,21,21,21,21,21, - 21,20,20,20,20,20,20,20,20,19,19,19,19,19,19,19, - 19,18,18,18,18,18,18,18,18,18,18,17,17,17,17,17, - 17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, - 11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 -}; -#endif /* SIMPLIFIED READ/WRITE sRGB support */ - -/* SIMPLIFIED READ/WRITE SUPPORT */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -static int -png_image_free_function(png_voidp argument) -{ - png_imagep image = png_voidcast(png_imagep, argument); - png_controlp cp = image->opaque; - png_control c; - - /* Double check that we have a png_ptr - it should be impossible to get here - * without one. - */ - if (cp->png_ptr == NULL) - return 0; - - /* First free any data held in the control structure. */ -# ifdef PNG_STDIO_SUPPORTED - if (cp->owned_file != 0) - { - FILE *fp = png_voidcast(FILE*, cp->png_ptr->io_ptr); - cp->owned_file = 0; - - /* Ignore errors here. */ - if (fp != NULL) - { - cp->png_ptr->io_ptr = NULL; - (void)fclose(fp); - } - } -# endif - - /* Copy the control structure so that the original, allocated, version can be - * safely freed. Notice that a png_error here stops the remainder of the - * cleanup, but this is probably fine because that would indicate bad memory - * problems anyway. - */ - c = *cp; - image->opaque = &c; - png_free(c.png_ptr, cp); - - /* Then the structures, calling the correct API. */ - if (c.for_write != 0) - { -# ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED - png_destroy_write_struct(&c.png_ptr, &c.info_ptr); -# else - png_error(c.png_ptr, "simplified write not supported"); -# endif - } - else - { -# ifdef PNG_SIMPLIFIED_READ_SUPPORTED - png_destroy_read_struct(&c.png_ptr, &c.info_ptr, NULL); -# else - png_error(c.png_ptr, "simplified read not supported"); -# endif - } - - /* Success. */ - return 1; -} - -void PNGAPI -png_image_free(png_imagep image) -{ - /* Safely call the real function, but only if doing so is safe at this point - * (if not inside an error handling context). Otherwise assume - * png_safe_execute will call this API after the return. - */ - if (image != NULL && image->opaque != NULL && - image->opaque->error_buf == NULL) - { - /* Ignore errors here: */ - (void)png_safe_execute(image, png_image_free_function, image); - image->opaque = NULL; - } -} - -int /* PRIVATE */ -png_image_error(png_imagep image, png_const_charp error_message) -{ - /* Utility to log an error. */ - png_safecat(image->message, (sizeof image->message), 0, error_message); - image->warning_or_error |= PNG_IMAGE_ERROR; - png_image_free(image); - return 0; -} - -#endif /* SIMPLIFIED READ/WRITE */ -#endif /* READ || WRITE */ diff --git a/src/png/libpng/png.h b/src/png/libpng/png.h deleted file mode 100644 index 4c873f5c2..000000000 --- a/src/png/libpng/png.h +++ /dev/null @@ -1,3278 +0,0 @@ - -/* png.h - header file for PNG reference library - * - * libpng version 1.6.34, September 29, 2017 - * - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license (See LICENSE, below) - * - * Authors and maintainers: - * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat - * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.6.34, September 29, 2017: - * Glenn Randers-Pehrson. - * See also "Contributing Authors", below. - */ - -/* - * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: - * - * If you modify libpng you may insert additional notices immediately following - * this sentence. - * - * This code is released under the libpng license. - * - * libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are - * Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are - * derived from libpng-1.0.6, and are distributed according to the same - * disclaimer and license as libpng-1.0.6 with the following individuals - * added to the list of Contributing Authors: - * - * Simon-Pierre Cadieux - * Eric S. Raymond - * Mans Rullgard - * Cosmin Truta - * Gilles Vollant - * James Yu - * Mandar Sahastrabuddhe - * Google Inc. - * Vadim Barkov - * - * and with the following additions to the disclaimer: - * - * There is no warranty against interference with your enjoyment of the - * library or against infringement. There is no warranty that our - * efforts or the library will fulfill any of your particular purposes - * or needs. This library is provided with all faults, and the entire - * risk of satisfactory quality, performance, accuracy, and effort is with - * the user. - * - * Some files in the "contrib" directory and some configure-generated - * files that are distributed with libpng have other copyright owners and - * are released under other open source licenses. - * - * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are - * Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from - * libpng-0.96, and are distributed according to the same disclaimer and - * license as libpng-0.96, with the following individuals added to the list - * of Contributing Authors: - * - * Tom Lane - * Glenn Randers-Pehrson - * Willem van Schaik - * - * libpng versions 0.89, June 1996, through 0.96, May 1997, are - * Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, - * and are distributed according to the same disclaimer and license as - * libpng-0.88, with the following individuals added to the list of - * Contributing Authors: - * - * John Bowler - * Kevin Bracey - * Sam Bushell - * Magnus Holmgren - * Greg Roelofs - * Tom Tanner - * - * Some files in the "scripts" directory have other copyright owners - * but are released under this license. - * - * libpng versions 0.5, May 1995, through 0.88, January 1996, are - * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. - * - * For the purposes of this copyright and license, "Contributing Authors" - * is defined as the following set of individuals: - * - * Andreas Dilger - * Dave Martindale - * Guy Eric Schalnat - * Paul Schmidt - * Tim Wegner - * - * The PNG Reference Library is supplied "AS IS". The Contributing Authors - * and Group 42, Inc. disclaim all warranties, expressed or implied, - * including, without limitation, the warranties of merchantability and of - * fitness for any purpose. The Contributing Authors and Group 42, Inc. - * assume no liability for direct, indirect, incidental, special, exemplary, - * or consequential damages, which may result from the use of the PNG - * Reference Library, even if advised of the possibility of such damage. - * - * Permission is hereby granted to use, copy, modify, and distribute this - * source code, or portions hereof, for any purpose, without fee, subject - * to the following restrictions: - * - * 1. The origin of this source code must not be misrepresented. - * - * 2. Altered versions must be plainly marked as such and must not - * be misrepresented as being the original source. - * - * 3. This Copyright notice may not be removed or altered from any - * source or altered source distribution. - * - * The Contributing Authors and Group 42, Inc. specifically permit, without - * fee, and encourage the use of this source code as a component to - * supporting the PNG file format in commercial products. If you use this - * source code in a product, acknowledgment is not required but would be - * appreciated. - * - * END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE. - * - * TRADEMARK: - * - * The name "libpng" has not been registered by the Copyright owner - * as a trademark in any jurisdiction. However, because libpng has - * been distributed and maintained world-wide, continually since 1995, - * the Copyright owner claims "common-law trademark protection" in any - * jurisdiction where common-law trademark is recognized. - * - * OSI CERTIFICATION: - * - * Libpng is OSI Certified Open Source Software. OSI Certified Open Source is - * a certification mark of the Open Source Initiative. OSI has not addressed - * the additional disclaimers inserted at version 1.0.7. - * - * EXPORT CONTROL: - * - * The Copyright owner believes that the Export Control Classification - * Number (ECCN) for libpng is EAR99, which means not subject to export - * controls or International Traffic in Arms Regulations (ITAR) because - * it is open source, publicly available software, that does not contain - * any encryption software. See the EAR, paragraphs 734.3(b)(3) and - * 734.7(b). - */ - -/* - * A "png_get_copyright" function is available, for convenient use in "about" - * boxes and the like: - * - * printf("%s", png_get_copyright(NULL)); - * - * Also, the PNG logo (in PNG format, of course) is supplied in the - * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). - */ - -/* - * The contributing authors would like to thank all those who helped - * with testing, bug fixes, and patience. This wouldn't have been - * possible without all of you. - * - * Thanks to Frank J. T. Wojcik for helping with the documentation. - */ - -/* Note about libpng version numbers: - * - * Due to various miscommunications, unforeseen code incompatibilities - * and occasional factors outside the authors' control, version numbering - * on the library has not always been consistent and straightforward. - * The following table summarizes matters since version 0.89c, which was - * the first widely used release: - * - * source png.h png.h shared-lib - * version string int version - * ------- ------ ----- ---------- - * 0.89c "1.0 beta 3" 0.89 89 1.0.89 - * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] - * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] - * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] - * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] - * 0.97c 0.97 97 2.0.97 - * 0.98 0.98 98 2.0.98 - * 0.99 0.99 98 2.0.99 - * 0.99a-m 0.99 99 2.0.99 - * 1.00 1.00 100 2.1.0 [100 should be 10000] - * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] - * 1.0.1 png.h string is 10001 2.1.0 - * 1.0.1a-e identical to the 10002 from here on, the shared library - * 1.0.2 source version) 10002 is 2.V where V is the source code - * 1.0.2a-b 10003 version, except as noted. - * 1.0.3 10003 - * 1.0.3a-d 10004 - * 1.0.4 10004 - * 1.0.4a-f 10005 - * 1.0.5 (+ 2 patches) 10005 - * 1.0.5a-d 10006 - * 1.0.5e-r 10100 (not source compatible) - * 1.0.5s-v 10006 (not binary compatible) - * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) - * 1.0.6d-f 10007 (still binary incompatible) - * 1.0.6g 10007 - * 1.0.6h 10007 10.6h (testing xy.z so-numbering) - * 1.0.6i 10007 10.6i - * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) - * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) - * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) - * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) - * 1.0.7 1 10007 (still compatible) - * ... - * 1.0.19 10 10019 10.so.0.19[.0] - * ... - * 1.2.59 13 10257 12.so.0.59[.0] - * ... - * 1.5.30 15 10527 15.so.15.30[.0] - * ... - * 1.6.34 16 10633 16.so.16.34[.0] - * - * Henceforth the source version will match the shared-library major - * and minor numbers; the shared-library major version number will be - * used for changes in backward compatibility, as it is intended. The - * PNG_LIBPNG_VER macro, which is not used within libpng but is available - * for applications, is an unsigned integer of the form xyyzz corresponding - * to the source version x.y.z (leading zeros in y and z). Beta versions - * were given the previous public release number plus a letter, until - * version 1.0.6j; from then on they were given the upcoming public - * release number plus "betaNN" or "rcNN". - * - * Binary incompatibility exists only when applications make direct access - * to the info_ptr or png_ptr members through png.h, and the compiled - * application is loaded with a different version of the library. - * - * DLLNUM will change each time there are forward or backward changes - * in binary compatibility (e.g., when a new feature is added). - * - * See libpng.txt or libpng.3 for more information. The PNG specification - * is available as a W3C Recommendation and as an ISO Specification, - * - * - * If you just need to read a PNG file and don't want to read the documentation - * skip to the end of this file and read the section entitled 'simplified API'. - */ - -/* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.34" -#define PNG_HEADER_VERSION_STRING " libpng version 1.6.34 - September 29, 2017\n" - -#define PNG_LIBPNG_VER_SONUM 16 -#define PNG_LIBPNG_VER_DLLNUM 16 - -/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ -#define PNG_LIBPNG_VER_MAJOR 1 -#define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 34 - -/* This should match the numeric part of the final component of - * PNG_LIBPNG_VER_STRING, omitting any leading zero: - */ - -#define PNG_LIBPNG_VER_BUILD 0 - -/* Release Status */ -#define PNG_LIBPNG_BUILD_ALPHA 1 -#define PNG_LIBPNG_BUILD_BETA 2 -#define PNG_LIBPNG_BUILD_RC 3 -#define PNG_LIBPNG_BUILD_STABLE 4 -#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 - -/* Release-Specific Flags */ -#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with - PNG_LIBPNG_BUILD_STABLE only */ -#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with - PNG_LIBPNG_BUILD_SPECIAL */ -#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with - PNG_LIBPNG_BUILD_PRIVATE */ - -#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE - -/* Careful here. At one time, Guy wanted to use 082, but that would be octal. - * We must not include leading zeros. - * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only - * version 1.0.0 was mis-numbered 100 instead of 10000). From - * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release - */ -#define PNG_LIBPNG_VER 10634 /* 1.6.34 */ - -/* Library configuration: these options cannot be changed after - * the library has been built. - */ -#ifndef PNGLCONF_H -/* If pnglibconf.h is missing, you can - * copy scripts/pnglibconf.h.prebuilt to pnglibconf.h - */ -# include "pnglibconf.h" -#endif - -#ifndef PNG_VERSION_INFO_ONLY -/* Machine specific configuration. */ -# include "pngconf.h" -#endif - -/* - * Added at libpng-1.2.8 - * - * Ref MSDN: Private as priority over Special - * VS_FF_PRIVATEBUILD File *was not* built using standard release - * procedures. If this value is given, the StringFileInfo block must - * contain a PrivateBuild string. - * - * VS_FF_SPECIALBUILD File *was* built by the original company using - * standard release procedures but is a variation of the standard - * file of the same version number. If this value is given, the - * StringFileInfo block must contain a SpecialBuild string. - */ - -#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ -# define PNG_LIBPNG_BUILD_TYPE \ - (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) -#else -# ifdef PNG_LIBPNG_SPECIALBUILD -# define PNG_LIBPNG_BUILD_TYPE \ - (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) -# else -# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) -# endif -#endif - -#ifndef PNG_VERSION_INFO_ONLY - -/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Version information for C files, stored in png.c. This had better match - * the version above. - */ -#define png_libpng_ver png_get_header_ver(NULL) - -/* This file is arranged in several sections: - * - * 1. [omitted] - * 2. Any configuration options that can be specified by for the application - * code when it is built. (Build time configuration is in pnglibconf.h) - * 3. Type definitions (base types are defined in pngconf.h), structure - * definitions. - * 4. Exported library functions. - * 5. Simplified API. - * 6. Implementation options. - * - * The library source code has additional files (principally pngpriv.h) that - * allow configuration of the library. - */ - -/* Section 1: [omitted] */ - -/* Section 2: run time configuration - * See pnglibconf.h for build time configuration - * - * Run time configuration allows the application to choose between - * implementations of certain arithmetic APIs. The default is set - * at build time and recorded in pnglibconf.h, but it is safe to - * override these (and only these) settings. Note that this won't - * change what the library does, only application code, and the - * settings can (and probably should) be made on a per-file basis - * by setting the #defines before including png.h - * - * Use macros to read integers from PNG data or use the exported - * functions? - * PNG_USE_READ_MACROS: use the macros (see below) Note that - * the macros evaluate their argument multiple times. - * PNG_NO_USE_READ_MACROS: call the relevant library function. - * - * Use the alternative algorithm for compositing alpha samples that - * does not use division? - * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' - * algorithm. - * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. - * - * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is - * false? - * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error - * APIs to png_warning. - * Otherwise the calls are mapped to png_error. - */ - -/* Section 3: type definitions, including structures and compile time - * constants. - * See pngconf.h for base types that vary by machine/system - */ - -/* This triggers a compiler error in png.c, if png.c and png.h - * do not agree upon the version number. - */ -typedef char* png_libpng_version_1_6_34; - -/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. - * - * png_struct is the cache of information used while reading or writing a single - * PNG file. One of these is always required, although the simplified API - * (below) hides the creation and destruction of it. - */ -typedef struct png_struct_def png_struct; -typedef const png_struct * png_const_structp; -typedef png_struct * png_structp; -typedef png_struct * * png_structpp; - -/* png_info contains information read from or to be written to a PNG file. One - * or more of these must exist while reading or creating a PNG file. The - * information is not used by libpng during read but is used to control what - * gets written when a PNG file is created. "png_get_" function calls read - * information during read and "png_set_" functions calls write information - * when creating a PNG. - * been moved into a separate header file that is not accessible to - * applications. Read libpng-manual.txt or libpng.3 for more info. - */ -typedef struct png_info_def png_info; -typedef png_info * png_infop; -typedef const png_info * png_const_infop; -typedef png_info * * png_infopp; - -/* Types with names ending 'p' are pointer types. The corresponding types with - * names ending 'rp' are identical pointer types except that the pointer is - * marked 'restrict', which means that it is the only pointer to the object - * passed to the function. Applications should not use the 'restrict' types; - * it is always valid to pass 'p' to a pointer with a function argument of the - * corresponding 'rp' type. Different compilers have different rules with - * regard to type matching in the presence of 'restrict'. For backward - * compatibility libpng callbacks never have 'restrict' in their parameters and, - * consequentially, writing portable application code is extremely difficult if - * an attempt is made to use 'restrict'. - */ -typedef png_struct * PNG_RESTRICT png_structrp; -typedef const png_struct * PNG_RESTRICT png_const_structrp; -typedef png_info * PNG_RESTRICT png_inforp; -typedef const png_info * PNG_RESTRICT png_const_inforp; - -/* Three color definitions. The order of the red, green, and blue, (and the - * exact size) is not important, although the size of the fields need to - * be png_byte or png_uint_16 (as defined below). - */ -typedef struct png_color_struct -{ - png_byte red; - png_byte green; - png_byte blue; -} png_color; -typedef png_color * png_colorp; -typedef const png_color * png_const_colorp; -typedef png_color * * png_colorpp; - -typedef struct png_color_16_struct -{ - png_byte index; /* used for palette files */ - png_uint_16 red; /* for use in red green blue files */ - png_uint_16 green; - png_uint_16 blue; - png_uint_16 gray; /* for use in grayscale files */ -} png_color_16; -typedef png_color_16 * png_color_16p; -typedef const png_color_16 * png_const_color_16p; -typedef png_color_16 * * png_color_16pp; - -typedef struct png_color_8_struct -{ - png_byte red; /* for use in red green blue files */ - png_byte green; - png_byte blue; - png_byte gray; /* for use in grayscale files */ - png_byte alpha; /* for alpha channel files */ -} png_color_8; -typedef png_color_8 * png_color_8p; -typedef const png_color_8 * png_const_color_8p; -typedef png_color_8 * * png_color_8pp; - -/* - * The following two structures are used for the in-core representation - * of sPLT chunks. - */ -typedef struct png_sPLT_entry_struct -{ - png_uint_16 red; - png_uint_16 green; - png_uint_16 blue; - png_uint_16 alpha; - png_uint_16 frequency; -} png_sPLT_entry; -typedef png_sPLT_entry * png_sPLT_entryp; -typedef const png_sPLT_entry * png_const_sPLT_entryp; -typedef png_sPLT_entry * * png_sPLT_entrypp; - -/* When the depth of the sPLT palette is 8 bits, the color and alpha samples - * occupy the LSB of their respective members, and the MSB of each member - * is zero-filled. The frequency member always occupies the full 16 bits. - */ - -typedef struct png_sPLT_struct -{ - png_charp name; /* palette name */ - png_byte depth; /* depth of palette samples */ - png_sPLT_entryp entries; /* palette entries */ - png_int_32 nentries; /* number of palette entries */ -} png_sPLT_t; -typedef png_sPLT_t * png_sPLT_tp; -typedef const png_sPLT_t * png_const_sPLT_tp; -typedef png_sPLT_t * * png_sPLT_tpp; - -#ifdef PNG_TEXT_SUPPORTED -/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, - * and whether that contents is compressed or not. The "key" field - * points to a regular zero-terminated C string. The "text" fields can be a - * regular C string, an empty string, or a NULL pointer. - * However, the structure returned by png_get_text() will always contain - * the "text" field as a regular zero-terminated C string (possibly - * empty), never a NULL pointer, so it can be safely used in printf() and - * other string-handling functions. Note that the "itxt_length", "lang", and - * "lang_key" members of the structure only exist when the library is built - * with iTXt chunk support. Prior to libpng-1.4.0 the library was built by - * default without iTXt support. Also note that when iTXt *is* supported, - * the "lang" and "lang_key" fields contain NULL pointers when the - * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or - * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the - * same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag" - * which is always 0 or 1, or its "compression method" which is always 0. - */ -typedef struct png_text_struct -{ - int compression; /* compression value: - -1: tEXt, none - 0: zTXt, deflate - 1: iTXt, none - 2: iTXt, deflate */ - png_charp key; /* keyword, 1-79 character description of "text" */ - png_charp text; /* comment, may be an empty string (ie "") - or a NULL pointer */ - png_size_t text_length; /* length of the text string */ - png_size_t itxt_length; /* length of the itxt string */ - png_charp lang; /* language code, 0-79 characters - or a NULL pointer */ - png_charp lang_key; /* keyword translated UTF-8 string, 0 or more - chars or a NULL pointer */ -} png_text; -typedef png_text * png_textp; -typedef const png_text * png_const_textp; -typedef png_text * * png_textpp; -#endif - -/* Supported compression types for text in PNG files (tEXt, and zTXt). - * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ -#define PNG_TEXT_COMPRESSION_NONE_WR -3 -#define PNG_TEXT_COMPRESSION_zTXt_WR -2 -#define PNG_TEXT_COMPRESSION_NONE -1 -#define PNG_TEXT_COMPRESSION_zTXt 0 -#define PNG_ITXT_COMPRESSION_NONE 1 -#define PNG_ITXT_COMPRESSION_zTXt 2 -#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ - -/* png_time is a way to hold the time in an machine independent way. - * Two conversions are provided, both from time_t and struct tm. There - * is no portable way to convert to either of these structures, as far - * as I know. If you know of a portable way, send it to me. As a side - * note - PNG has always been Year 2000 compliant! - */ -typedef struct png_time_struct -{ - png_uint_16 year; /* full year, as in, 1995 */ - png_byte month; /* month of year, 1 - 12 */ - png_byte day; /* day of month, 1 - 31 */ - png_byte hour; /* hour of day, 0 - 23 */ - png_byte minute; /* minute of hour, 0 - 59 */ - png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ -} png_time; -typedef png_time * png_timep; -typedef const png_time * png_const_timep; -typedef png_time * * png_timepp; - -#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) ||\ - defined(PNG_USER_CHUNKS_SUPPORTED) -/* png_unknown_chunk is a structure to hold queued chunks for which there is - * no specific support. The idea is that we can use this to queue - * up private chunks for output even though the library doesn't actually - * know about their semantics. - * - * The data in the structure is set by libpng on read and used on write. - */ -typedef struct png_unknown_chunk_t -{ - png_byte name[5]; /* Textual chunk name with '\0' terminator */ - png_byte *data; /* Data, should not be modified on read! */ - png_size_t size; - - /* On write 'location' must be set using the flag values listed below. - * Notice that on read it is set by libpng however the values stored have - * more bits set than are listed below. Always treat the value as a - * bitmask. On write set only one bit - setting multiple bits may cause the - * chunk to be written in multiple places. - */ - png_byte location; /* mode of operation at read time */ -} -png_unknown_chunk; - -typedef png_unknown_chunk * png_unknown_chunkp; -typedef const png_unknown_chunk * png_const_unknown_chunkp; -typedef png_unknown_chunk * * png_unknown_chunkpp; -#endif - -/* Flag values for the unknown chunk location byte. */ -#define PNG_HAVE_IHDR 0x01 -#define PNG_HAVE_PLTE 0x02 -#define PNG_AFTER_IDAT 0x08 - -/* Maximum positive integer used in PNG is (2^31)-1 */ -#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) -#define PNG_UINT_32_MAX ((png_uint_32)(-1)) -#define PNG_SIZE_MAX ((png_size_t)(-1)) - -/* These are constants for fixed point values encoded in the - * PNG specification manner (x100000) - */ -#define PNG_FP_1 100000 -#define PNG_FP_HALF 50000 -#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL) -#define PNG_FP_MIN (-PNG_FP_MAX) - -/* These describe the color_type field in png_info. */ -/* color type masks */ -#define PNG_COLOR_MASK_PALETTE 1 -#define PNG_COLOR_MASK_COLOR 2 -#define PNG_COLOR_MASK_ALPHA 4 - -/* color types. Note that not all combinations are legal */ -#define PNG_COLOR_TYPE_GRAY 0 -#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) -#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) -#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) -#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) -/* aliases */ -#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA -#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA - -/* This is for compression type. PNG 1.0-1.2 only define the single type. */ -#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ -#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE - -/* This is for filter type. PNG 1.0-1.2 only define the single type. */ -#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ -#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ -#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE - -/* These are for the interlacing type. These values should NOT be changed. */ -#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ -#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ -#define PNG_INTERLACE_LAST 2 /* Not a valid value */ - -/* These are for the oFFs chunk. These values should NOT be changed. */ -#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ -#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ -#define PNG_OFFSET_LAST 2 /* Not a valid value */ - -/* These are for the pCAL chunk. These values should NOT be changed. */ -#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ -#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ -#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ -#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ -#define PNG_EQUATION_LAST 4 /* Not a valid value */ - -/* These are for the sCAL chunk. These values should NOT be changed. */ -#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ -#define PNG_SCALE_METER 1 /* meters per pixel */ -#define PNG_SCALE_RADIAN 2 /* radians per pixel */ -#define PNG_SCALE_LAST 3 /* Not a valid value */ - -/* These are for the pHYs chunk. These values should NOT be changed. */ -#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ -#define PNG_RESOLUTION_METER 1 /* pixels/meter */ -#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ - -/* These are for the sRGB chunk. These values should NOT be changed. */ -#define PNG_sRGB_INTENT_PERCEPTUAL 0 -#define PNG_sRGB_INTENT_RELATIVE 1 -#define PNG_sRGB_INTENT_SATURATION 2 -#define PNG_sRGB_INTENT_ABSOLUTE 3 -#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ - -/* This is for text chunks */ -#define PNG_KEYWORD_MAX_LENGTH 79 - -/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ -#define PNG_MAX_PALETTE_LENGTH 256 - -/* These determine if an ancillary chunk's data has been successfully read - * from the PNG header, or if the application has filled in the corresponding - * data in the info_struct to be written into the output file. The values - * of the PNG_INFO_ defines should NOT be changed. - */ -#define PNG_INFO_gAMA 0x0001U -#define PNG_INFO_sBIT 0x0002U -#define PNG_INFO_cHRM 0x0004U -#define PNG_INFO_PLTE 0x0008U -#define PNG_INFO_tRNS 0x0010U -#define PNG_INFO_bKGD 0x0020U -#define PNG_INFO_hIST 0x0040U -#define PNG_INFO_pHYs 0x0080U -#define PNG_INFO_oFFs 0x0100U -#define PNG_INFO_tIME 0x0200U -#define PNG_INFO_pCAL 0x0400U -#define PNG_INFO_sRGB 0x0800U /* GR-P, 0.96a */ -#define PNG_INFO_iCCP 0x1000U /* ESR, 1.0.6 */ -#define PNG_INFO_sPLT 0x2000U /* ESR, 1.0.6 */ -#define PNG_INFO_sCAL 0x4000U /* ESR, 1.0.6 */ -#define PNG_INFO_IDAT 0x8000U /* ESR, 1.0.6 */ -#define PNG_INFO_eXIf 0x10000U /* GR-P, 1.6.31 */ - -/* This is used for the transformation routines, as some of them - * change these values for the row. It also should enable using - * the routines for other purposes. - */ -typedef struct png_row_info_struct -{ - png_uint_32 width; /* width of row */ - png_size_t rowbytes; /* number of bytes in row */ - png_byte color_type; /* color type of row */ - png_byte bit_depth; /* bit depth of row */ - png_byte channels; /* number of channels (1, 2, 3, or 4) */ - png_byte pixel_depth; /* bits per pixel (depth * channels) */ -} png_row_info; - -typedef png_row_info * png_row_infop; -typedef png_row_info * * png_row_infopp; - -/* These are the function types for the I/O functions and for the functions - * that allow the user to override the default I/O functions with his or her - * own. The png_error_ptr type should match that of user-supplied warning - * and error functions, while the png_rw_ptr type should match that of the - * user read/write data functions. Note that the 'write' function must not - * modify the buffer it is passed. The 'read' function, on the other hand, is - * expected to return the read data in the buffer. - */ -typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); -typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); -typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); -typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, - int)); -typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, - int)); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); -typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); - -/* The following callback receives png_uint_32 row_number, int pass for the - * png_bytep data of the row. When transforming an interlaced image the - * row number is the row number within the sub-image of the interlace pass, so - * the value will increase to the height of the sub-image (not the full image) - * then reset to 0 for the next pass. - * - * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to - * find the output pixel (x,y) given an interlaced sub-image pixel - * (row,col,pass). (See below for these macros.) - */ -typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, - png_uint_32, int)); -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, - png_bytep)); -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, - png_unknown_chunkp)); -#endif -#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED -/* not used anywhere */ -/* typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); */ -#endif - -#ifdef PNG_SETJMP_SUPPORTED -/* This must match the function definition in , and the application - * must include this before png.h to obtain the definition of jmp_buf. The - * function is required to be PNG_NORETURN, but this is not checked. If the - * function does return the application will crash via an abort() or similar - * system level call. - * - * If you get a warning here while building the library you may need to make - * changes to ensure that pnglibconf.h records the calling convention used by - * your compiler. This may be very difficult - try using a different compiler - * to build the library! - */ -PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); -#endif - -/* Transform masks for the high-level interface */ -#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ -#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ -#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ -#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ -#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ -#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ -#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ -#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ -#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ -#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ -#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ -#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ -#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ -/* Added to libpng-1.2.34 */ -#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER -#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ -/* Added to libpng-1.4.0 */ -#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ -/* Added to libpng-1.5.4 */ -#define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ -#if INT_MAX >= 0x8000 /* else this might break */ -#define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ -#endif - -/* Flags for MNG supported features */ -#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 -#define PNG_FLAG_MNG_FILTER_64 0x04 -#define PNG_ALL_MNG_FEATURES 0x05 - -/* NOTE: prior to 1.5 these functions had no 'API' style declaration, - * this allowed the zlib default functions to be used on Windows - * platforms. In 1.5 the zlib default malloc (which just calls malloc and - * ignores the first argument) should be completely compatible with the - * following. - */ -typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, - png_alloc_size_t)); -typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); - -/* Section 4: exported functions - * Here are the function definitions most commonly used. This is not - * the place to find out how to use libpng. See libpng-manual.txt for the - * full explanation, see example.c for the summary. This just provides - * a simple one line description of the use of each function. - * - * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in - * pngconf.h and in the *.dfn files in the scripts directory. - * - * PNG_EXPORT(ordinal, type, name, (args)); - * - * ordinal: ordinal that is used while building - * *.def files. The ordinal value is only - * relevant when preprocessing png.h with - * the *.dfn files for building symbol table - * entries, and are removed by pngconf.h. - * type: return type of the function - * name: function name - * args: function arguments, with types - * - * When we wish to append attributes to a function prototype we use - * the PNG_EXPORTA() macro instead. - * - * PNG_EXPORTA(ordinal, type, name, (args), attributes); - * - * ordinal, type, name, and args: same as in PNG_EXPORT(). - * attributes: function attributes - */ - -/* Returns the version number of the library */ -PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); - -/* Tell lib we have already handled the first magic bytes. - * Handling more than 8 bytes from the beginning of the file is an error. - */ -PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes)); - -/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a - * PNG file. Returns zero if the supplied bytes match the 8-byte PNG - * signature, and non-zero otherwise. Having num_to_check == 0 or - * start > 7 will always fail (ie return non-zero). - */ -PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, - png_size_t num_to_check)); - -/* Simple signature checking function. This is the same as calling - * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). - */ -#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) - -/* Allocate and initialize png_ptr struct for reading, and any other memory. */ -PNG_EXPORTA(4, png_structp, png_create_read_struct, - (png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn), - PNG_ALLOCATED); - -/* Allocate and initialize png_ptr struct for writing, and any other memory */ -PNG_EXPORTA(5, png_structp, png_create_write_struct, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn), - PNG_ALLOCATED); - -PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, - (png_const_structrp png_ptr)); - -PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr, - png_size_t size)); - -/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp - * match up. - */ -#ifdef PNG_SETJMP_SUPPORTED -/* This function returns the jmp_buf built in to *png_ptr. It must be - * supplied with an appropriate 'longjmp' function to use on that jmp_buf - * unless the default error function is overridden in which case NULL is - * acceptable. The size of the jmp_buf is checked against the actual size - * allocated by the library - the call will return NULL on a mismatch - * indicating an ABI mismatch. - */ -PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, - png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); -# define png_jmpbuf(png_ptr) \ - (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) -#else -# define png_jmpbuf(png_ptr) \ - (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) -#endif -/* This function should be used by libpng applications in place of - * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it - * will use it; otherwise it will call PNG_ABORT(). This function was - * added in libpng-1.5.0. - */ -PNG_EXPORTA(9, void, png_longjmp, (png_const_structrp png_ptr, int val), - PNG_NORETURN); - -#ifdef PNG_READ_SUPPORTED -/* Reset the compression stream */ -PNG_EXPORTA(10, int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED); -#endif - -/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ -#ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORTA(11, png_structp, png_create_read_struct_2, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); -PNG_EXPORTA(12, png_structp, png_create_write_struct_2, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); -#endif - -/* Write the PNG file signature. */ -PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr)); - -/* Write a PNG chunk - size, type, (optional) data, CRC. */ -PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep - chunk_name, png_const_bytep data, png_size_t length)); - -/* Write the start of a PNG chunk - length and chunk name. */ -PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr, - png_const_bytep chunk_name, png_uint_32 length)); - -/* Write the data of a PNG chunk started with png_write_chunk_start(). */ -PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr, - png_const_bytep data, png_size_t length)); - -/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ -PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr)); - -/* Allocate and initialize the info structure */ -PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr), - PNG_ALLOCATED); - -/* DEPRECATED: this function allowed init structures to be created using the - * default allocation method (typically malloc). Use is deprecated in 1.6.0 and - * the API will be removed in the future. - */ -PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr, - png_size_t png_info_struct_size), PNG_DEPRECATED); - -/* Writes all the PNG information before the image. */ -PNG_EXPORT(20, void, png_write_info_before_PLTE, - (png_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(21, void, png_write_info, - (png_structrp png_ptr, png_const_inforp info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the information before the actual image data. */ -PNG_EXPORT(22, void, png_read_info, - (png_structrp png_ptr, png_inforp info_ptr)); -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED - /* Convert to a US string format: there is no localization support in this - * routine. The original implementation used a 29 character buffer in - * png_struct, this will be removed in future versions. - */ -#if PNG_LIBPNG_VER < 10700 -/* To do: remove this from libpng17 (and from libpng17/png.c and pngstruct.h) */ -PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr, - png_const_timep ptime),PNG_DEPRECATED); -#endif -PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, (char out[29], - png_const_timep ptime)); -#endif - -#ifdef PNG_CONVERT_tIME_SUPPORTED -/* Convert from a struct tm to png_time */ -PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, - const struct tm * ttime)); - -/* Convert from time_t to png_time. Uses gmtime() */ -PNG_EXPORT(25, void, png_convert_from_time_t, (png_timep ptime, time_t ttime)); -#endif /* CONVERT_tIME */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ -PNG_EXPORT(26, void, png_set_expand, (png_structrp png_ptr)); -PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr)); -PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structrp png_ptr)); -PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* Expand to 16-bit channels, forces conversion of palette to RGB and expansion - * of a tRNS chunk if present. - */ -PNG_EXPORT(221, void, png_set_expand_16, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Use blue, green, red order for pixels. */ -PNG_EXPORT(30, void, png_set_bgr, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* Expand the grayscale to 24-bit RGB if necessary. */ -PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* Reduce RGB to grayscale. */ -#define PNG_ERROR_ACTION_NONE 1 -#define PNG_ERROR_ACTION_WARN 2 -#define PNG_ERROR_ACTION_ERROR 3 -#define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ - -PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structrp png_ptr, - int error_action, double red, double green)) -PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr, - int error_action, png_fixed_point red, png_fixed_point green)) - -PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp - png_ptr)); -#endif - -#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, - png_colorp palette)); -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -/* How the alpha channel is interpreted - this affects how the color channels - * of a PNG file are returned to the calling application when an alpha channel, - * or a tRNS chunk in a palette file, is present. - * - * This has no effect on the way pixels are written into a PNG output - * datastream. The color samples in a PNG datastream are never premultiplied - * with the alpha samples. - * - * The default is to return data according to the PNG specification: the alpha - * channel is a linear measure of the contribution of the pixel to the - * corresponding composited pixel, and the color channels are unassociated - * (not premultiplied). The gamma encoded color channels must be scaled - * according to the contribution and to do this it is necessary to undo - * the encoding, scale the color values, perform the composition and reencode - * the values. This is the 'PNG' mode. - * - * The alternative is to 'associate' the alpha with the color information by - * storing color channel values that have been scaled by the alpha. - * image. These are the 'STANDARD', 'ASSOCIATED' or 'PREMULTIPLIED' modes - * (the latter being the two common names for associated alpha color channels). - * - * For the 'OPTIMIZED' mode, a pixel is treated as opaque only if the alpha - * value is equal to the maximum value. - * - * The final choice is to gamma encode the alpha channel as well. This is - * broken because, in practice, no implementation that uses this choice - * correctly undoes the encoding before handling alpha composition. Use this - * choice only if other serious errors in the software or hardware you use - * mandate it; the typical serious error is for dark halos to appear around - * opaque areas of the composited PNG image because of arithmetic overflow. - * - * The API function png_set_alpha_mode specifies which of these choices to use - * with an enumerated 'mode' value and the gamma of the required output: - */ -#define PNG_ALPHA_PNG 0 /* according to the PNG standard */ -#define PNG_ALPHA_STANDARD 1 /* according to Porter/Duff */ -#define PNG_ALPHA_ASSOCIATED 1 /* as above; this is the normal practice */ -#define PNG_ALPHA_PREMULTIPLIED 1 /* as above */ -#define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ -#define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ - -PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structrp png_ptr, int mode, - double output_gamma)) -PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr, - int mode, png_fixed_point output_gamma)) -#endif - -#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) -/* The output_gamma value is a screen gamma in libpng terminology: it expresses - * how to decode the output values, not how they are encoded. - */ -#define PNG_DEFAULT_sRGB -1 /* sRGB gamma and color space */ -#define PNG_GAMMA_MAC_18 -2 /* Old Mac '1.8' gamma and color space */ -#define PNG_GAMMA_sRGB 220000 /* Television standards--matches sRGB gamma */ -#define PNG_GAMMA_LINEAR PNG_FP_1 /* Linear */ -#endif - -/* The following are examples of calls to png_set_alpha_mode to achieve the - * required overall gamma correction and, where necessary, alpha - * premultiplication. - * - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); - * This is the default libpng handling of the alpha channel - it is not - * pre-multiplied into the color components. In addition the call states - * that the output is for a sRGB system and causes all PNG files without gAMA - * chunks to be assumed to be encoded using sRGB. - * - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); - * In this case the output is assumed to be something like an sRGB conformant - * display preceeded by a power-law lookup table of power 1.45. This is how - * early Mac systems behaved. - * - * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR); - * This is the classic Jim Blinn approach and will work in academic - * environments where everything is done by the book. It has the shortcoming - * of assuming that input PNG data with no gamma information is linear - this - * is unlikely to be correct unless the PNG files where generated locally. - * Most of the time the output precision will be so low as to show - * significant banding in dark areas of the image. - * - * png_set_expand_16(pp); - * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_DEFAULT_sRGB); - * This is a somewhat more realistic Jim Blinn inspired approach. PNG files - * are assumed to have the sRGB encoding if not marked with a gamma value and - * the output is always 16 bits per component. This permits accurate scaling - * and processing of the data. If you know that your input PNG files were - * generated locally you might need to replace PNG_DEFAULT_sRGB with the - * correct value for your system. - * - * png_set_alpha_mode(pp, PNG_ALPHA_OPTIMIZED, PNG_DEFAULT_sRGB); - * If you just need to composite the PNG image onto an existing background - * and if you control the code that does this you can use the optimization - * setting. In this case you just copy completely opaque pixels to the - * output. For pixels that are not completely transparent (you just skip - * those) you do the composition math using png_composite or png_composite_16 - * below then encode the resultant 8-bit or 16-bit values to match the output - * encoding. - * - * Other cases - * If neither the PNG nor the standard linear encoding work for you because - * of the software or hardware you use then you have a big problem. The PNG - * case will probably result in halos around the image. The linear encoding - * will probably result in a washed out, too bright, image (it's actually too - * contrasty.) Try the ALPHA_OPTIMIZED mode above - this will probably - * substantially reduce the halos. Alternatively try: - * - * png_set_alpha_mode(pp, PNG_ALPHA_BROKEN, PNG_DEFAULT_sRGB); - * This option will also reduce the halos, but there will be slight dark - * halos round the opaque parts of the image where the background is light. - * In the OPTIMIZED mode the halos will be light halos where the background - * is dark. Take your pick - the halos are unavoidable unless you can get - * your hardware/software fixed! (The OPTIMIZED approach is slightly - * faster.) - * - * When the default gamma of PNG files doesn't match the output gamma. - * If you have PNG files with no gamma information png_set_alpha_mode allows - * you to provide a default gamma, but it also sets the ouput gamma to the - * matching value. If you know your PNG files have a gamma that doesn't - * match the output you can take advantage of the fact that - * png_set_alpha_mode always sets the output gamma but only sets the PNG - * default if it is not already set: - * - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); - * The first call sets both the default and the output gamma values, the - * second call overrides the output gamma without changing the default. This - * is easier than achieving the same effect with png_set_gamma. You must use - * PNG_ALPHA_PNG for the first call - internal checking in png_set_alpha will - * fire if more than one call to png_set_alpha_mode and png_set_background is - * made in the same read operation, however multiple calls with PNG_ALPHA_PNG - * are ignored. - */ - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -PNG_EXPORT(36, void, png_set_strip_alpha, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -PNG_EXPORT(37, void, png_set_swap_alpha, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ -PNG_EXPORT(39, void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler, - int flags)); -/* The values of the PNG_FILLER_ defines should NOT be changed */ -# define PNG_FILLER_BEFORE 0 -# define PNG_FILLER_AFTER 1 -/* Add an alpha byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ -PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, - png_uint_32 filler, int flags)); -#endif /* READ_FILLER || WRITE_FILLER */ - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Swap bytes in 16-bit depth files. */ -PNG_EXPORT(41, void, png_set_swap, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ -PNG_EXPORT(42, void, png_set_packing, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ - defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* Swap packing order of pixels in bytes. */ -PNG_EXPORT(43, void, png_set_packswap, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -/* Converts files to legal bit depths. */ -PNG_EXPORT(44, void, png_set_shift, (png_structrp png_ptr, png_const_color_8p - true_bits)); -#endif - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* Have the code handle the interlacing. Returns the number of passes. - * MUST be called before png_read_update_info or png_start_read_image, - * otherwise it will not have the desired effect. Note that it is still - * necessary to call png_read_row or png_read_rows png_get_image_height - * times for each pass. -*/ -PNG_EXPORT(45, int, png_set_interlace_handling, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -/* Invert monochrome files */ -PNG_EXPORT(46, void, png_set_invert_mono, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* Handle alpha and tRNS by replacing with a background color. Prior to - * libpng-1.5.4 this API must not be called before the PNG file header has been - * read. Doing so will result in unexpected behavior and possible warnings or - * errors if the PNG file contains a bKGD chunk. - */ -PNG_FP_EXPORT(47, void, png_set_background, (png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma)) -PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, png_fixed_point background_gamma)) -#endif -#ifdef PNG_READ_BACKGROUND_SUPPORTED -# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 -# define PNG_BACKGROUND_GAMMA_SCREEN 1 -# define PNG_BACKGROUND_GAMMA_FILE 2 -# define PNG_BACKGROUND_GAMMA_UNIQUE 3 -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -/* Scale a 16-bit depth file down to 8-bit, accurately. */ -PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_16_TO_8_SUPPORTED /* Name prior to 1.5.4 */ -/* Strip the second byte of information from a 16-bit depth file. */ -PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* Turn on quantizing, and reduce the palette to the number of colors - * available. - */ -PNG_EXPORT(49, void, png_set_quantize, (png_structrp png_ptr, - png_colorp palette, int num_palette, int maximum_colors, - png_const_uint_16p histogram, int full_quantize)); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* The threshold on gamma processing is configurable but hard-wired into the - * library. The following is the floating point variant. - */ -#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) - -/* Handle gamma correction. Screen_gamma=(display_exponent). - * NOTE: this API simply sets the screen and file gamma values. It will - * therefore override the value for gamma in a PNG file if it is called after - * the file header has been read - use with care - call before reading the PNG - * file for best results! - * - * These routines accept the same gamma values as png_set_alpha_mode (described - * above). The PNG_GAMMA_ defines and PNG_DEFAULT_sRGB can be passed to either - * API (floating point or fixed.) Notice, however, that the 'file_gamma' value - * is the inverse of a 'screen gamma' value. - */ -PNG_FP_EXPORT(50, void, png_set_gamma, (png_structrp png_ptr, - double screen_gamma, double override_file_gamma)) -PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structrp png_ptr, - png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) -#endif - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -/* Set how many lines between output flushes - 0 for no flushing */ -PNG_EXPORT(51, void, png_set_flush, (png_structrp png_ptr, int nrows)); -/* Flush the current PNG output buffer */ -PNG_EXPORT(52, void, png_write_flush, (png_structrp png_ptr)); -#endif - -/* Optional update palette with requested transformations */ -PNG_EXPORT(53, void, png_start_read_image, (png_structrp png_ptr)); - -/* Optional call to update the users info structure */ -PNG_EXPORT(54, void, png_read_update_info, (png_structrp png_ptr, - png_inforp info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read one or more rows of image data. */ -PNG_EXPORT(55, void, png_read_rows, (png_structrp png_ptr, png_bytepp row, - png_bytepp display_row, png_uint_32 num_rows)); -#endif - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read a row of data. */ -PNG_EXPORT(56, void, png_read_row, (png_structrp png_ptr, png_bytep row, - png_bytep display_row)); -#endif - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the whole image into memory at once. */ -PNG_EXPORT(57, void, png_read_image, (png_structrp png_ptr, png_bytepp image)); -#endif - -/* Write a row of image data */ -PNG_EXPORT(58, void, png_write_row, (png_structrp png_ptr, - png_const_bytep row)); - -/* Write a few rows of image data: (*row) is not written; however, the type - * is declared as writeable to maintain compatibility with previous versions - * of libpng and to allow the 'display_row' array from read_rows to be passed - * unchanged to write_rows. - */ -PNG_EXPORT(59, void, png_write_rows, (png_structrp png_ptr, png_bytepp row, - png_uint_32 num_rows)); - -/* Write the image data */ -PNG_EXPORT(60, void, png_write_image, (png_structrp png_ptr, png_bytepp image)); - -/* Write the end of the PNG file. */ -PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr, - png_inforp info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the end of the PNG file. */ -PNG_EXPORT(62, void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr)); -#endif - -/* Free any memory associated with the png_info_struct */ -PNG_EXPORT(63, void, png_destroy_info_struct, (png_const_structrp png_ptr, - png_infopp info_ptr_ptr)); - -/* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, - png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); - -/* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, - png_infopp info_ptr_ptr)); - -/* Set the libpng method of handling chunk CRC errors */ -PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, - int ancil_action)); - -/* Values for png_set_crc_action() say how to handle CRC errors in - * ancillary and critical chunks, and whether to use the data contained - * therein. Note that it is impossible to "discard" data in a critical - * chunk. For versions prior to 0.90, the action was always error/quit, - * whereas in version 0.90 and later, the action for CRC errors in ancillary - * chunks is warn/discard. These values should NOT be changed. - * - * value action:critical action:ancillary - */ -#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ -#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ -#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ -#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ -#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ -#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ - -#ifdef PNG_WRITE_SUPPORTED -/* These functions give the user control over the scan-line filtering in - * libpng and the compression methods used by zlib. These functions are - * mainly useful for testing, as the defaults should work with most users. - * Those users who are tight on memory or want faster performance at the - * expense of compression can modify them. See the compression library - * header file (zlib.h) for an explination of the compression functions. - */ - -/* Set the filtering method(s) used by libpng. Currently, the only valid - * value for "method" is 0. - */ -PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, - int filters)); -#endif /* WRITE */ - -/* Flags for png_set_filter() to say which filters to use. The flags - * are chosen so that they don't conflict with real filter types - * below, in case they are supplied instead of the #defined constants. - * These values should NOT be changed. - */ -#define PNG_NO_FILTERS 0x00 -#define PNG_FILTER_NONE 0x08 -#define PNG_FILTER_SUB 0x10 -#define PNG_FILTER_UP 0x20 -#define PNG_FILTER_AVG 0x40 -#define PNG_FILTER_PAETH 0x80 -#define PNG_FAST_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP) -#define PNG_ALL_FILTERS (PNG_FAST_FILTERS | PNG_FILTER_AVG | PNG_FILTER_PAETH) - -/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. - * These defines should NOT be changed. - */ -#define PNG_FILTER_VALUE_NONE 0 -#define PNG_FILTER_VALUE_SUB 1 -#define PNG_FILTER_VALUE_UP 2 -#define PNG_FILTER_VALUE_AVG 3 -#define PNG_FILTER_VALUE_PAETH 4 -#define PNG_FILTER_VALUE_LAST 5 - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ -PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, - int heuristic_method, int num_weights, png_const_doublep filter_weights, - png_const_doublep filter_costs)) -PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, - (png_structrp png_ptr, int heuristic_method, int num_weights, - png_const_fixed_point_p filter_weights, - png_const_fixed_point_p filter_costs)) -#endif /* WRITE_WEIGHTED_FILTER */ - -/* The following are no longer used and will be removed from libpng-1.7: */ -#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ -#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ -#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ -#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ - -/* Set the library compression level. Currently, valid values range from - * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 - * (0 - no compression, 9 - "maximal" compression). Note that tests have - * shown that zlib compression levels 3-6 usually perform as well as level 9 - * for PNG images, and do considerably fewer caclulations. In the future, - * these values may not correspond directly to the zlib compression levels. - */ -#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, - int level)); - -PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structrp png_ptr, - int mem_level)); - -PNG_EXPORT(71, void, png_set_compression_strategy, (png_structrp png_ptr, - int strategy)); - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, - int window_bits)); - -PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, - int method)); -#endif /* WRITE_CUSTOMIZE_COMPRESSION */ - -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -/* Also set zlib parameters for compressing non-IDAT chunks */ -PNG_EXPORT(222, void, png_set_text_compression_level, (png_structrp png_ptr, - int level)); - -PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structrp png_ptr, - int mem_level)); - -PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structrp png_ptr, - int strategy)); - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -PNG_EXPORT(225, void, png_set_text_compression_window_bits, - (png_structrp png_ptr, int window_bits)); - -PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, - int method)); -#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ -#endif /* WRITE */ - -/* These next functions are called for input/output, memory, and error - * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, - * and call standard C I/O routines such as fread(), fwrite(), and - * fprintf(). These functions can be made to use other I/O routines - * at run time for those applications that need to handle I/O in a - * different manner by calling png_set_???_fn(). See libpng-manual.txt for - * more information. - */ - -#ifdef PNG_STDIO_SUPPORTED -/* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); -#endif - -/* Replace the (error and abort), and warning functions with user - * supplied functions. If no messages are to be printed you must still - * write and use replacement functions. The replacement error_fn should - * still do a longjmp to the last setjmp location if you are using this - * method of error handling. If error_fn or warning_fn is NULL, the - * default function will be used. - */ - -PNG_EXPORT(75, void, png_set_error_fn, (png_structrp png_ptr, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); - -/* Return the user pointer associated with the error functions */ -PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr)); - -/* Replace the default data output functions with a user supplied one(s). - * If buffered output is not used, then output_flush_fn can be set to NULL. - * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time - * output_flush_fn will be ignored (and thus can be NULL). - * It is probably a mistake to use NULL for output_flush_fn if - * write_data_fn is not also NULL unless you have built libpng with - * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's - * default flush function, which uses the standard *FILE structure, will - * be used. - */ -PNG_EXPORT(77, void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); - -/* Replace the default data input function with a user supplied one. */ -PNG_EXPORT(78, void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr read_data_fn)); - -/* Return the user pointer associated with the I/O functions */ -PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr)); - -PNG_EXPORT(80, void, png_set_read_status_fn, (png_structrp png_ptr, - png_read_status_ptr read_row_fn)); - -PNG_EXPORT(81, void, png_set_write_status_fn, (png_structrp png_ptr, - png_write_status_ptr write_row_fn)); - -#ifdef PNG_USER_MEM_SUPPORTED -/* Replace the default memory allocation functions with user supplied one(s). */ -PNG_EXPORT(82, void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn)); -/* Return the user pointer associated with the memory functions */ -PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr)); -#endif - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structrp png_ptr, - png_user_transform_ptr read_user_transform_fn)); -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structrp png_ptr, - png_user_transform_ptr write_user_transform_fn)); -#endif - -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -PNG_EXPORT(86, void, png_set_user_transform_info, (png_structrp png_ptr, - png_voidp user_transform_ptr, int user_transform_depth, - int user_transform_channels)); -/* Return the user pointer associated with the user transform functions */ -PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, - (png_const_structrp png_ptr)); -#endif - -#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED -/* Return information about the row currently being processed. Note that these - * APIs do not fail but will return unexpected results if called outside a user - * transform callback. Also note that when transforming an interlaced image the - * row number is the row number within the sub-image of the interlace pass, so - * the value will increase to the height of the sub-image (not the full image) - * then reset to 0 for the next pass. - * - * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to - * find the output pixel (x,y) given an interlaced sub-image pixel - * (row,col,pass). (See below for these macros.) - */ -PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp)); -PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); -#endif - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -/* This callback is called only for *unknown* chunks. If - * PNG_HANDLE_AS_UNKNOWN_SUPPORTED is set then it is possible to set known - * chunks to be treated as unknown, however in this case the callback must do - * any processing required by the chunk (e.g. by calling the appropriate - * png_set_ APIs.) - * - * There is no write support - on write, by default, all the chunks in the - * 'unknown' list are written in the specified position. - * - * The integer return from the callback function is interpreted thus: - * - * negative: An error occurred; png_chunk_error will be called. - * zero: The chunk was not handled, the chunk will be saved. A critical - * chunk will cause an error at this point unless it is to be saved. - * positive: The chunk was handled, libpng will ignore/discard it. - * - * See "INTERACTION WTIH USER CHUNK CALLBACKS" below for important notes about - * how this behavior will change in libpng 1.7 - */ -PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr, - png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr)); -#endif - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -/* Sets the function callbacks for the push reader, and a pointer to a - * user-defined structure available to the callback functions. - */ -PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structrp png_ptr, - png_voidp progressive_ptr, png_progressive_info_ptr info_fn, - png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); - -/* Returns the user pointer associated with the push read functions */ -PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, - (png_const_structrp png_ptr)); - -/* Function to be called when data becomes available */ -PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr, - png_inforp info_ptr, png_bytep buffer, png_size_t buffer_size)); - -/* A function which may be called *only* within png_process_data to stop the - * processing of any more data. The function returns the number of bytes - * remaining, excluding any that libpng has cached internally. A subsequent - * call to png_process_data must supply these bytes again. If the argument - * 'save' is set to true the routine will first save all the pending data and - * will always return 0. - */ -PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structrp, int save)); - -/* A function which may be called *only* outside (after) a call to - * png_process_data. It returns the number of bytes of data to skip in the - * input. Normally it will return 0, but if it returns a non-zero value the - * application must skip than number of bytes of input data and pass the - * following data to the next call to png_process_data. - */ -PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); - -/* Function that combines rows. 'new_row' is a flag that should come from - * the callback and be non-NULL if anything needs to be done; the library - * stores its own version of the new data internally and ignores the passed - * in value. - */ -PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, - png_bytep old_row, png_const_bytep new_row)); -#endif /* PROGRESSIVE_READ */ - -PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED); -/* Added at libpng version 1.4.0 */ -PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED); - -/* Added at libpng version 1.2.4 */ -PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED); - -/* Frees a pointer allocated by png_malloc() */ -PNG_EXPORT(97, void, png_free, (png_const_structrp png_ptr, png_voidp ptr)); - -/* Free data that was allocated internally */ -PNG_EXPORT(98, void, png_free_data, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 free_me, int num)); - -/* Reassign responsibility for freeing existing data, whether allocated - * by libpng or by the application; this works on the png_info structure passed - * in, it does not change the state for other png_info structures. - * - * It is unlikely that this function works correctly as of 1.6.0 and using it - * may result either in memory leaks or double free of allocated data. - */ -PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, - png_inforp info_ptr, int freer, png_uint_32 mask)); - -/* Assignments for png_data_freer */ -#define PNG_DESTROY_WILL_FREE_DATA 1 -#define PNG_SET_WILL_FREE_DATA 1 -#define PNG_USER_WILL_FREE_DATA 2 -/* Flags for png_ptr->free_me and info_ptr->free_me */ -#define PNG_FREE_HIST 0x0008U -#define PNG_FREE_ICCP 0x0010U -#define PNG_FREE_SPLT 0x0020U -#define PNG_FREE_ROWS 0x0040U -#define PNG_FREE_PCAL 0x0080U -#define PNG_FREE_SCAL 0x0100U -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_FREE_UNKN 0x0200U -#endif -/* PNG_FREE_LIST 0x0400U removed in 1.6.0 because it is ignored */ -#define PNG_FREE_PLTE 0x1000U -#define PNG_FREE_TRNS 0x2000U -#define PNG_FREE_TEXT 0x4000U -#define PNG_FREE_EXIF 0x8000U /* Added at libpng-1.6.31 */ -#define PNG_FREE_ALL 0xffffU -#define PNG_FREE_MUL 0x4220U /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ - -#ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED); -PNG_EXPORTA(101, void, png_free_default, (png_const_structrp png_ptr, - png_voidp ptr), PNG_DEPRECATED); -#endif - -#ifdef PNG_ERROR_TEXT_SUPPORTED -/* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORTA(102, void, png_error, (png_const_structrp png_ptr, - png_const_charp error_message), PNG_NORETURN); - -/* The same, but the chunk name is prepended to the error string. */ -PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr, - png_const_charp error_message), PNG_NORETURN); - -#else -/* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN); -# define png_error(s1,s2) png_err(s1) -# define png_chunk_error(s1,s2) png_err(s1) -#endif - -#ifdef PNG_WARNINGS_SUPPORTED -/* Non-fatal error in libpng. Can continue, but may have a problem. */ -PNG_EXPORT(105, void, png_warning, (png_const_structrp png_ptr, - png_const_charp warning_message)); - -/* Non-fatal error in libpng, chunk name is prepended to message. */ -PNG_EXPORT(106, void, png_chunk_warning, (png_const_structrp png_ptr, - png_const_charp warning_message)); -#else -# define png_warning(s1,s2) ((void)(s1)) -# define png_chunk_warning(s1,s2) ((void)(s1)) -#endif - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -/* Benign error in libpng. Can continue, but may have a problem. - * User can choose whether to handle as a fatal error or as a warning. */ -PNG_EXPORT(107, void, png_benign_error, (png_const_structrp png_ptr, - png_const_charp warning_message)); - -#ifdef PNG_READ_SUPPORTED -/* Same, chunk name is prepended to message (only during read) */ -PNG_EXPORT(108, void, png_chunk_benign_error, (png_const_structrp png_ptr, - png_const_charp warning_message)); -#endif - -PNG_EXPORT(109, void, png_set_benign_errors, - (png_structrp png_ptr, int allowed)); -#else -# ifdef PNG_ALLOW_BENIGN_ERRORS -# define png_benign_error png_warning -# define png_chunk_benign_error png_chunk_warning -# else -# define png_benign_error png_error -# define png_chunk_benign_error png_chunk_error -# endif -#endif - -/* The png_set_ functions are for storing values in the png_info_struct. - * Similarly, the png_get_ calls are used to read values from the - * png_info_struct, either storing the parameters in the passed variables, or - * setting pointers into the png_info_struct where the data is stored. The - * png_get_ functions return a non-zero value if the data was available - * in info_ptr, or return zero and do not change any of the parameters if the - * data was not available. - * - * These functions should be used instead of directly accessing png_info - * to avoid problems with future changes in the size and internal layout of - * png_info_struct. - */ -/* Returns "flag" if chunk data is valid in info_ptr. */ -PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 flag)); - -/* Returns number of bytes needed to hold a transformed row. */ -PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -#ifdef PNG_INFO_IMAGE_SUPPORTED -/* Returns row_pointers, which is an array of pointers to scanlines that was - * returned from png_read_png(). - */ -PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Set row_pointers, which is an array of pointers to scanlines for use - * by png_write_png(). - */ -PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytepp row_pointers)); -#endif - -/* Returns number of color channels in image. */ -PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* Returns image width in pixels. */ -PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image height in pixels. */ -PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image bit_depth. */ -PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image color_type. */ -PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image filter_type. */ -PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image interlace_type. */ -PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image compression_type. */ -PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image resolution in pixels per meter, from pHYs chunk data. */ -PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -/* Returns pixel aspect ratio, computed from pHYs chunk data. */ -PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) - -/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ -PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -#endif /* EASY_ACCESS */ - -#ifdef PNG_READ_SUPPORTED -/* Returns pointer to signature string read from PNG header */ -PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); -#endif - -#ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr, - png_inforp info_ptr, png_color_16p *background)); -#endif - -#ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(132, void, png_set_bKGD, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_color_16p background)); -#endif - -#ifdef PNG_cHRM_SUPPORTED -PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr, - png_const_inforp info_ptr, double *white_x, double *white_y, double *red_x, - double *red_y, double *green_x, double *green_y, double *blue_x, - double *blue_y)) -PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr, - png_const_inforp info_ptr, double *red_X, double *red_Y, double *red_Z, - double *green_X, double *green_Y, double *green_Z, double *blue_X, - double *blue_Y, double *blue_Z)) -PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_white_x, png_fixed_point *int_white_y, - png_fixed_point *int_red_x, png_fixed_point *int_red_y, - png_fixed_point *int_green_x, png_fixed_point *int_green_y, - png_fixed_point *int_blue_x, png_fixed_point *int_blue_y)) -PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_red_X, png_fixed_point *int_red_Y, - png_fixed_point *int_red_Z, png_fixed_point *int_green_X, - png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, - png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, - png_fixed_point *int_blue_Z)) -#endif - -#ifdef PNG_cHRM_SUPPORTED -PNG_FP_EXPORT(135, void, png_set_cHRM, (png_const_structrp png_ptr, - png_inforp info_ptr, - double white_x, double white_y, double red_x, double red_y, double green_x, - double green_y, double blue_x, double blue_y)) -PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_const_structrp png_ptr, - png_inforp info_ptr, double red_X, double red_Y, double red_Z, - double green_X, double green_Y, double green_Z, double blue_X, - double blue_Y, double blue_Z)) -PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, png_fixed_point int_white_x, - png_fixed_point int_white_y, png_fixed_point int_red_x, - png_fixed_point int_red_y, png_fixed_point int_green_x, - png_fixed_point int_green_y, png_fixed_point int_blue_x, - png_fixed_point int_blue_y)) -PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, - png_fixed_point int_red_Z, png_fixed_point int_green_X, - png_fixed_point int_green_Y, png_fixed_point int_green_Z, - png_fixed_point int_blue_X, png_fixed_point int_blue_Y, - png_fixed_point int_blue_Z)) -#endif - -#ifdef PNG_eXIf_SUPPORTED -PNG_EXPORT(246, png_uint_32, png_get_eXIf, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytep *exif)); -PNG_EXPORT(247, void, png_set_eXIf, (png_const_structrp png_ptr, - png_inforp info_ptr, const png_bytep exif)); - -PNG_EXPORT(248, png_uint_32, png_get_eXIf_1, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *num_exif, png_bytep *exif)); -PNG_EXPORT(249, void, png_set_eXIf_1, (png_const_structrp png_ptr, - png_inforp info_ptr, const png_uint_32 num_exif, const png_bytep exif)); -#endif - -#ifdef PNG_gAMA_SUPPORTED -PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr, - png_const_inforp info_ptr, double *file_gamma)) -PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_file_gamma)) -#endif - -#ifdef PNG_gAMA_SUPPORTED -PNG_FP_EXPORT(139, void, png_set_gAMA, (png_const_structrp png_ptr, - png_inforp info_ptr, double file_gamma)) -PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, png_fixed_point int_file_gamma)) -#endif - -#ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_16p *hist)); -PNG_EXPORT(142, void, png_set_hIST, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_uint_16p hist)); -#endif - -PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height, - int *bit_depth, int *color_type, int *interlace_method, - int *compression_method, int *filter_method)); - -PNG_EXPORT(144, void, png_set_IHDR, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_method, int compression_method, - int filter_method)); - -#ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, - int *unit_type)); -#endif - -#ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(146, void, png_set_oFFs, (png_const_structrp png_ptr, - png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y, - int unit_type)); -#endif - -#ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr, - png_inforp info_ptr, png_charp *purpose, png_int_32 *X0, - png_int_32 *X1, int *type, int *nparams, png_charp *units, - png_charpp *params)); -#endif - -#ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(148, void, png_set_pCAL, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1, - int type, int nparams, png_const_charp units, png_charpp params)); -#endif - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, - int *unit_type)); -#endif - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(150, void, png_set_pHYs, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); -#endif - -PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr, - png_inforp info_ptr, png_colorp *palette, int *num_palette)); - -PNG_EXPORT(152, void, png_set_PLTE, (png_structrp png_ptr, - png_inforp info_ptr, png_const_colorp palette, int num_palette)); - -#ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_color_8p *sig_bit)); -#endif - -#ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(154, void, png_set_sBIT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_color_8p sig_bit)); -#endif - -#ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr, - png_const_inforp info_ptr, int *file_srgb_intent)); -#endif - -#ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(156, void, png_set_sRGB, (png_const_structrp png_ptr, - png_inforp info_ptr, int srgb_intent)); -PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr, - png_inforp info_ptr, int srgb_intent)); -#endif - -#ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr, - png_inforp info_ptr, png_charpp name, int *compression_type, - png_bytepp profile, png_uint_32 *proflen)); -#endif - -#ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(159, void, png_set_iCCP, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_charp name, int compression_type, - png_const_bytep profile, png_uint_32 proflen)); -#endif - -#ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(160, int, png_get_sPLT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_sPLT_tpp entries)); -#endif - -#ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(161, void, png_set_sPLT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)); -#endif - -#ifdef PNG_TEXT_SUPPORTED -/* png_get_text also returns the number of text chunks in *num_text */ -PNG_EXPORT(162, int, png_get_text, (png_const_structrp png_ptr, - png_inforp info_ptr, png_textp *text_ptr, int *num_text)); -#endif - -/* Note while png_set_text() will accept a structure whose text, - * language, and translated keywords are NULL pointers, the structure - * returned by png_get_text will always contain regular - * zero-terminated C strings. They might be empty strings but - * they will never be NULL pointers. - */ - -#ifdef PNG_TEXT_SUPPORTED -PNG_EXPORT(163, void, png_set_text, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_textp text_ptr, int num_text)); -#endif - -#ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr, - png_inforp info_ptr, png_timep *mod_time)); -#endif - -#ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(165, void, png_set_tIME, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_timep mod_time)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytep *trans_alpha, int *num_trans, - png_color_16p *trans_color)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(167, void, png_set_tRNS, (png_structrp png_ptr, - png_inforp info_ptr, png_const_bytep trans_alpha, int num_trans, - png_const_color_16p trans_color)); -#endif - -#ifdef PNG_sCAL_SUPPORTED -PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr, - png_const_inforp info_ptr, int *unit, double *width, double *height)) -#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ - defined(PNG_FLOATING_POINT_SUPPORTED) -/* NOTE: this API is currently implemented using floating point arithmetic, - * consequently it can only be used on systems with floating point support. - * In any case the range of values supported by png_fixed_point is small and it - * is highly recommended that png_get_sCAL_s be used instead. - */ -PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, - png_fixed_point *width, png_fixed_point *height)) -#endif -PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, - (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, - png_charpp swidth, png_charpp sheight)); - -PNG_FP_EXPORT(170, void, png_set_sCAL, (png_const_structrp png_ptr, - png_inforp info_ptr, int unit, double width, double height)) -PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, int unit, png_fixed_point width, - png_fixed_point height)) -PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, - png_inforp info_ptr, int unit, - png_const_charp swidth, png_const_charp sheight)); -#endif /* sCAL */ - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -/* Provide the default handling for all unknown chunks or, optionally, for - * specific unknown chunks. - * - * NOTE: prior to 1.6.0 the handling specified for particular chunks on read was - * ignored and the default was used, the per-chunk setting only had an effect on - * write. If you wish to have chunk-specific handling on read in code that must - * work on earlier versions you must use a user chunk callback to specify the - * desired handling (keep or discard.) - * - * The 'keep' parameter is a PNG_HANDLE_CHUNK_ value as listed below. The - * parameter is interpreted as follows: - * - * READ: - * PNG_HANDLE_CHUNK_AS_DEFAULT: - * Known chunks: do normal libpng processing, do not keep the chunk (but - * see the comments below about PNG_HANDLE_AS_UNKNOWN_SUPPORTED) - * Unknown chunks: for a specific chunk use the global default, when used - * as the default discard the chunk data. - * PNG_HANDLE_CHUNK_NEVER: - * Discard the chunk data. - * PNG_HANDLE_CHUNK_IF_SAFE: - * Keep the chunk data if the chunk is not critical else raise a chunk - * error. - * PNG_HANDLE_CHUNK_ALWAYS: - * Keep the chunk data. - * - * If the chunk data is saved it can be retrieved using png_get_unknown_chunks, - * below. Notice that specifying "AS_DEFAULT" as a global default is equivalent - * to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks - * it simply resets the behavior to the libpng default. - * - * INTERACTION WTIH USER CHUNK CALLBACKS: - * The per-chunk handling is always used when there is a png_user_chunk_ptr - * callback and the callback returns 0; the chunk is then always stored *unless* - * it is critical and the per-chunk setting is other than ALWAYS. Notice that - * the global default is *not* used in this case. (In effect the per-chunk - * value is incremented to at least IF_SAFE.) - * - * IMPORTANT NOTE: this behavior will change in libpng 1.7 - the global and - * per-chunk defaults will be honored. If you want to preserve the current - * behavior when your callback returns 0 you must set PNG_HANDLE_CHUNK_IF_SAFE - * as the default - if you don't do this libpng 1.6 will issue a warning. - * - * If you want unhandled unknown chunks to be discarded in libpng 1.6 and - * earlier simply return '1' (handled). - * - * PNG_HANDLE_AS_UNKNOWN_SUPPORTED: - * If this is *not* set known chunks will always be handled by libpng and - * will never be stored in the unknown chunk list. Known chunks listed to - * png_set_keep_unknown_chunks will have no effect. If it is set then known - * chunks listed with a keep other than AS_DEFAULT will *never* be processed - * by libpng, in addition critical chunks must either be processed by the - * callback or saved. - * - * The IHDR and IEND chunks must not be listed. Because this turns off the - * default handling for chunks that would otherwise be recognized the - * behavior of libpng transformations may well become incorrect! - * - * WRITE: - * When writing chunks the options only apply to the chunks specified by - * png_set_unknown_chunks (below), libpng will *always* write known chunks - * required by png_set_ calls and will always write the core critical chunks - * (as required for PLTE). - * - * Each chunk in the png_set_unknown_chunks list is looked up in the - * png_set_keep_unknown_chunks list to find the keep setting, this is then - * interpreted as follows: - * - * PNG_HANDLE_CHUNK_AS_DEFAULT: - * Write safe-to-copy chunks and write other chunks if the global - * default is set to _ALWAYS, otherwise don't write this chunk. - * PNG_HANDLE_CHUNK_NEVER: - * Do not write the chunk. - * PNG_HANDLE_CHUNK_IF_SAFE: - * Write the chunk if it is safe-to-copy, otherwise do not write it. - * PNG_HANDLE_CHUNK_ALWAYS: - * Write the chunk. - * - * Note that the default behavior is effectively the opposite of the read case - - * in read unknown chunks are not stored by default, in write they are written - * by default. Also the behavior of PNG_HANDLE_CHUNK_IF_SAFE is very different - * - on write the safe-to-copy bit is checked, on read the critical bit is - * checked and on read if the chunk is critical an error will be raised. - * - * num_chunks: - * =========== - * If num_chunks is positive, then the "keep" parameter specifies the manner - * for handling only those chunks appearing in the chunk_list array, - * otherwise the chunk list array is ignored. - * - * If num_chunks is 0 the "keep" parameter specifies the default behavior for - * unknown chunks, as described above. - * - * If num_chunks is negative, then the "keep" parameter specifies the manner - * for handling all unknown chunks plus all chunks recognized by libpng - * except for the IHDR, PLTE, tRNS, IDAT, and IEND chunks (which continue to - * be processed by libpng. - */ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, - int keep, png_const_bytep chunk_list, int num_chunks)); -#endif /* HANDLE_AS_UNKNOWN */ - -/* The "keep" PNG_HANDLE_CHUNK_ parameter for the specified chunk is returned; - * the result is therefore true (non-zero) if special handling is required, - * false for the default handling. - */ -PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, - png_const_bytep chunk_name)); -#endif /* SET_UNKNOWN_CHUNKS */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_unknown_chunkp unknowns, - int num_unknowns)); - /* NOTE: prior to 1.6.0 this routine set the 'location' field of the added - * unknowns to the location currently stored in the png_struct. This is - * invariably the wrong value on write. To fix this call the following API - * for each chunk in the list with the correct location. If you know your - * code won't be compiled on earlier versions you can rely on - * png_set_unknown_chunks(write-ptr, png_get_unknown_chunks(read-ptr)) doing - * the correct thing. - */ - -PNG_EXPORT(175, void, png_set_unknown_chunk_location, - (png_const_structrp png_ptr, png_inforp info_ptr, int chunk, int location)); - -PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structrp png_ptr, - png_inforp info_ptr, png_unknown_chunkpp entries)); -#endif - -/* Png_free_data() will turn off the "valid" flag for anything it frees. - * If you need to turn it off for a chunk that your application has freed, - * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); - */ -PNG_EXPORT(177, void, png_set_invalid, (png_const_structrp png_ptr, - png_inforp info_ptr, int mask)); - -#ifdef PNG_INFO_IMAGE_SUPPORTED -/* The "params" pointer is currently not used and is for future expansion. */ -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -PNG_EXPORT(178, void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr, - int transforms, png_voidp params)); -#endif -#ifdef PNG_WRITE_SUPPORTED -PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr, - int transforms, png_voidp params)); -#endif -#endif - -PNG_EXPORT(180, png_const_charp, png_get_copyright, - (png_const_structrp png_ptr)); -PNG_EXPORT(181, png_const_charp, png_get_header_ver, - (png_const_structrp png_ptr)); -PNG_EXPORT(182, png_const_charp, png_get_header_version, - (png_const_structrp png_ptr)); -PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, - (png_const_structrp png_ptr)); - -#ifdef PNG_MNG_FEATURES_SUPPORTED -PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr, - png_uint_32 mng_features_permitted)); -#endif - -/* For use in png_set_keep_unknown, added to version 1.2.6 */ -#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 -#define PNG_HANDLE_CHUNK_NEVER 1 -#define PNG_HANDLE_CHUNK_IF_SAFE 2 -#define PNG_HANDLE_CHUNK_ALWAYS 3 -#define PNG_HANDLE_CHUNK_LAST 4 - -/* Strip the prepended error numbers ("#nnn ") from error and warning - * messages before passing them to the error or warning handler. - */ -#ifdef PNG_ERROR_NUMBERS_SUPPORTED -PNG_EXPORT(185, void, png_set_strip_error_numbers, (png_structrp png_ptr, - png_uint_32 strip_mode)); -#endif - -/* Added in libpng-1.2.6 */ -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -PNG_EXPORT(186, void, png_set_user_limits, (png_structrp png_ptr, - png_uint_32 user_width_max, png_uint_32 user_height_max)); -PNG_EXPORT(187, png_uint_32, png_get_user_width_max, - (png_const_structrp png_ptr)); -PNG_EXPORT(188, png_uint_32, png_get_user_height_max, - (png_const_structrp png_ptr)); -/* Added in libpng-1.4.0 */ -PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structrp png_ptr, - png_uint_32 user_chunk_cache_max)); -PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, - (png_const_structrp png_ptr)); -/* Added in libpng-1.4.1 */ -PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structrp png_ptr, - png_alloc_size_t user_chunk_cache_max)); -PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, - (png_const_structrp png_ptr)); -#endif - -#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) -PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -PNG_FP_EXPORT(196, float, png_get_x_offset_inches, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ -PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -#endif - -PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structrp png_ptr, - png_const_inforp info_ptr)) -#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ -PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -#endif - -# ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, - int *unit_type)); -# endif /* pHYs */ -#endif /* INCH_CONVERSIONS */ - -/* Added in libpng-1.4.0 */ -#ifdef PNG_IO_STATE_SUPPORTED -PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr)); - -/* Removed from libpng 1.6; use png_get_io_chunk_type. */ -PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr), - PNG_DEPRECATED) - -PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, - (png_const_structrp png_ptr)); - -/* The flags returned by png_get_io_state() are the following: */ -# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ -# define PNG_IO_READING 0x0001 /* currently reading */ -# define PNG_IO_WRITING 0x0002 /* currently writing */ -# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ -# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ -# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ -# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ -# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ -# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ -#endif /* IO_STATE */ - -/* Interlace support. The following macros are always defined so that if - * libpng interlace handling is turned off the macros may be used to handle - * interlaced images within the application. - */ -#define PNG_INTERLACE_ADAM7_PASSES 7 - -/* Two macros to return the first row and first column of the original, - * full, image which appears in a given pass. 'pass' is in the range 0 - * to 6 and the result is in the range 0 to 7. - */ -#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7) -#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7) - -/* A macro to return the offset between pixels in the output row for a pair of - * pixels in the input - effectively the inverse of the 'COL_SHIFT' macro that - * follows. Note that ROW_OFFSET is the offset from one row to the next whereas - * COL_OFFSET is from one column to the next, within a row. - */ -#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8) -#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1)) - -/* Two macros to help evaluate the number of rows or columns in each - * pass. This is expressed as a shift - effectively log2 of the number or - * rows or columns in each 8x8 tile of the original image. - */ -#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) -#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) - -/* Hence two macros to determine the number of rows or columns in a given - * pass of an image given its height or width. In fact these macros may - * return non-zero even though the sub-image is empty, because the other - * dimension may be empty for a small image. - */ -#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) -#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) - -/* For the reader row callbacks (both progressive and sequential) it is - * necessary to find the row in the output image given a row in an interlaced - * image, so two more macros: - */ -#define PNG_ROW_FROM_PASS_ROW(y_in, pass) \ - (((y_in)<>(((7-(off))-(pass))<<2)) & 0xF) | \ - ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0)) - -#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ - ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) -#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ - ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) - -#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED -/* With these routines we avoid an integer divide, which will be slower on - * most machines. However, it does take more operations than the corresponding - * divide method, so it may be slower on a few RISC systems. There are two - * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. - * - * Note that the rounding factors are NOT supposed to be the same! 128 and - * 32768 are correct for the NODIV code; 127 and 32767 are correct for the - * standard method. - * - * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] - */ - - /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ - -# define png_composite(composite, fg, alpha, bg) \ - { \ - png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ - * (png_uint_16)(alpha) \ - + (png_uint_16)(bg)*(png_uint_16)(255 \ - - (png_uint_16)(alpha)) + 128); \ - (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); \ - } - -# define png_composite_16(composite, fg, alpha, bg) \ - { \ - png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ - * (png_uint_32)(alpha) \ - + (png_uint_32)(bg)*(65535 \ - - (png_uint_32)(alpha)) + 32768); \ - (composite) = (png_uint_16)(0xffff & ((temp + (temp >> 16)) >> 16)); \ - } - -#else /* Standard method using integer division */ - -# define png_composite(composite, fg, alpha, bg) \ - (composite) = \ - (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \ - (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ - 127) / 255)) - -# define png_composite_16(composite, fg, alpha, bg) \ - (composite) = \ - (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \ - (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ - 32767) / 65535)) -#endif /* READ_COMPOSITE_NODIV */ - -#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); -PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); -PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); -#endif - -PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr, - png_const_bytep buf)); -/* No png_get_int_16 -- may be added if there's a real need for it. */ - -/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ -#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); -#endif -#ifdef PNG_SAVE_INT_32_SUPPORTED -PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); -#endif - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); -/* No png_save_int_16 -- may be added if there's a real need for it. */ -#endif - -#ifdef PNG_USE_READ_MACROS -/* Inline macros to do direct reads of bytes from the input buffer. - * The png_get_int_32() routine assumes we are using two's complement - * format for negative values, which is almost certainly true. - */ -# define PNG_get_uint_32(buf) \ - (((png_uint_32)(*(buf)) << 24) + \ - ((png_uint_32)(*((buf) + 1)) << 16) + \ - ((png_uint_32)(*((buf) + 2)) << 8) + \ - ((png_uint_32)(*((buf) + 3)))) - - /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the - * function) incorrectly returned a value of type png_uint_32. - */ -# define PNG_get_uint_16(buf) \ - ((png_uint_16) \ - (((unsigned int)(*(buf)) << 8) + \ - ((unsigned int)(*((buf) + 1))))) - -# define PNG_get_int_32(buf) \ - ((png_int_32)((*(buf) & 0x80) \ - ? -((png_int_32)(((png_get_uint_32(buf)^0xffffffffU)+1U)&0x7fffffffU)) \ - : (png_int_32)png_get_uint_32(buf))) - -/* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, - * but defining a macro name prefixed with PNG_PREFIX. - */ -# ifndef PNG_PREFIX -# define png_get_uint_32(buf) PNG_get_uint_32(buf) -# define png_get_uint_16(buf) PNG_get_uint_16(buf) -# define png_get_int_32(buf) PNG_get_int_32(buf) -# endif -#else -# ifdef PNG_PREFIX - /* No macros; revert to the (redefined) function */ -# define PNG_get_uint_32 (png_get_uint_32) -# define PNG_get_uint_16 (png_get_uint_16) -# define PNG_get_int_32 (png_get_int_32) -# endif -#endif - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -PNG_EXPORT(242, void, png_set_check_for_invalid_index, - (png_structrp png_ptr, int allowed)); -# ifdef PNG_GET_PALETTE_MAX_SUPPORTED -PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, - png_const_infop info_ptr)); -# endif -#endif /* CHECK_FOR_INVALID_INDEX */ - -/******************************************************************************* - * Section 5: SIMPLIFIED API - ******************************************************************************* - * - * Please read the documentation in libpng-manual.txt (TODO: write said - * documentation) if you don't understand what follows. - * - * The simplified API hides the details of both libpng and the PNG file format - * itself. It allows PNG files to be read into a very limited number of - * in-memory bitmap formats or to be written from the same formats. If these - * formats do not accomodate your needs then you can, and should, use the more - * sophisticated APIs above - these support a wide variety of in-memory formats - * and a wide variety of sophisticated transformations to those formats as well - * as a wide variety of APIs to manipulate ancillary information. - * - * To read a PNG file using the simplified API: - * - * 1) Declare a 'png_image' structure (see below) on the stack, set the - * version field to PNG_IMAGE_VERSION and the 'opaque' pointer to NULL - * (this is REQUIRED, your program may crash if you don't do it.) - * 2) Call the appropriate png_image_begin_read... function. - * 3) Set the png_image 'format' member to the required sample format. - * 4) Allocate a buffer for the image and, if required, the color-map. - * 5) Call png_image_finish_read to read the image and, if required, the - * color-map into your buffers. - * - * There are no restrictions on the format of the PNG input itself; all valid - * color types, bit depths, and interlace methods are acceptable, and the - * input image is transformed as necessary to the requested in-memory format - * during the png_image_finish_read() step. The only caveat is that if you - * request a color-mapped image from a PNG that is full-color or makes - * complex use of an alpha channel the transformation is extremely lossy and the - * result may look terrible. - * - * To write a PNG file using the simplified API: - * - * 1) Declare a 'png_image' structure on the stack and memset() it to all zero. - * 2) Initialize the members of the structure that describe the image, setting - * the 'format' member to the format of the image samples. - * 3) Call the appropriate png_image_write... function with a pointer to the - * image and, if necessary, the color-map to write the PNG data. - * - * png_image is a structure that describes the in-memory format of an image - * when it is being read or defines the in-memory format of an image that you - * need to write: - */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) - -#define PNG_IMAGE_VERSION 1 - -typedef struct png_control *png_controlp; -typedef struct -{ - png_controlp opaque; /* Initialize to NULL, free with png_image_free */ - png_uint_32 version; /* Set to PNG_IMAGE_VERSION */ - png_uint_32 width; /* Image width in pixels (columns) */ - png_uint_32 height; /* Image height in pixels (rows) */ - png_uint_32 format; /* Image format as defined below */ - png_uint_32 flags; /* A bit mask containing informational flags */ - png_uint_32 colormap_entries; - /* Number of entries in the color-map */ - - /* In the event of an error or warning the following field will be set to a - * non-zero value and the 'message' field will contain a '\0' terminated - * string with the libpng error or warning message. If both warnings and - * an error were encountered, only the error is recorded. If there - * are multiple warnings, only the first one is recorded. - * - * The upper 30 bits of this value are reserved, the low two bits contain - * a value as follows: - */ -# define PNG_IMAGE_WARNING 1 -# define PNG_IMAGE_ERROR 2 - /* - * The result is a two-bit code such that a value more than 1 indicates - * a failure in the API just called: - * - * 0 - no warning or error - * 1 - warning - * 2 - error - * 3 - error preceded by warning - */ -# define PNG_IMAGE_FAILED(png_cntrl) ((((png_cntrl).warning_or_error)&0x03)>1) - - png_uint_32 warning_or_error; - - char message[64]; -} png_image, *png_imagep; - -/* The samples of the image have one to four channels whose components have - * original values in the range 0 to 1.0: - * - * 1: A single gray or luminance channel (G). - * 2: A gray/luminance channel and an alpha channel (GA). - * 3: Three red, green, blue color channels (RGB). - * 4: Three color channels and an alpha channel (RGBA). - * - * The components are encoded in one of two ways: - * - * a) As a small integer, value 0..255, contained in a single byte. For the - * alpha channel the original value is simply value/255. For the color or - * luminance channels the value is encoded according to the sRGB specification - * and matches the 8-bit format expected by typical display devices. - * - * The color/gray channels are not scaled (pre-multiplied) by the alpha - * channel and are suitable for passing to color management software. - * - * b) As a value in the range 0..65535, contained in a 2-byte integer. All - * channels can be converted to the original value by dividing by 65535; all - * channels are linear. Color channels use the RGB encoding (RGB end-points) of - * the sRGB specification. This encoding is identified by the - * PNG_FORMAT_FLAG_LINEAR flag below. - * - * When the simplified API needs to convert between sRGB and linear colorspaces, - * the actual sRGB transfer curve defined in the sRGB specification (see the - * article at https://en.wikipedia.org/wiki/SRGB) is used, not the gamma=1/2.2 - * approximation used elsewhere in libpng. - * - * When an alpha channel is present it is expected to denote pixel coverage - * of the color or luminance channels and is returned as an associated alpha - * channel: the color/gray channels are scaled (pre-multiplied) by the alpha - * value. - * - * The samples are either contained directly in the image data, between 1 and 8 - * bytes per pixel according to the encoding, or are held in a color-map indexed - * by bytes in the image data. In the case of a color-map the color-map entries - * are individual samples, encoded as above, and the image data has one byte per - * pixel to select the relevant sample from the color-map. - */ - -/* PNG_FORMAT_* - * - * #defines to be used in png_image::format. Each #define identifies a - * particular layout of sample data and, if present, alpha values. There are - * separate defines for each of the two component encodings. - * - * A format is built up using single bit flag values. All combinations are - * valid. Formats can be built up from the flag values or you can use one of - * the predefined values below. When testing formats always use the FORMAT_FLAG - * macros to test for individual features - future versions of the library may - * add new flags. - * - * When reading or writing color-mapped images the format should be set to the - * format of the entries in the color-map then png_image_{read,write}_colormap - * called to read or write the color-map and set the format correctly for the - * image data. Do not set the PNG_FORMAT_FLAG_COLORMAP bit directly! - * - * NOTE: libpng can be built with particular features disabled. If you see - * compiler errors because the definition of one of the following flags has been - * compiled out it is because libpng does not have the required support. It is - * possible, however, for the libpng configuration to enable the format on just - * read or just write; in that case you may see an error at run time. You can - * guard against this by checking for the definition of the appropriate - * "_SUPPORTED" macro, one of: - * - * PNG_SIMPLIFIED_{READ,WRITE}_{BGR,AFIRST}_SUPPORTED - */ -#define PNG_FORMAT_FLAG_ALPHA 0x01U /* format with an alpha channel */ -#define PNG_FORMAT_FLAG_COLOR 0x02U /* color format: otherwise grayscale */ -#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2-byte channels else 1-byte */ -#define PNG_FORMAT_FLAG_COLORMAP 0x08U /* image data is color-mapped */ - -#ifdef PNG_FORMAT_BGR_SUPPORTED -# define PNG_FORMAT_FLAG_BGR 0x10U /* BGR colors, else order is RGB */ -#endif - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED -# define PNG_FORMAT_FLAG_AFIRST 0x20U /* alpha channel comes first */ -#endif - -#define PNG_FORMAT_FLAG_ASSOCIATED_ALPHA 0x40U /* alpha channel is associated */ - -/* Commonly used formats have predefined macros. - * - * First the single byte (sRGB) formats: - */ -#define PNG_FORMAT_GRAY 0 -#define PNG_FORMAT_GA PNG_FORMAT_FLAG_ALPHA -#define PNG_FORMAT_AG (PNG_FORMAT_GA|PNG_FORMAT_FLAG_AFIRST) -#define PNG_FORMAT_RGB PNG_FORMAT_FLAG_COLOR -#define PNG_FORMAT_BGR (PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_BGR) -#define PNG_FORMAT_RGBA (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_ALPHA) -#define PNG_FORMAT_ARGB (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_AFIRST) -#define PNG_FORMAT_BGRA (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_ALPHA) -#define PNG_FORMAT_ABGR (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_AFIRST) - -/* Then the linear 2-byte formats. When naming these "Y" is used to - * indicate a luminance (gray) channel. - */ -#define PNG_FORMAT_LINEAR_Y PNG_FORMAT_FLAG_LINEAR -#define PNG_FORMAT_LINEAR_Y_ALPHA (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_ALPHA) -#define PNG_FORMAT_LINEAR_RGB (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR) -#define PNG_FORMAT_LINEAR_RGB_ALPHA \ - (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA) - -/* With color-mapped formats the image data is one byte for each pixel, the byte - * is an index into the color-map which is formatted as above. To obtain a - * color-mapped format it is sufficient just to add the PNG_FOMAT_FLAG_COLORMAP - * to one of the above definitions, or you can use one of the definitions below. - */ -#define PNG_FORMAT_RGB_COLORMAP (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_BGR_COLORMAP (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_RGBA_COLORMAP (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_ARGB_COLORMAP (PNG_FORMAT_ARGB|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_BGRA_COLORMAP (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_ABGR_COLORMAP (PNG_FORMAT_ABGR|PNG_FORMAT_FLAG_COLORMAP) - -/* PNG_IMAGE macros - * - * These are convenience macros to derive information from a png_image - * structure. The PNG_IMAGE_SAMPLE_ macros return values appropriate to the - * actual image sample values - either the entries in the color-map or the - * pixels in the image. The PNG_IMAGE_PIXEL_ macros return corresponding values - * for the pixels and will always return 1 for color-mapped formats. The - * remaining macros return information about the rows in the image and the - * complete image. - * - * NOTE: All the macros that take a png_image::format parameter are compile time - * constants if the format parameter is, itself, a constant. Therefore these - * macros can be used in array declarations and case labels where required. - * Similarly the macros are also pre-processor constants (sizeof is not used) so - * they can be used in #if tests. - * - * First the information about the samples. - */ -#define PNG_IMAGE_SAMPLE_CHANNELS(fmt)\ - (((fmt)&(PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA))+1) - /* Return the total number of channels in a given format: 1..4 */ - -#define PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)\ - ((((fmt) & PNG_FORMAT_FLAG_LINEAR) >> 2)+1) - /* Return the size in bytes of a single component of a pixel or color-map - * entry (as appropriate) in the image: 1 or 2. - */ - -#define PNG_IMAGE_SAMPLE_SIZE(fmt)\ - (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)) - /* This is the size of the sample data for one sample. If the image is - * color-mapped it is the size of one color-map entry (and image pixels are - * one byte in size), otherwise it is the size of one image pixel. - */ - -#define PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(fmt)\ - (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * 256) - /* The maximum size of the color-map required by the format expressed in a - * count of components. This can be used to compile-time allocate a - * color-map: - * - * png_uint_16 colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(linear_fmt)]; - * - * png_byte colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(sRGB_fmt)]; - * - * Alternatively use the PNG_IMAGE_COLORMAP_SIZE macro below to use the - * information from one of the png_image_begin_read_ APIs and dynamically - * allocate the required memory. - */ - -/* Corresponding information about the pixels */ -#define PNG_IMAGE_PIXEL_(test,fmt)\ - (((fmt)&PNG_FORMAT_FLAG_COLORMAP)?1:test(fmt)) - -#define PNG_IMAGE_PIXEL_CHANNELS(fmt)\ - PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_CHANNELS,fmt) - /* The number of separate channels (components) in a pixel; 1 for a - * color-mapped image. - */ - -#define PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)\ - PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_COMPONENT_SIZE,fmt) - /* The size, in bytes, of each component in a pixel; 1 for a color-mapped - * image. - */ - -#define PNG_IMAGE_PIXEL_SIZE(fmt) PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_SIZE,fmt) - /* The size, in bytes, of a complete pixel; 1 for a color-mapped image. */ - -/* Information about the whole row, or whole image */ -#define PNG_IMAGE_ROW_STRIDE(image)\ - (PNG_IMAGE_PIXEL_CHANNELS((image).format) * (image).width) - /* Return the total number of components in a single row of the image; this - * is the minimum 'row stride', the minimum count of components between each - * row. For a color-mapped image this is the minimum number of bytes in a - * row. - * - * WARNING: this macro overflows for some images with more than one component - * and very large image widths. libpng will refuse to process an image where - * this macro would overflow. - */ - -#define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\ - (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride)) - /* Return the size, in bytes, of an image buffer given a png_image and a row - * stride - the number of components to leave space for in each row. - * - * WARNING: this macro overflows a 32-bit integer for some large PNG images, - * libpng will refuse to process an image where such an overflow would occur. - */ - -#define PNG_IMAGE_SIZE(image)\ - PNG_IMAGE_BUFFER_SIZE(image, PNG_IMAGE_ROW_STRIDE(image)) - /* Return the size, in bytes, of the image in memory given just a png_image; - * the row stride is the minimum stride required for the image. - */ - -#define PNG_IMAGE_COLORMAP_SIZE(image)\ - (PNG_IMAGE_SAMPLE_SIZE((image).format) * (image).colormap_entries) - /* Return the size, in bytes, of the color-map of this image. If the image - * format is not a color-map format this will return a size sufficient for - * 256 entries in the given format; check PNG_FORMAT_FLAG_COLORMAP if - * you don't want to allocate a color-map in this case. - */ - -/* PNG_IMAGE_FLAG_* - * - * Flags containing additional information about the image are held in the - * 'flags' field of png_image. - */ -#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01 - /* This indicates the the RGB values of the in-memory bitmap do not - * correspond to the red, green and blue end-points defined by sRGB. - */ - -#define PNG_IMAGE_FLAG_FAST 0x02 - /* On write emphasise speed over compression; the resultant PNG file will be - * larger but will be produced significantly faster, particular for large - * images. Do not use this option for images which will be distributed, only - * used it when producing intermediate files that will be read back in - * repeatedly. For a typical 24-bit image the option will double the read - * speed at the cost of increasing the image size by 25%, however for many - * more compressible images the PNG file can be 10 times larger with only a - * slight speed gain. - */ - -#define PNG_IMAGE_FLAG_16BIT_sRGB 0x04 - /* On read if the image is a 16-bit per component image and there is no gAMA - * or sRGB chunk assume that the components are sRGB encoded. Notice that - * images output by the simplified API always have gamma information; setting - * this flag only affects the interpretation of 16-bit images from an - * external source. It is recommended that the application expose this flag - * to the user; the user can normally easily recognize the difference between - * linear and sRGB encoding. This flag has no effect on write - the data - * passed to the write APIs must have the correct encoding (as defined - * above.) - * - * If the flag is not set (the default) input 16-bit per component data is - * assumed to be linear. - * - * NOTE: the flag can only be set after the png_image_begin_read_ call, - * because that call initializes the 'flags' field. - */ - -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -/* READ APIs - * --------- - * - * The png_image passed to the read APIs must have been initialized by setting - * the png_controlp field 'opaque' to NULL (or, safer, memset the whole thing.) - */ -#ifdef PNG_STDIO_SUPPORTED -PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, - const char *file_name)); - /* The named file is opened for read and the image header is filled in - * from the PNG header in the file. - */ - -PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, - FILE* file)); - /* The PNG header is read from the stdio FILE object. */ -#endif /* STDIO */ - -PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, - png_const_voidp memory, png_size_t size)); - /* The PNG header is read from the given memory buffer. */ - -PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image, - png_const_colorp background, void *buffer, png_int_32 row_stride, - void *colormap)); - /* Finish reading the image into the supplied buffer and clean up the - * png_image structure. - * - * row_stride is the step, in byte or 2-byte units as appropriate, - * between adjacent rows. A positive stride indicates that the top-most row - * is first in the buffer - the normal top-down arrangement. A negative - * stride indicates that the bottom-most row is first in the buffer. - * - * background need only be supplied if an alpha channel must be removed from - * a png_byte format and the removal is to be done by compositing on a solid - * color; otherwise it may be NULL and any composition will be done directly - * onto the buffer. The value is an sRGB color to use for the background, - * for grayscale output the green channel is used. - * - * background must be supplied when an alpha channel must be removed from a - * single byte color-mapped output format, in other words if: - * - * 1) The original format from png_image_begin_read_from_* had - * PNG_FORMAT_FLAG_ALPHA set. - * 2) The format set by the application does not. - * 3) The format set by the application has PNG_FORMAT_FLAG_COLORMAP set and - * PNG_FORMAT_FLAG_LINEAR *not* set. - * - * For linear output removing the alpha channel is always done by compositing - * on black and background is ignored. - * - * colormap must be supplied when PNG_FORMAT_FLAG_COLORMAP is set. It must - * be at least the size (in bytes) returned by PNG_IMAGE_COLORMAP_SIZE. - * image->colormap_entries will be updated to the actual number of entries - * written to the colormap; this may be less than the original value. - */ - -PNG_EXPORT(238, void, png_image_free, (png_imagep image)); - /* Free any data allocated by libpng in image->opaque, setting the pointer to - * NULL. May be called at any time after the structure is initialized. - */ -#endif /* SIMPLIFIED_READ */ - -#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED -/* WRITE APIS - * ---------- - * For write you must initialize a png_image structure to describe the image to - * be written. To do this use memset to set the whole structure to 0 then - * initialize fields describing your image. - * - * version: must be set to PNG_IMAGE_VERSION - * opaque: must be initialized to NULL - * width: image width in pixels - * height: image height in rows - * format: the format of the data (image and color-map) you wish to write - * flags: set to 0 unless one of the defined flags applies; set - * PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB for color format images where the RGB - * values do not correspond to the colors in sRGB. - * colormap_entries: set to the number of entries in the color-map (0 to 256) - */ -#ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, - const char *file, int convert_to_8bit, const void *buffer, - png_int_32 row_stride, const void *colormap)); - /* Write the image to the named file. */ - -PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, - int convert_to_8_bit, const void *buffer, png_int_32 row_stride, - const void *colormap)); - /* Write the image to the given (FILE*). */ -#endif /* SIMPLIFIED_WRITE_STDIO */ - -/* With all write APIs if image is in one of the linear formats with 16-bit - * data then setting convert_to_8_bit will cause the output to be an 8-bit PNG - * gamma encoded according to the sRGB specification, otherwise a 16-bit linear - * encoded PNG file is written. - * - * With color-mapped data formats the colormap parameter point to a color-map - * with at least image->colormap_entries encoded in the specified format. If - * the format is linear the written PNG color-map will be converted to sRGB - * regardless of the convert_to_8_bit flag. - * - * With all APIs row_stride is handled as in the read APIs - it is the spacing - * from one row to the next in component sized units (1 or 2 bytes) and if - * negative indicates a bottom-up row layout in the buffer. If row_stride is - * zero, libpng will calculate it for you from the image width and number of - * channels. - * - * Note that the write API does not support interlacing, sub-8-bit pixels or - * most ancillary chunks. If you need to write text chunks (e.g. for copyright - * notices) you need to use one of the other APIs. - */ - -PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory, - png_alloc_size_t * PNG_RESTRICT memory_bytes, int convert_to_8_bit, - const void *buffer, png_int_32 row_stride, const void *colormap)); - /* Write the image to the given memory buffer. The function both writes the - * whole PNG data stream to *memory and updates *memory_bytes with the count - * of bytes written. - * - * 'memory' may be NULL. In this case *memory_bytes is not read however on - * success the number of bytes which would have been written will still be - * stored in *memory_bytes. On failure *memory_bytes will contain 0. - * - * If 'memory' is not NULL it must point to memory[*memory_bytes] of - * writeable memory. - * - * If the function returns success memory[*memory_bytes] (if 'memory' is not - * NULL) contains the written PNG data. *memory_bytes will always be less - * than or equal to the original value. - * - * If the function returns false and *memory_bytes was not changed an error - * occured during write. If *memory_bytes was changed, or is not 0 if - * 'memory' was NULL, the write would have succeeded but for the memory - * buffer being too small. *memory_bytes contains the required number of - * bytes and will be bigger that the original value. - */ - -#define png_image_write_get_memory_size(image, size, convert_to_8_bit, buffer,\ - row_stride, colormap)\ - png_image_write_to_memory(&(image), 0, &(size), convert_to_8_bit, buffer,\ - row_stride, colormap) - /* Return the amount of memory in 'size' required to compress this image. - * The png_image structure 'image' must be filled in as in the above - * function and must not be changed before the actual write call, the buffer - * and all other parameters must also be identical to that in the final - * write call. The 'size' variable need not be initialized. - * - * NOTE: the macro returns true/false, if false is returned 'size' will be - * set to zero and the write failed and probably will fail if tried again. - */ - -/* You can pre-allocate the buffer by making sure it is of sufficient size - * regardless of the amount of compression achieved. The buffer size will - * always be bigger than the original image and it will never be filled. The - * following macros are provided to assist in allocating the buffer. - */ -#define PNG_IMAGE_DATA_SIZE(image) (PNG_IMAGE_SIZE(image)+(image).height) - /* The number of uncompressed bytes in the PNG byte encoding of the image; - * uncompressing the PNG IDAT data will give this number of bytes. - * - * NOTE: while PNG_IMAGE_SIZE cannot overflow for an image in memory this - * macro can because of the extra bytes used in the PNG byte encoding. You - * need to avoid this macro if your image size approaches 2^30 in width or - * height. The same goes for the remainder of these macros; they all produce - * bigger numbers than the actual in-memory image size. - */ -#ifndef PNG_ZLIB_MAX_SIZE -# define PNG_ZLIB_MAX_SIZE(b) ((b)+(((b)+7U)>>3)+(((b)+63U)>>6)+11U) - /* An upper bound on the number of compressed bytes given 'b' uncompressed - * bytes. This is based on deflateBounds() in zlib; different - * implementations of zlib compression may conceivably produce more data so - * if your zlib implementation is not zlib itself redefine this macro - * appropriately. - */ -#endif - -#define PNG_IMAGE_COMPRESSED_SIZE_MAX(image)\ - PNG_ZLIB_MAX_SIZE((png_alloc_size_t)PNG_IMAGE_DATA_SIZE(image)) - /* An upper bound on the size of the data in the PNG IDAT chunks. */ - -#define PNG_IMAGE_PNG_SIZE_MAX_(image, image_size)\ - ((8U/*sig*/+25U/*IHDR*/+16U/*gAMA*/+44U/*cHRM*/+12U/*IEND*/+\ - (((image).format&PNG_FORMAT_FLAG_COLORMAP)?/*colormap: PLTE, tRNS*/\ - 12U+3U*(image).colormap_entries/*PLTE data*/+\ - (((image).format&PNG_FORMAT_FLAG_ALPHA)?\ - 12U/*tRNS*/+(image).colormap_entries:0U):0U)+\ - 12U)+(12U*((image_size)/PNG_ZBUF_SIZE))/*IDAT*/+(image_size)) - /* A helper for the following macro; if your compiler cannot handle the - * following macro use this one with the result of - * PNG_IMAGE_COMPRESSED_SIZE_MAX(image) as the second argument (most - * compilers should handle this just fine.) - */ - -#define PNG_IMAGE_PNG_SIZE_MAX(image)\ - PNG_IMAGE_PNG_SIZE_MAX_(image, PNG_IMAGE_COMPRESSED_SIZE_MAX(image)) - /* An upper bound on the total length of the PNG data stream for 'image'. - * The result is of type png_alloc_size_t, on 32-bit systems this may - * overflow even though PNG_IMAGE_DATA_SIZE does not overflow; the write will - * run out of buffer space but return a corrected size which should work. - */ -#endif /* SIMPLIFIED_WRITE */ -/******************************************************************************* - * END OF SIMPLIFIED API - ******************************************************************************/ -#endif /* SIMPLIFIED_{READ|WRITE} */ - -/******************************************************************************* - * Section 6: IMPLEMENTATION OPTIONS - ******************************************************************************* - * - * Support for arbitrary implementation-specific optimizations. The API allows - * particular options to be turned on or off. 'Option' is the number of the - * option and 'onoff' is 0 (off) or non-0 (on). The value returned is given - * by the PNG_OPTION_ defines below. - * - * HARDWARE: normally hardware capabilites, such as the Intel SSE instructions, - * are detected at run time, however sometimes it may be impossible - * to do this in user mode, in which case it is necessary to discover - * the capabilities in an OS specific way. Such capabilities are - * listed here when libpng has support for them and must be turned - * ON by the application if present. - * - * SOFTWARE: sometimes software optimizations actually result in performance - * decrease on some architectures or systems, or with some sets of - * PNG images. 'Software' options allow such optimizations to be - * selected at run time. - */ -#ifdef PNG_SET_OPTION_SUPPORTED -#ifdef PNG_ARM_NEON_API_SUPPORTED -# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ -#endif -#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ -#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ -#ifdef PNG_MIPS_MSA_API_SUPPORTED -# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */ -#endif -#define PNG_IGNORE_ADLER32 8 -#ifdef PNG_POWERPC_VSX_API_SUPPORTED -# define PNG_POWERPC_VSX 10 /* HARDWARE: PowerPC VSX SIMD instructions supported */ -#endif -#define PNG_OPTION_NEXT 12 /* Next option - numbers must be even */ - -/* Return values: NOTE: there are four values and 'off' is *not* zero */ -#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ -#define PNG_OPTION_INVALID 1 /* Option number out of range */ -#define PNG_OPTION_OFF 2 -#define PNG_OPTION_ON 3 - -PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, - int onoff)); -#endif /* SET_OPTION */ - -/******************************************************************************* - * END OF HARDWARE AND SOFTWARE OPTIONS - ******************************************************************************/ - -/* Maintainer: Put new public prototypes here ^, in libpng.3, in project - * defs, and in scripts/symbols.def. - */ - -/* The last ordinal number (this is the *last* one already used; the next - * one to use is one more than this.) - */ -#ifdef PNG_EXPORT_LAST_ORDINAL - PNG_EXPORT_LAST_ORDINAL(249); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* PNG_VERSION_INFO_ONLY */ -/* Do not put anything past this line */ -#endif /* PNG_H */ diff --git a/src/png/libpng/pngconf.h b/src/png/libpng/pngconf.h deleted file mode 100644 index d13b13e57..000000000 --- a/src/png/libpng/pngconf.h +++ /dev/null @@ -1,622 +0,0 @@ - -/* pngconf.h - machine configurable file for libpng - * - * libpng version 1.6.34, September 29, 2017 - * - * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * Any machine specific code is near the front of this file, so if you - * are configuring libpng for a machine, you may want to read the section - * starting here down to where it starts to typedef png_color, png_text, - * and png_info. - */ - -#ifndef PNGCONF_H -#define PNGCONF_H - -#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ - -/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C - * compiler for correct compilation. The following header files are required by - * the standard. If your compiler doesn't provide these header files, or they - * do not match the standard, you will need to provide/improve them. - */ -#include -#include - -/* Library header files. These header files are all defined by ISOC90; libpng - * expects conformant implementations, however, an ISOC90 conformant system need - * not provide these header files if the functionality cannot be implemented. - * In this case it will be necessary to disable the relevant parts of libpng in - * the build of pnglibconf.h. - * - * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not - * include this unnecessary header file. - */ - -#ifdef PNG_STDIO_SUPPORTED - /* Required for the definition of FILE: */ -# include -#endif - -#ifdef PNG_SETJMP_SUPPORTED - /* Required for the definition of jmp_buf and the declaration of longjmp: */ -# include -#endif - -#ifdef PNG_CONVERT_tIME_SUPPORTED - /* Required for struct tm: */ -# include -#endif - -#endif /* PNG_BUILDING_SYMBOL_TABLE */ - -/* Prior to 1.6.0 it was possible to turn off 'const' in declarations using - * PNG_NO_CONST; this is no longer supported except for data declarations which - * apparently still cause problems in 2011 on some compilers. - */ -#define PNG_CONST const /* backward compatibility only */ - -/* This controls optimization of the reading of 16-bit and 32-bit values - * from PNG files. It can be set on a per-app-file basis - it - * just changes whether a macro is used when the function is called. - * The library builder sets the default; if read functions are not - * built into the library the macro implementation is forced on. - */ -#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED -# define PNG_USE_READ_MACROS -#endif -#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) -# if PNG_DEFAULT_READ_MACROS -# define PNG_USE_READ_MACROS -# endif -#endif - -/* COMPILER SPECIFIC OPTIONS. - * - * These options are provided so that a variety of difficult compilers - * can be used. Some are fixed at build time (e.g. PNG_API_RULE - * below) but still have compiler specific implementations, others - * may be changed on a per-file basis when compiling against libpng. - */ - -/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect - * against legacy (pre ISOC90) compilers that did not understand function - * prototypes. It is not required for modern C compilers. - */ -#ifndef PNGARG -# define PNGARG(arglist) arglist -#endif - -/* Function calling conventions. - * ============================= - * Normally it is not necessary to specify to the compiler how to call - * a function - it just does it - however on x86 systems derived from - * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems - * and some others) there are multiple ways to call a function and the - * default can be changed on the compiler command line. For this reason - * libpng specifies the calling convention of every exported function and - * every function called via a user supplied function pointer. This is - * done in this file by defining the following macros: - * - * PNGAPI Calling convention for exported functions. - * PNGCBAPI Calling convention for user provided (callback) functions. - * PNGCAPI Calling convention used by the ANSI-C library (required - * for longjmp callbacks and sometimes used internally to - * specify the calling convention for zlib). - * - * These macros should never be overridden. If it is necessary to - * change calling convention in a private build this can be done - * by setting PNG_API_RULE (which defaults to 0) to one of the values - * below to select the correct 'API' variants. - * - * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. - * This is correct in every known environment. - * PNG_API_RULE=1 Use the operating system convention for PNGAPI and - * the 'C' calling convention (from PNGCAPI) for - * callbacks (PNGCBAPI). This is no longer required - * in any known environment - if it has to be used - * please post an explanation of the problem to the - * libpng mailing list. - * - * These cases only differ if the operating system does not use the C - * calling convention, at present this just means the above cases - * (x86 DOS/Windows sytems) and, even then, this does not apply to - * Cygwin running on those systems. - * - * Note that the value must be defined in pnglibconf.h so that what - * the application uses to call the library matches the conventions - * set when building the library. - */ - -/* Symbol export - * ============= - * When building a shared library it is almost always necessary to tell - * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' - * is used to mark the symbols. On some systems these symbols can be - * extracted at link time and need no special processing by the compiler, - * on other systems the symbols are flagged by the compiler and just - * the declaration requires a special tag applied (unfortunately) in a - * compiler dependent way. Some systems can do either. - * - * A small number of older systems also require a symbol from a DLL to - * be flagged to the program that calls it. This is a problem because - * we do not know in the header file included by application code that - * the symbol will come from a shared library, as opposed to a statically - * linked one. For this reason the application must tell us by setting - * the magic flag PNG_USE_DLL to turn on the special processing before - * it includes png.h. - * - * Four additional macros are used to make this happen: - * - * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from - * the build or imported if PNG_USE_DLL is set - compiler - * and system specific. - * - * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to - * 'type', compiler specific. - * - * PNG_DLL_EXPORT Set to the magic to use during a libpng build to - * make a symbol exported from the DLL. Not used in the - * public header files; see pngpriv.h for how it is used - * in the libpng build. - * - * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come - * from a DLL - used to define PNG_IMPEXP when - * PNG_USE_DLL is set. - */ - -/* System specific discovery. - * ========================== - * This code is used at build time to find PNG_IMPEXP, the API settings - * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL - * import processing is possible. On Windows systems it also sets - * compiler-specific macros to the values required to change the calling - * conventions of the various functions. - */ -#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ - defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or - * MinGW on any architecture currently supported by Windows. Also includes - * Watcom builds but these need special treatment because they are not - * compatible with GCC or Visual C because of different calling conventions. - */ -# if PNG_API_RULE == 2 - /* If this line results in an error, either because __watcall is not - * understood or because of a redefine just below you cannot use *this* - * build of the library with the compiler you are using. *This* build was - * build using Watcom and applications must also be built using Watcom! - */ -# define PNGCAPI __watcall -# endif - -# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) -# define PNGCAPI __cdecl -# if PNG_API_RULE == 1 - /* If this line results in an error __stdcall is not understood and - * PNG_API_RULE should not have been set to '1'. - */ -# define PNGAPI __stdcall -# endif -# else - /* An older compiler, or one not detected (erroneously) above, - * if necessary override on the command line to get the correct - * variants for the compiler. - */ -# ifndef PNGCAPI -# define PNGCAPI _cdecl -# endif -# if PNG_API_RULE == 1 && !defined(PNGAPI) -# define PNGAPI _stdcall -# endif -# endif /* compiler/api */ - - /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ - -# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) -# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" -# endif - -# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ - (defined(__BORLANDC__) && __BORLANDC__ < 0x500) - /* older Borland and MSC - * compilers used '__export' and required this to be after - * the type. - */ -# ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP -# endif -# define PNG_DLL_EXPORT __export -# else /* newer compiler */ -# define PNG_DLL_EXPORT __declspec(dllexport) -# ifndef PNG_DLL_IMPORT -# define PNG_DLL_IMPORT __declspec(dllimport) -# endif -# endif /* compiler */ - -#else /* !Windows */ -# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) -# define PNGAPI _System -# else /* !Windows/x86 && !OS/2 */ - /* Use the defaults, or define PNG*API on the command line (but - * this will have to be done for every compile!) - */ -# endif /* other system, !OS/2 */ -#endif /* !Windows/x86 */ - -/* Now do all the defaulting . */ -#ifndef PNGCAPI -# define PNGCAPI -#endif -#ifndef PNGCBAPI -# define PNGCBAPI PNGCAPI -#endif -#ifndef PNGAPI -# define PNGAPI PNGCAPI -#endif - -/* PNG_IMPEXP may be set on the compilation system command line or (if not set) - * then in an internal header file when building the library, otherwise (when - * using the library) it is set here. - */ -#ifndef PNG_IMPEXP -# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) - /* This forces use of a DLL, disallowing static linking */ -# define PNG_IMPEXP PNG_DLL_IMPORT -# endif - -# ifndef PNG_IMPEXP -# define PNG_IMPEXP -# endif -#endif - -/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat - * 'attributes' as a storage class - the attributes go at the start of the - * function definition, and attributes are always appended regardless of the - * compiler. This considerably simplifies these macros but may cause problems - * if any compilers both need function attributes and fail to handle them as - * a storage class (this is unlikely.) - */ -#ifndef PNG_FUNCTION -# define PNG_FUNCTION(type, name, args, attributes) attributes type name args -#endif - -#ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type -#endif - - /* The ordinal value is only relevant when preprocessing png.h for symbol - * table entries, so we discard it here. See the .dfn files in the - * scripts directory. - */ - -#ifndef PNG_EXPORTA -# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ - PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ - PNG_LINKAGE_API attributes) -#endif - -/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, - * so make something non-empty to satisfy the requirement: - */ -#define PNG_EMPTY /*empty list*/ - -#define PNG_EXPORT(ordinal, type, name, args) \ - PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) - -/* Use PNG_REMOVED to comment out a removed interface. */ -#ifndef PNG_REMOVED -# define PNG_REMOVED(ordinal, type, name, args, attributes) -#endif - -#ifndef PNG_CALLBACK -# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) -#endif - -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. - * - * Added at libpng-1.2.41. - */ - -#ifndef PNG_NO_PEDANTIC_WARNINGS -# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED -# define PNG_PEDANTIC_WARNINGS_SUPPORTED -# endif -#endif - -#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED - /* Support for compiler specific function attributes. These are used - * so that where compiler support is available, incorrect use of API - * functions in png.h will generate compiler warnings. Added at libpng - * version 1.2.41. Disabling these removes the warnings but may also produce - * less efficient code. - */ -# if defined(__clang__) && defined(__has_attribute) - /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ -# if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif -# if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# if !defined(PNG_PRIVATE) -# ifdef __has_extension -# if __has_extension(attribute_unavailable_with_message) -# define PNG_PRIVATE __attribute__((__unavailable__(\ - "This function is not exported by libpng."))) -# endif -# endif -# endif -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif - -# elif defined(__GNUC__) -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# if __GNUC__ >= 3 -# ifndef PNG_ALLOCATED -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# ifndef PNG_PRIVATE -# if 0 /* Doesn't work so we use deprecated instead*/ -# define PNG_PRIVATE \ - __attribute__((warning("This function is not exported by libpng."))) -# else -# define PNG_PRIVATE \ - __attribute__((__deprecated__)) -# endif -# endif -# if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif -# endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ -# endif /* __GNUC__ >= 3 */ - -# elif defined(_MSC_VER) && (_MSC_VER >= 1300) -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* not supported */ -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __declspec(noreturn) -# endif -# ifndef PNG_ALLOCATED -# if (_MSC_VER >= 1400) -# define PNG_ALLOCATED __declspec(restrict) -# endif -# endif -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __declspec(deprecated) -# endif -# ifndef PNG_PRIVATE -# define PNG_PRIVATE __declspec(deprecated) -# endif -# ifndef PNG_RESTRICT -# if (_MSC_VER >= 1400) -# define PNG_RESTRICT __restrict -# endif -# endif - -# elif defined(__WATCOMC__) -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif -# endif -#endif /* PNG_PEDANTIC_WARNINGS */ - -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED /* Use of this function is deprecated */ -#endif -#ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* The result of this function must be checked */ -#endif -#ifndef PNG_NORETURN -# define PNG_NORETURN /* This function does not return */ -#endif -#ifndef PNG_ALLOCATED -# define PNG_ALLOCATED /* The result of the function is new memory */ -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE /* This is a private libpng function */ -#endif -#ifndef PNG_RESTRICT -# define PNG_RESTRICT /* The C99 "restrict" feature */ -#endif - -#ifndef PNG_FP_EXPORT /* A floating point API. */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FP_EXPORT(ordinal, type, name, args)\ - PNG_EXPORT(ordinal, type, name, args); -# else /* No floating point APIs */ -# define PNG_FP_EXPORT(ordinal, type, name, args) -# endif -#endif -#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ -# ifdef PNG_FIXED_POINT_SUPPORTED -# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ - PNG_EXPORT(ordinal, type, name, args); -# else /* No fixed point APIs */ -# define PNG_FIXED_EXPORT(ordinal, type, name, args) -# endif -#endif - -#ifndef PNG_BUILDING_SYMBOL_TABLE -/* Some typedefs to get us started. These should be safe on most of the common - * platforms. - * - * png_uint_32 and png_int_32 may, currently, be larger than required to hold a - * 32-bit value however this is not normally advisable. - * - * png_uint_16 and png_int_16 should always be two bytes in size - this is - * verified at library build time. - * - * png_byte must always be one byte in size. - * - * The checks below use constants from limits.h, as defined by the ISOC90 - * standard. - */ -#if CHAR_BIT == 8 && UCHAR_MAX == 255 - typedef unsigned char png_byte; -#else -# error "libpng requires 8-bit bytes" -#endif - -#if INT_MIN == -32768 && INT_MAX == 32767 - typedef int png_int_16; -#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 - typedef short png_int_16; -#else -# error "libpng requires a signed 16-bit type" -#endif - -#if UINT_MAX == 65535 - typedef unsigned int png_uint_16; -#elif USHRT_MAX == 65535 - typedef unsigned short png_uint_16; -#else -# error "libpng requires an unsigned 16-bit type" -#endif - -#if INT_MIN < -2147483646 && INT_MAX > 2147483646 - typedef int png_int_32; -#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 - typedef long int png_int_32; -#else -# error "libpng requires a signed 32-bit (or more) type" -#endif - -#if UINT_MAX > 4294967294U - typedef unsigned int png_uint_32; -#elif ULONG_MAX > 4294967294U - typedef unsigned long int png_uint_32; -#else -# error "libpng requires an unsigned 32-bit (or more) type" -#endif - -/* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, - * requires an ISOC90 compiler and relies on consistent behavior of sizeof. - */ -typedef size_t png_size_t; -typedef ptrdiff_t png_ptrdiff_t; - -/* libpng needs to know the maximum value of 'size_t' and this controls the - * definition of png_alloc_size_t, below. This maximum value of size_t limits - * but does not control the maximum allocations the library makes - there is - * direct application control of this through png_set_user_limits(). - */ -#ifndef PNG_SMALL_SIZE_T - /* Compiler specific tests for systems where size_t is known to be less than - * 32 bits (some of these systems may no longer work because of the lack of - * 'far' support; see above.) - */ -# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ - (defined(_MSC_VER) && defined(MAXSEG_64K)) -# define PNG_SMALL_SIZE_T -# endif -#endif - -/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no - * smaller than png_uint_32. Casts from png_size_t or png_uint_32 to - * png_alloc_size_t are not necessary; in fact, it is recommended not to use - * them at all so that the compiler can complain when something turns out to be - * problematic. - * - * Casts in the other direction (from png_alloc_size_t to png_size_t or - * png_uint_32) should be explicitly applied; however, we do not expect to - * encounter practical situations that require such conversions. - * - * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than - * 4294967295 - i.e. less than the maximum value of png_uint_32. - */ -#ifdef PNG_SMALL_SIZE_T - typedef png_uint_32 png_alloc_size_t; -#else - typedef png_size_t png_alloc_size_t; -#endif - -/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler - * implementations of Intel CPU specific support of user-mode segmented address - * spaces, where 16-bit pointers address more than 65536 bytes of memory using - * separate 'segment' registers. The implementation requires two different - * types of pointer (only one of which includes the segment value.) - * - * If required this support is available in version 1.2 of libpng and may be - * available in versions through 1.5, although the correctness of the code has - * not been verified recently. - */ - -/* Typedef for floating-point numbers that are converted to fixed-point with a - * multiple of 100,000, e.g., gamma - */ -typedef png_int_32 png_fixed_point; - -/* Add typedefs for pointers */ -typedef void * png_voidp; -typedef const void * png_const_voidp; -typedef png_byte * png_bytep; -typedef const png_byte * png_const_bytep; -typedef png_uint_32 * png_uint_32p; -typedef const png_uint_32 * png_const_uint_32p; -typedef png_int_32 * png_int_32p; -typedef const png_int_32 * png_const_int_32p; -typedef png_uint_16 * png_uint_16p; -typedef const png_uint_16 * png_const_uint_16p; -typedef png_int_16 * png_int_16p; -typedef const png_int_16 * png_const_int_16p; -typedef char * png_charp; -typedef const char * png_const_charp; -typedef png_fixed_point * png_fixed_point_p; -typedef const png_fixed_point * png_const_fixed_point_p; -typedef png_size_t * png_size_tp; -typedef const png_size_t * png_const_size_tp; - -#ifdef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double * png_doublep; -typedef const double * png_const_doublep; -#endif - -/* Pointers to pointers; i.e. arrays */ -typedef png_byte * * png_bytepp; -typedef png_uint_32 * * png_uint_32pp; -typedef png_int_32 * * png_int_32pp; -typedef png_uint_16 * * png_uint_16pp; -typedef png_int_16 * * png_int_16pp; -typedef const char * * png_const_charpp; -typedef char * * png_charpp; -typedef png_fixed_point * * png_fixed_point_pp; -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double * * png_doublepp; -#endif - -/* Pointers to pointers to pointers; i.e., pointer to array */ -typedef char * * * png_charppp; - -#endif /* PNG_BUILDING_SYMBOL_TABLE */ - -#endif /* PNGCONF_H */ diff --git a/src/png/libpng/pngdebug.h b/src/png/libpng/pngdebug.h deleted file mode 100644 index 15a7ed0c9..000000000 --- a/src/png/libpng/pngdebug.h +++ /dev/null @@ -1,153 +0,0 @@ - -/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c - * - * Last changed in libpng 1.6.8 [December 19, 2013] - * Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* Define PNG_DEBUG at compile time for debugging information. Higher - * numbers for PNG_DEBUG mean more debugging information. This has - * only been added since version 0.95 so it is not implemented throughout - * libpng yet, but more support will be added as needed. - * - * png_debug[1-2]?(level, message ,arg{0-2}) - * Expands to a statement (either a simple expression or a compound - * do..while(0) statement) that outputs a message with parameter - * substitution if PNG_DEBUG is defined to 2 or more. If PNG_DEBUG - * is undefined, 0 or 1 every png_debug expands to a simple expression - * (actually ((void)0)). - * - * level: level of detail of message, starting at 0. A level 'n' - * message is preceded by 'n' 3-space indentations (not implemented - * on Microsoft compilers unless PNG_DEBUG_FILE is also - * defined, to allow debug DLL compilation with no standard IO). - * message: a printf(3) style text string. A trailing '\n' is added - * to the message. - * arg: 0 to 2 arguments for printf(3) style substitution in message. - */ -#ifndef PNGDEBUG_H -#define PNGDEBUG_H -/* These settings control the formatting of messages in png.c and pngerror.c */ -/* Moved to pngdebug.h at 1.5.0 */ -# ifndef PNG_LITERAL_SHARP -# define PNG_LITERAL_SHARP 0x23 -# endif -# ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET -# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b -# endif -# ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET -# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d -# endif -# ifndef PNG_STRING_NEWLINE -# define PNG_STRING_NEWLINE "\n" -# endif - -#ifdef PNG_DEBUG -# if (PNG_DEBUG > 0) -# if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER) -# include -# if (PNG_DEBUG > 1) -# ifndef _DEBUG -# define _DEBUG -# endif -# ifndef png_debug -# define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE) -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1) -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2) -# endif -# endif -# else /* PNG_DEBUG_FILE || !_MSC_VER */ -# ifndef PNG_STDIO_SUPPORTED -# include /* not included yet */ -# endif -# ifndef PNG_DEBUG_FILE -# define PNG_DEBUG_FILE stderr -# endif /* PNG_DEBUG_FILE */ - -# if (PNG_DEBUG > 1) -# ifdef __STDC__ -# ifndef png_debug -# define png_debug(l,m) \ - do { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \ - (num_tabs==2 ? " " : (num_tabs>2 ? " " : "")))); \ - } while (0) -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) \ - do { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \ - (num_tabs==2 ? " " : (num_tabs>2 ? " " : ""))),p1); \ - } while (0) -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - do { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \ - (num_tabs==2 ? " " : (num_tabs>2 ? " " : ""))),p1,p2);\ - } while (0) -# endif -# else /* __STDC __ */ -# ifndef png_debug -# define png_debug(l,m) \ - do { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format); \ - } while (0) -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) \ - do { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format,p1); \ - } while (0) -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - do { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format,p1,p2); \ - } while (0) -# endif -# endif /* __STDC __ */ -# endif /* (PNG_DEBUG > 1) */ - -# endif /* _MSC_VER */ -# endif /* (PNG_DEBUG > 0) */ -#endif /* PNG_DEBUG */ -#ifndef png_debug -# define png_debug(l, m) ((void)0) -#endif -#ifndef png_debug1 -# define png_debug1(l, m, p1) ((void)0) -#endif -#ifndef png_debug2 -# define png_debug2(l, m, p1, p2) ((void)0) -#endif -#endif /* PNGDEBUG_H */ diff --git a/src/png/libpng/pngerror.c b/src/png/libpng/pngerror.c deleted file mode 100644 index ad48bfb98..000000000 --- a/src/png/libpng/pngerror.c +++ /dev/null @@ -1,963 +0,0 @@ - -/* pngerror.c - stub functions for i/o and memory allocation - * - * Last changed in libpng 1.6.31 [July 27, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all error handling. Users who - * need special error handling are expected to write replacement functions - * and use png_set_error_fn() to use those functions. See the instructions - * at each function. - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -static PNG_FUNCTION(void, png_default_error,PNGARG((png_const_structrp png_ptr, - png_const_charp error_message)),PNG_NORETURN); - -#ifdef PNG_WARNINGS_SUPPORTED -static void /* PRIVATE */ -png_default_warning PNGARG((png_const_structrp png_ptr, - png_const_charp warning_message)); -#endif /* WARNINGS */ - -/* This function is called whenever there is a fatal error. This function - * should not be changed. If there is a need to handle errors differently, - * you should supply a replacement error function and use png_set_error_fn() - * to replace the error function at run-time. - */ -#ifdef PNG_ERROR_TEXT_SUPPORTED -PNG_FUNCTION(void,PNGAPI -png_error,(png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN) -{ -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - char msg[16]; - if (png_ptr != NULL) - { - if ((png_ptr->flags & - (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) != 0) - { - if (*error_message == PNG_LITERAL_SHARP) - { - /* Strip "#nnnn " from beginning of error message. */ - int offset; - for (offset = 1; offset<15; offset++) - if (error_message[offset] == ' ') - break; - - if ((png_ptr->flags & PNG_FLAG_STRIP_ERROR_TEXT) != 0) - { - int i; - for (i = 0; i < offset - 1; i++) - msg[i] = error_message[i + 1]; - msg[i - 1] = '\0'; - error_message = msg; - } - - else - error_message += offset; - } - - else - { - if ((png_ptr->flags & PNG_FLAG_STRIP_ERROR_TEXT) != 0) - { - msg[0] = '0'; - msg[1] = '\0'; - error_message = msg; - } - } - } - } -#endif - if (png_ptr != NULL && png_ptr->error_fn != NULL) - (*(png_ptr->error_fn))(png_constcast(png_structrp,png_ptr), - error_message); - - /* If the custom handler doesn't exist, or if it returns, - use the default handler, which will not return. */ - png_default_error(png_ptr, error_message); -} -#else -PNG_FUNCTION(void,PNGAPI -png_err,(png_const_structrp png_ptr),PNG_NORETURN) -{ - /* Prior to 1.5.2 the error_fn received a NULL pointer, expressed - * erroneously as '\0', instead of the empty string "". This was - * apparently an error, introduced in libpng-1.2.20, and png_default_error - * will crash in this case. - */ - if (png_ptr != NULL && png_ptr->error_fn != NULL) - (*(png_ptr->error_fn))(png_constcast(png_structrp,png_ptr), ""); - - /* If the custom handler doesn't exist, or if it returns, - use the default handler, which will not return. */ - png_default_error(png_ptr, ""); -} -#endif /* ERROR_TEXT */ - -/* Utility to safely appends strings to a buffer. This never errors out so - * error checking is not required in the caller. - */ -size_t -png_safecat(png_charp buffer, size_t bufsize, size_t pos, - png_const_charp string) -{ - if (buffer != NULL && pos < bufsize) - { - if (string != NULL) - while (*string != '\0' && pos < bufsize-1) - buffer[pos++] = *string++; - - buffer[pos] = '\0'; - } - - return pos; -} - -#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED) -/* Utility to dump an unsigned value into a buffer, given a start pointer and - * and end pointer (which should point just *beyond* the end of the buffer!) - * Returns the pointer to the start of the formatted string. - */ -png_charp -png_format_number(png_const_charp start, png_charp end, int format, - png_alloc_size_t number) -{ - int count = 0; /* number of digits output */ - int mincount = 1; /* minimum number required */ - int output = 0; /* digit output (for the fixed point format) */ - - *--end = '\0'; - - /* This is written so that the loop always runs at least once, even with - * number zero. - */ - while (end > start && (number != 0 || count < mincount)) - { - - static const char digits[] = "0123456789ABCDEF"; - - switch (format) - { - case PNG_NUMBER_FORMAT_fixed: - /* Needs five digits (the fraction) */ - mincount = 5; - if (output != 0 || number % 10 != 0) - { - *--end = digits[number % 10]; - output = 1; - } - number /= 10; - break; - - case PNG_NUMBER_FORMAT_02u: - /* Expects at least 2 digits. */ - mincount = 2; - /* FALLTHROUGH */ - - case PNG_NUMBER_FORMAT_u: - *--end = digits[number % 10]; - number /= 10; - break; - - case PNG_NUMBER_FORMAT_02x: - /* This format expects at least two digits */ - mincount = 2; - /* FALLTHROUGH */ - - case PNG_NUMBER_FORMAT_x: - *--end = digits[number & 0xf]; - number >>= 4; - break; - - default: /* an error */ - number = 0; - break; - } - - /* Keep track of the number of digits added */ - ++count; - - /* Float a fixed number here: */ - if ((format == PNG_NUMBER_FORMAT_fixed) && (count == 5) && (end > start)) - { - /* End of the fraction, but maybe nothing was output? In that case - * drop the decimal point. If the number is a true zero handle that - * here. - */ - if (output != 0) - *--end = '.'; - else if (number == 0) /* and !output */ - *--end = '0'; - } - } - - return end; -} -#endif - -#ifdef PNG_WARNINGS_SUPPORTED -/* This function is called whenever there is a non-fatal error. This function - * should not be changed. If there is a need to handle warnings differently, - * you should supply a replacement warning function and use - * png_set_error_fn() to replace the warning function at run-time. - */ -void PNGAPI -png_warning(png_const_structrp png_ptr, png_const_charp warning_message) -{ - int offset = 0; - if (png_ptr != NULL) - { -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - if ((png_ptr->flags & - (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) != 0) -#endif - { - if (*warning_message == PNG_LITERAL_SHARP) - { - for (offset = 1; offset < 15; offset++) - if (warning_message[offset] == ' ') - break; - } - } - } - if (png_ptr != NULL && png_ptr->warning_fn != NULL) - (*(png_ptr->warning_fn))(png_constcast(png_structrp,png_ptr), - warning_message + offset); - else - png_default_warning(png_ptr, warning_message + offset); -} - -/* These functions support 'formatted' warning messages with up to - * PNG_WARNING_PARAMETER_COUNT parameters. In the format string the parameter - * is introduced by @, where 'number' starts at 1. This follows the - * standard established by X/Open for internationalizable error messages. - */ -void -png_warning_parameter(png_warning_parameters p, int number, - png_const_charp string) -{ - if (number > 0 && number <= PNG_WARNING_PARAMETER_COUNT) - (void)png_safecat(p[number-1], (sizeof p[number-1]), 0, string); -} - -void -png_warning_parameter_unsigned(png_warning_parameters p, int number, int format, - png_alloc_size_t value) -{ - char buffer[PNG_NUMBER_BUFFER_SIZE]; - png_warning_parameter(p, number, PNG_FORMAT_NUMBER(buffer, format, value)); -} - -void -png_warning_parameter_signed(png_warning_parameters p, int number, int format, - png_int_32 value) -{ - png_alloc_size_t u; - png_charp str; - char buffer[PNG_NUMBER_BUFFER_SIZE]; - - /* Avoid overflow by doing the negate in a png_alloc_size_t: */ - u = (png_alloc_size_t)value; - if (value < 0) - u = ~u + 1; - - str = PNG_FORMAT_NUMBER(buffer, format, u); - - if (value < 0 && str > buffer) - *--str = '-'; - - png_warning_parameter(p, number, str); -} - -void -png_formatted_warning(png_const_structrp png_ptr, png_warning_parameters p, - png_const_charp message) -{ - /* The internal buffer is just 192 bytes - enough for all our messages, - * overflow doesn't happen because this code checks! If someone figures - * out how to send us a message longer than 192 bytes, all that will - * happen is that the message will be truncated appropriately. - */ - size_t i = 0; /* Index in the msg[] buffer: */ - char msg[192]; - - /* Each iteration through the following loop writes at most one character - * to msg[i++] then returns here to validate that there is still space for - * the trailing '\0'. It may (in the case of a parameter) read more than - * one character from message[]; it must check for '\0' and continue to the - * test if it finds the end of string. - */ - while (i<(sizeof msg)-1 && *message != '\0') - { - /* '@' at end of string is now just printed (previously it was skipped); - * it is an error in the calling code to terminate the string with @. - */ - if (p != NULL && *message == '@' && message[1] != '\0') - { - int parameter_char = *++message; /* Consume the '@' */ - static const char valid_parameters[] = "123456789"; - int parameter = 0; - - /* Search for the parameter digit, the index in the string is the - * parameter to use. - */ - while (valid_parameters[parameter] != parameter_char && - valid_parameters[parameter] != '\0') - ++parameter; - - /* If the parameter digit is out of range it will just get printed. */ - if (parameter < PNG_WARNING_PARAMETER_COUNT) - { - /* Append this parameter */ - png_const_charp parm = p[parameter]; - png_const_charp pend = p[parameter] + (sizeof p[parameter]); - - /* No need to copy the trailing '\0' here, but there is no guarantee - * that parm[] has been initialized, so there is no guarantee of a - * trailing '\0': - */ - while (i<(sizeof msg)-1 && *parm != '\0' && parm < pend) - msg[i++] = *parm++; - - /* Consume the parameter digit too: */ - ++message; - continue; - } - - /* else not a parameter and there is a character after the @ sign; just - * copy that. This is known not to be '\0' because of the test above. - */ - } - - /* At this point *message can't be '\0', even in the bad parameter case - * above where there is a lone '@' at the end of the message string. - */ - msg[i++] = *message++; - } - - /* i is always less than (sizeof msg), so: */ - msg[i] = '\0'; - - /* And this is the formatted message. It may be larger than - * PNG_MAX_ERROR_TEXT, but that is only used for 'chunk' errors and these - * are not (currently) formatted. - */ - png_warning(png_ptr, msg); -} -#endif /* WARNINGS */ - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -void PNGAPI -png_benign_error(png_const_structrp png_ptr, png_const_charp error_message) -{ - if ((png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN) != 0) - { -# ifdef PNG_READ_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - png_ptr->chunk_name != 0) - png_chunk_warning(png_ptr, error_message); - else -# endif - png_warning(png_ptr, error_message); - } - - else - { -# ifdef PNG_READ_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - png_ptr->chunk_name != 0) - png_chunk_error(png_ptr, error_message); - else -# endif - png_error(png_ptr, error_message); - } - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} - -void /* PRIVATE */ -png_app_warning(png_const_structrp png_ptr, png_const_charp error_message) -{ - if ((png_ptr->flags & PNG_FLAG_APP_WARNINGS_WARN) != 0) - png_warning(png_ptr, error_message); - else - png_error(png_ptr, error_message); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} - -void /* PRIVATE */ -png_app_error(png_const_structrp png_ptr, png_const_charp error_message) -{ - if ((png_ptr->flags & PNG_FLAG_APP_ERRORS_WARN) != 0) - png_warning(png_ptr, error_message); - else - png_error(png_ptr, error_message); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} -#endif /* BENIGN_ERRORS */ - -#define PNG_MAX_ERROR_TEXT 196 /* Currently limited by profile_error in png.c */ -#if defined(PNG_WARNINGS_SUPPORTED) || \ - (defined(PNG_READ_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED)) -/* These utilities are used internally to build an error message that relates - * to the current chunk. The chunk name comes from png_ptr->chunk_name, - * which is used to prefix the message. The message is limited in length - * to 63 bytes. The name characters are output as hex digits wrapped in [] - * if the character is invalid. - */ -#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97)) -static PNG_CONST char png_digit[16] = { - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'A', 'B', 'C', 'D', 'E', 'F' -}; - -static void /* PRIVATE */ -png_format_buffer(png_const_structrp png_ptr, png_charp buffer, png_const_charp - error_message) -{ - png_uint_32 chunk_name = png_ptr->chunk_name; - int iout = 0, ishift = 24; - - while (ishift >= 0) - { - int c = (int)(chunk_name >> ishift) & 0xff; - - ishift -= 8; - if (isnonalpha(c) != 0) - { - buffer[iout++] = PNG_LITERAL_LEFT_SQUARE_BRACKET; - buffer[iout++] = png_digit[(c & 0xf0) >> 4]; - buffer[iout++] = png_digit[c & 0x0f]; - buffer[iout++] = PNG_LITERAL_RIGHT_SQUARE_BRACKET; - } - - else - { - buffer[iout++] = (char)c; - } - } - - if (error_message == NULL) - buffer[iout] = '\0'; - - else - { - int iin = 0; - - buffer[iout++] = ':'; - buffer[iout++] = ' '; - - while (iin < PNG_MAX_ERROR_TEXT-1 && error_message[iin] != '\0') - buffer[iout++] = error_message[iin++]; - - /* iin < PNG_MAX_ERROR_TEXT, so the following is safe: */ - buffer[iout] = '\0'; - } -} -#endif /* WARNINGS || ERROR_TEXT */ - -#if defined(PNG_READ_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) -PNG_FUNCTION(void,PNGAPI -png_chunk_error,(png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN) -{ - char msg[18+PNG_MAX_ERROR_TEXT]; - if (png_ptr == NULL) - png_error(png_ptr, error_message); - - else - { - png_format_buffer(png_ptr, msg, error_message); - png_error(png_ptr, msg); - } -} -#endif /* READ && ERROR_TEXT */ - -#ifdef PNG_WARNINGS_SUPPORTED -void PNGAPI -png_chunk_warning(png_const_structrp png_ptr, png_const_charp warning_message) -{ - char msg[18+PNG_MAX_ERROR_TEXT]; - if (png_ptr == NULL) - png_warning(png_ptr, warning_message); - - else - { - png_format_buffer(png_ptr, msg, warning_message); - png_warning(png_ptr, msg); - } -} -#endif /* WARNINGS */ - -#ifdef PNG_READ_SUPPORTED -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -void PNGAPI -png_chunk_benign_error(png_const_structrp png_ptr, png_const_charp - error_message) -{ - if ((png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN) != 0) - png_chunk_warning(png_ptr, error_message); - - else - png_chunk_error(png_ptr, error_message); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} -#endif -#endif /* READ */ - -void /* PRIVATE */ -png_chunk_report(png_const_structrp png_ptr, png_const_charp message, int error) -{ -# ifndef PNG_WARNINGS_SUPPORTED - PNG_UNUSED(message) -# endif - - /* This is always supported, but for just read or just write it - * unconditionally does the right thing. - */ -# if defined(PNG_READ_SUPPORTED) && defined(PNG_WRITE_SUPPORTED) - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0) -# endif - -# ifdef PNG_READ_SUPPORTED - { - if (error < PNG_CHUNK_ERROR) - png_chunk_warning(png_ptr, message); - - else - png_chunk_benign_error(png_ptr, message); - } -# endif - -# if defined(PNG_READ_SUPPORTED) && defined(PNG_WRITE_SUPPORTED) - else if ((png_ptr->mode & PNG_IS_READ_STRUCT) == 0) -# endif - -# ifdef PNG_WRITE_SUPPORTED - { - if (error < PNG_CHUNK_WRITE_ERROR) - png_app_warning(png_ptr, message); - - else - png_app_error(png_ptr, message); - } -# endif -} - -#ifdef PNG_ERROR_TEXT_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_FUNCTION(void, -png_fixed_error,(png_const_structrp png_ptr, png_const_charp name),PNG_NORETURN) -{ -# define fixed_message "fixed point overflow in " -# define fixed_message_ln ((sizeof fixed_message)-1) - unsigned int iin; - char msg[fixed_message_ln+PNG_MAX_ERROR_TEXT]; - memcpy(msg, fixed_message, fixed_message_ln); - iin = 0; - if (name != NULL) - while (iin < (PNG_MAX_ERROR_TEXT-1) && name[iin] != 0) - { - msg[fixed_message_ln + iin] = name[iin]; - ++iin; - } - msg[fixed_message_ln + iin] = 0; - png_error(png_ptr, msg); -} -#endif -#endif - -#ifdef PNG_SETJMP_SUPPORTED -/* This API only exists if ANSI-C style error handling is used, - * otherwise it is necessary for png_default_error to be overridden. - */ -jmp_buf* PNGAPI -png_set_longjmp_fn(png_structrp png_ptr, png_longjmp_ptr longjmp_fn, - size_t jmp_buf_size) -{ - /* From libpng 1.6.0 the app gets one chance to set a 'jmpbuf_size' value - * and it must not change after that. Libpng doesn't care how big the - * buffer is, just that it doesn't change. - * - * If the buffer size is no *larger* than the size of jmp_buf when libpng is - * compiled a built in jmp_buf is returned; this preserves the pre-1.6.0 - * semantics that this call will not fail. If the size is larger, however, - * the buffer is allocated and this may fail, causing the function to return - * NULL. - */ - if (png_ptr == NULL) - return NULL; - - if (png_ptr->jmp_buf_ptr == NULL) - { - png_ptr->jmp_buf_size = 0; /* not allocated */ - - if (jmp_buf_size <= (sizeof png_ptr->jmp_buf_local)) - png_ptr->jmp_buf_ptr = &png_ptr->jmp_buf_local; - - else - { - png_ptr->jmp_buf_ptr = png_voidcast(jmp_buf *, - png_malloc_warn(png_ptr, jmp_buf_size)); - - if (png_ptr->jmp_buf_ptr == NULL) - return NULL; /* new NULL return on OOM */ - - png_ptr->jmp_buf_size = jmp_buf_size; - } - } - - else /* Already allocated: check the size */ - { - size_t size = png_ptr->jmp_buf_size; - - if (size == 0) - { - size = (sizeof png_ptr->jmp_buf_local); - if (png_ptr->jmp_buf_ptr != &png_ptr->jmp_buf_local) - { - /* This is an internal error in libpng: somehow we have been left - * with a stack allocated jmp_buf when the application regained - * control. It's always possible to fix this up, but for the moment - * this is a png_error because that makes it easy to detect. - */ - png_error(png_ptr, "Libpng jmp_buf still allocated"); - /* png_ptr->jmp_buf_ptr = &png_ptr->jmp_buf_local; */ - } - } - - if (size != jmp_buf_size) - { - png_warning(png_ptr, "Application jmp_buf size changed"); - return NULL; /* caller will probably crash: no choice here */ - } - } - - /* Finally fill in the function, now we have a satisfactory buffer. It is - * valid to change the function on every call. - */ - png_ptr->longjmp_fn = longjmp_fn; - return png_ptr->jmp_buf_ptr; -} - -void /* PRIVATE */ -png_free_jmpbuf(png_structrp png_ptr) -{ - if (png_ptr != NULL) - { - jmp_buf *jb = png_ptr->jmp_buf_ptr; - - /* A size of 0 is used to indicate a local, stack, allocation of the - * pointer; used here and in png.c - */ - if (jb != NULL && png_ptr->jmp_buf_size > 0) - { - - /* This stuff is so that a failure to free the error control structure - * does not leave libpng in a state with no valid error handling: the - * free always succeeds, if there is an error it gets ignored. - */ - if (jb != &png_ptr->jmp_buf_local) - { - /* Make an internal, libpng, jmp_buf to return here */ - jmp_buf free_jmp_buf; - - if (!setjmp(free_jmp_buf)) - { - png_ptr->jmp_buf_ptr = &free_jmp_buf; /* come back here */ - png_ptr->jmp_buf_size = 0; /* stack allocation */ - png_ptr->longjmp_fn = longjmp; - png_free(png_ptr, jb); /* Return to setjmp on error */ - } - } - } - - /* *Always* cancel everything out: */ - png_ptr->jmp_buf_size = 0; - png_ptr->jmp_buf_ptr = NULL; - png_ptr->longjmp_fn = 0; - } -} -#endif - -/* This is the default error handling function. Note that replacements for - * this function MUST NOT RETURN, or the program will likely crash. This - * function is used by default, or if the program supplies NULL for the - * error function pointer in png_set_error_fn(). - */ -static PNG_FUNCTION(void /* PRIVATE */, -png_default_error,(png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN) -{ -#ifdef PNG_CONSOLE_IO_SUPPORTED -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - /* Check on NULL only added in 1.5.4 */ - if (error_message != NULL && *error_message == PNG_LITERAL_SHARP) - { - /* Strip "#nnnn " from beginning of error message. */ - int offset; - char error_number[16]; - for (offset = 0; offset<15; offset++) - { - error_number[offset] = error_message[offset + 1]; - if (error_message[offset] == ' ') - break; - } - - if ((offset > 1) && (offset < 15)) - { - error_number[offset - 1] = '\0'; - fprintf(stderr, "libpng error no. %s: %s", - error_number, error_message + offset + 1); - fprintf(stderr, PNG_STRING_NEWLINE); - } - - else - { - fprintf(stderr, "libpng error: %s, offset=%d", - error_message, offset); - fprintf(stderr, PNG_STRING_NEWLINE); - } - } - else -#endif - { - fprintf(stderr, "libpng error: %s", error_message ? error_message : - "undefined"); - fprintf(stderr, PNG_STRING_NEWLINE); - } -#else - PNG_UNUSED(error_message) /* Make compiler happy */ -#endif - png_longjmp(png_ptr, 1); -} - -PNG_FUNCTION(void,PNGAPI -png_longjmp,(png_const_structrp png_ptr, int val),PNG_NORETURN) -{ -#ifdef PNG_SETJMP_SUPPORTED - if (png_ptr != NULL && png_ptr->longjmp_fn != NULL && - png_ptr->jmp_buf_ptr != NULL) - png_ptr->longjmp_fn(*png_ptr->jmp_buf_ptr, val); -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(val) -#endif - - /* If control reaches this point, png_longjmp() must not return. The only - * choice is to terminate the whole process (or maybe the thread); to do - * this the ANSI-C abort() function is used unless a different method is - * implemented by overriding the default configuration setting for - * PNG_ABORT(). - */ - PNG_ABORT(); -} - -#ifdef PNG_WARNINGS_SUPPORTED -/* This function is called when there is a warning, but the library thinks - * it can continue anyway. Replacement functions don't have to do anything - * here if you don't want them to. In the default configuration, png_ptr is - * not used, but it is passed in case it may be useful. - */ -static void /* PRIVATE */ -png_default_warning(png_const_structrp png_ptr, png_const_charp warning_message) -{ -#ifdef PNG_CONSOLE_IO_SUPPORTED -# ifdef PNG_ERROR_NUMBERS_SUPPORTED - if (*warning_message == PNG_LITERAL_SHARP) - { - int offset; - char warning_number[16]; - for (offset = 0; offset < 15; offset++) - { - warning_number[offset] = warning_message[offset + 1]; - if (warning_message[offset] == ' ') - break; - } - - if ((offset > 1) && (offset < 15)) - { - warning_number[offset + 1] = '\0'; - fprintf(stderr, "libpng warning no. %s: %s", - warning_number, warning_message + offset); - fprintf(stderr, PNG_STRING_NEWLINE); - } - - else - { - fprintf(stderr, "libpng warning: %s", - warning_message); - fprintf(stderr, PNG_STRING_NEWLINE); - } - } - else -# endif - - { - fprintf(stderr, "libpng warning: %s", warning_message); - fprintf(stderr, PNG_STRING_NEWLINE); - } -#else - PNG_UNUSED(warning_message) /* Make compiler happy */ -#endif - PNG_UNUSED(png_ptr) /* Make compiler happy */ -} -#endif /* WARNINGS */ - -/* This function is called when the application wants to use another method - * of handling errors and warnings. Note that the error function MUST NOT - * return to the calling routine or serious problems will occur. The return - * method used in the default routine calls longjmp(png_ptr->jmp_buf_ptr, 1) - */ -void PNGAPI -png_set_error_fn(png_structrp png_ptr, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warning_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->error_ptr = error_ptr; - png_ptr->error_fn = error_fn; -#ifdef PNG_WARNINGS_SUPPORTED - png_ptr->warning_fn = warning_fn; -#else - PNG_UNUSED(warning_fn) -#endif -} - - -/* This function returns a pointer to the error_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy and png_read_destroy are called. - */ -png_voidp PNGAPI -png_get_error_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return NULL; - - return ((png_voidp)png_ptr->error_ptr); -} - - -#ifdef PNG_ERROR_NUMBERS_SUPPORTED -void PNGAPI -png_set_strip_error_numbers(png_structrp png_ptr, png_uint_32 strip_mode) -{ - if (png_ptr != NULL) - { - png_ptr->flags &= - ((~(PNG_FLAG_STRIP_ERROR_NUMBERS | - PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode); - } -} -#endif - -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) - /* Currently the above both depend on SETJMP_SUPPORTED, however it would be - * possible to implement without setjmp support just so long as there is some - * way to handle the error return here: - */ -PNG_FUNCTION(void /* PRIVATE */, (PNGCBAPI -png_safe_error),(png_structp png_nonconst_ptr, png_const_charp error_message), - PNG_NORETURN) -{ - const png_const_structrp png_ptr = png_nonconst_ptr; - png_imagep image = png_voidcast(png_imagep, png_ptr->error_ptr); - - /* An error is always logged here, overwriting anything (typically a warning) - * that is already there: - */ - if (image != NULL) - { - png_safecat(image->message, (sizeof image->message), 0, error_message); - image->warning_or_error |= PNG_IMAGE_ERROR; - - /* Retrieve the jmp_buf from within the png_control, making this work for - * C++ compilation too is pretty tricky: C++ wants a pointer to the first - * element of a jmp_buf, but C doesn't tell us the type of that. - */ - if (image->opaque != NULL && image->opaque->error_buf != NULL) - longjmp(png_control_jmp_buf(image->opaque), 1); - - /* Missing longjmp buffer, the following is to help debugging: */ - { - size_t pos = png_safecat(image->message, (sizeof image->message), 0, - "bad longjmp: "); - png_safecat(image->message, (sizeof image->message), pos, - error_message); - } - } - - /* Here on an internal programming error. */ - abort(); -} - -#ifdef PNG_WARNINGS_SUPPORTED -void /* PRIVATE */ PNGCBAPI -png_safe_warning(png_structp png_nonconst_ptr, png_const_charp warning_message) -{ - const png_const_structrp png_ptr = png_nonconst_ptr; - png_imagep image = png_voidcast(png_imagep, png_ptr->error_ptr); - - /* A warning is only logged if there is no prior warning or error. */ - if (image->warning_or_error == 0) - { - png_safecat(image->message, (sizeof image->message), 0, warning_message); - image->warning_or_error |= PNG_IMAGE_WARNING; - } -} -#endif - -int /* PRIVATE */ -png_safe_execute(png_imagep image_in, int (*function)(png_voidp), png_voidp arg) -{ - volatile png_imagep image = image_in; - volatile int result; - volatile png_voidp saved_error_buf; - jmp_buf safe_jmpbuf; - - /* Safely execute function(arg) with png_error returning to this function. */ - saved_error_buf = image->opaque->error_buf; - result = setjmp(safe_jmpbuf) == 0; - - if (result != 0) - { - - image->opaque->error_buf = safe_jmpbuf; - result = function(arg); - } - - image->opaque->error_buf = saved_error_buf; - - /* And do the cleanup prior to any failure return. */ - if (result == 0) - png_image_free(image); - - return result; -} -#endif /* SIMPLIFIED READ || SIMPLIFIED_WRITE */ -#endif /* READ || WRITE */ diff --git a/src/png/libpng/pngget.c b/src/png/libpng/pngget.c deleted file mode 100644 index 26e9fb1c3..000000000 --- a/src/png/libpng/pngget.c +++ /dev/null @@ -1,1248 +0,0 @@ - -/* pngget.c - retrieval of values from info struct - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -png_uint_32 PNGAPI -png_get_valid(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 flag) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->valid & flag); - - return(0); -} - -png_size_t PNGAPI -png_get_rowbytes(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->rowbytes); - - return(0); -} - -#ifdef PNG_INFO_IMAGE_SUPPORTED -png_bytepp PNGAPI -png_get_rows(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->row_pointers); - - return(0); -} -#endif - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* Easy access to info, added in libpng-0.99 */ -png_uint_32 PNGAPI -png_get_image_width(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->width; - - return (0); -} - -png_uint_32 PNGAPI -png_get_image_height(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->height; - - return (0); -} - -png_byte PNGAPI -png_get_bit_depth(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->bit_depth; - - return (0); -} - -png_byte PNGAPI -png_get_color_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->color_type; - - return (0); -} - -png_byte PNGAPI -png_get_filter_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->filter_type; - - return (0); -} - -png_byte PNGAPI -png_get_interlace_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->interlace_type; - - return (0); -} - -png_byte PNGAPI -png_get_compression_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->compression_type; - - return (0); -} - -png_uint_32 PNGAPI -png_get_x_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp - info_ptr) -{ -#ifdef PNG_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - png_debug1(1, "in %s retrieval function", - "png_get_x_pixels_per_meter"); - - if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER) - return (info_ptr->x_pixels_per_unit); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -png_uint_32 PNGAPI -png_get_y_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp - info_ptr) -{ -#ifdef PNG_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - png_debug1(1, "in %s retrieval function", - "png_get_y_pixels_per_meter"); - - if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER) - return (info_ptr->y_pixels_per_unit); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -png_uint_32 PNGAPI -png_get_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter"); - - if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER && - info_ptr->x_pixels_per_unit == info_ptr->y_pixels_per_unit) - return (info_ptr->x_pixels_per_unit); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -#ifdef PNG_FLOATING_POINT_SUPPORTED -float PNGAPI -png_get_pixel_aspect_ratio(png_const_structrp png_ptr, png_const_inforp - info_ptr) -{ -#ifdef PNG_READ_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio"); - - if (info_ptr->x_pixels_per_unit != 0) - return ((float)((float)info_ptr->y_pixels_per_unit - /(float)info_ptr->x_pixels_per_unit)); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return ((float)0.0); -} -#endif - -#ifdef PNG_FIXED_POINT_SUPPORTED -png_fixed_point PNGAPI -png_get_pixel_aspect_ratio_fixed(png_const_structrp png_ptr, - png_const_inforp info_ptr) -{ -#ifdef PNG_READ_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0 && - info_ptr->x_pixels_per_unit > 0 && info_ptr->y_pixels_per_unit > 0 && - info_ptr->x_pixels_per_unit <= PNG_UINT_31_MAX && - info_ptr->y_pixels_per_unit <= PNG_UINT_31_MAX) - { - png_fixed_point res; - - png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio_fixed"); - - /* The following casts work because a PNG 4 byte integer only has a valid - * range of 0..2^31-1; otherwise the cast might overflow. - */ - if (png_muldiv(&res, (png_int_32)info_ptr->y_pixels_per_unit, PNG_FP_1, - (png_int_32)info_ptr->x_pixels_per_unit) != 0) - return res; - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return 0; -} -#endif - -png_int_32 PNGAPI -png_get_x_offset_microns(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_oFFs) != 0) - { - png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_MICROMETER) - return (info_ptr->x_offset); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -png_int_32 PNGAPI -png_get_y_offset_microns(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_oFFs) != 0) - { - png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_MICROMETER) - return (info_ptr->y_offset); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -png_int_32 PNGAPI -png_get_x_offset_pixels(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_oFFs) != 0) - { - png_debug1(1, "in %s retrieval function", "png_get_x_offset_pixels"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_PIXEL) - return (info_ptr->x_offset); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -png_int_32 PNGAPI -png_get_y_offset_pixels(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_oFFs) != 0) - { - png_debug1(1, "in %s retrieval function", "png_get_y_offset_pixels"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_PIXEL) - return (info_ptr->y_offset); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return (0); -} - -#ifdef PNG_INCH_CONVERSIONS_SUPPORTED -static png_uint_32 -ppi_from_ppm(png_uint_32 ppm) -{ -#if 0 - /* The conversion is *(2.54/100), in binary (32 digits): - * .00000110100000001001110101001001 - */ - png_uint_32 t1001, t1101; - ppm >>= 1; /* .1 */ - t1001 = ppm + (ppm >> 3); /* .1001 */ - t1101 = t1001 + (ppm >> 1); /* .1101 */ - ppm >>= 20; /* .000000000000000000001 */ - t1101 += t1101 >> 15; /* .1101000000000001101 */ - t1001 >>= 11; /* .000000000001001 */ - t1001 += t1001 >> 12; /* .000000000001001000000001001 */ - ppm += t1001; /* .000000000001001000001001001 */ - ppm += t1101; /* .110100000001001110101001001 */ - return (ppm + 16) >> 5;/* .00000110100000001001110101001001 */ -#else - /* The argument is a PNG unsigned integer, so it is not permitted - * to be bigger than 2^31. - */ - png_fixed_point result; - if (ppm <= PNG_UINT_31_MAX && png_muldiv(&result, (png_int_32)ppm, 127, - 5000) != 0) - return (png_uint_32)result; - - /* Overflow. */ - return 0; -#endif -} - -png_uint_32 PNGAPI -png_get_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - return ppi_from_ppm(png_get_pixels_per_meter(png_ptr, info_ptr)); -} - -png_uint_32 PNGAPI -png_get_x_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - return ppi_from_ppm(png_get_x_pixels_per_meter(png_ptr, info_ptr)); -} - -png_uint_32 PNGAPI -png_get_y_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - return ppi_from_ppm(png_get_y_pixels_per_meter(png_ptr, info_ptr)); -} - -#ifdef PNG_FIXED_POINT_SUPPORTED -static png_fixed_point -png_fixed_inches_from_microns(png_const_structrp png_ptr, png_int_32 microns) -{ - /* Convert from metres * 1,000,000 to inches * 100,000, meters to - * inches is simply *(100/2.54), so we want *(10/2.54) == 500/127. - * Notice that this can overflow - a warning is output and 0 is - * returned. - */ - return png_muldiv_warn(png_ptr, microns, 500, 127); -} - -png_fixed_point PNGAPI -png_get_x_offset_inches_fixed(png_const_structrp png_ptr, - png_const_inforp info_ptr) -{ - return png_fixed_inches_from_microns(png_ptr, - png_get_x_offset_microns(png_ptr, info_ptr)); -} -#endif - -#ifdef PNG_FIXED_POINT_SUPPORTED -png_fixed_point PNGAPI -png_get_y_offset_inches_fixed(png_const_structrp png_ptr, - png_const_inforp info_ptr) -{ - return png_fixed_inches_from_microns(png_ptr, - png_get_y_offset_microns(png_ptr, info_ptr)); -} -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -float PNGAPI -png_get_x_offset_inches(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - /* To avoid the overflow do the conversion directly in floating - * point. - */ - return (float)(png_get_x_offset_microns(png_ptr, info_ptr) * .00003937); -} -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -float PNGAPI -png_get_y_offset_inches(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - /* To avoid the overflow do the conversion directly in floating - * point. - */ - return (float)(png_get_y_offset_microns(png_ptr, info_ptr) * .00003937); -} -#endif - -#ifdef PNG_pHYs_SUPPORTED -png_uint_32 PNGAPI -png_get_pHYs_dpi(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) -{ - png_uint_32 retval = 0; - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - png_debug1(1, "in %s retrieval function", "pHYs"); - - if (res_x != NULL) - { - *res_x = info_ptr->x_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (res_y != NULL) - { - *res_y = info_ptr->y_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (unit_type != NULL) - { - *unit_type = (int)info_ptr->phys_unit_type; - retval |= PNG_INFO_pHYs; - - if (*unit_type == 1) - { - if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50); - if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50); - } - } - } - - return (retval); -} -#endif /* pHYs */ -#endif /* INCH_CONVERSIONS */ - -/* png_get_channels really belongs in here, too, but it's been around longer */ - -#endif /* EASY_ACCESS */ - - -png_byte PNGAPI -png_get_channels(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->channels); - - return (0); -} - -#ifdef PNG_READ_SUPPORTED -png_const_bytep PNGAPI -png_get_signature(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->signature); - - return (NULL); -} -#endif - -#ifdef PNG_bKGD_SUPPORTED -png_uint_32 PNGAPI -png_get_bKGD(png_const_structrp png_ptr, png_inforp info_ptr, - png_color_16p *background) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_bKGD) != 0 && - background != NULL) - { - png_debug1(1, "in %s retrieval function", "bKGD"); - - *background = &(info_ptr->background); - return (PNG_INFO_bKGD); - } - - return (0); -} -#endif - -#ifdef PNG_cHRM_SUPPORTED -/* The XYZ APIs were added in 1.5.5 to take advantage of the code added at the - * same time to correct the rgb grayscale coefficient defaults obtained from the - * cHRM chunk in 1.5.4 - */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_cHRM(png_const_structrp png_ptr, png_const_inforp info_ptr, - double *white_x, double *white_y, double *red_x, double *red_y, - double *green_x, double *green_y, double *blue_x, double *blue_y) -{ - /* Quiet API change: this code used to only return the end points if a cHRM - * chunk was present, but the end points can also come from iCCP or sRGB - * chunks, so in 1.6.0 the png_get_ APIs return the end points regardless and - * the png_set_ APIs merely check that set end points are mutually - * consistent. - */ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - { - png_debug1(1, "in %s retrieval function", "cHRM"); - - if (white_x != NULL) - *white_x = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.whitex, "cHRM white X"); - if (white_y != NULL) - *white_y = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.whitey, "cHRM white Y"); - if (red_x != NULL) - *red_x = png_float(png_ptr, info_ptr->colorspace.end_points_xy.redx, - "cHRM red X"); - if (red_y != NULL) - *red_y = png_float(png_ptr, info_ptr->colorspace.end_points_xy.redy, - "cHRM red Y"); - if (green_x != NULL) - *green_x = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.greenx, "cHRM green X"); - if (green_y != NULL) - *green_y = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.greeny, "cHRM green Y"); - if (blue_x != NULL) - *blue_x = png_float(png_ptr, info_ptr->colorspace.end_points_xy.bluex, - "cHRM blue X"); - if (blue_y != NULL) - *blue_y = png_float(png_ptr, info_ptr->colorspace.end_points_xy.bluey, - "cHRM blue Y"); - return (PNG_INFO_cHRM); - } - - return (0); -} - -png_uint_32 PNGAPI -png_get_cHRM_XYZ(png_const_structrp png_ptr, png_const_inforp info_ptr, - double *red_X, double *red_Y, double *red_Z, double *green_X, - double *green_Y, double *green_Z, double *blue_X, double *blue_Y, - double *blue_Z) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - { - png_debug1(1, "in %s retrieval function", "cHRM_XYZ(float)"); - - if (red_X != NULL) - *red_X = png_float(png_ptr, info_ptr->colorspace.end_points_XYZ.red_X, - "cHRM red X"); - if (red_Y != NULL) - *red_Y = png_float(png_ptr, info_ptr->colorspace.end_points_XYZ.red_Y, - "cHRM red Y"); - if (red_Z != NULL) - *red_Z = png_float(png_ptr, info_ptr->colorspace.end_points_XYZ.red_Z, - "cHRM red Z"); - if (green_X != NULL) - *green_X = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.green_X, "cHRM green X"); - if (green_Y != NULL) - *green_Y = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.green_Y, "cHRM green Y"); - if (green_Z != NULL) - *green_Z = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.green_Z, "cHRM green Z"); - if (blue_X != NULL) - *blue_X = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.blue_X, "cHRM blue X"); - if (blue_Y != NULL) - *blue_Y = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.blue_Y, "cHRM blue Y"); - if (blue_Z != NULL) - *blue_Z = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.blue_Z, "cHRM blue Z"); - return (PNG_INFO_cHRM); - } - - return (0); -} -# endif - -# ifdef PNG_FIXED_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_cHRM_XYZ_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_red_X, png_fixed_point *int_red_Y, - png_fixed_point *int_red_Z, png_fixed_point *int_green_X, - png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, - png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, - png_fixed_point *int_blue_Z) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - { - png_debug1(1, "in %s retrieval function", "cHRM_XYZ"); - - if (int_red_X != NULL) - *int_red_X = info_ptr->colorspace.end_points_XYZ.red_X; - if (int_red_Y != NULL) - *int_red_Y = info_ptr->colorspace.end_points_XYZ.red_Y; - if (int_red_Z != NULL) - *int_red_Z = info_ptr->colorspace.end_points_XYZ.red_Z; - if (int_green_X != NULL) - *int_green_X = info_ptr->colorspace.end_points_XYZ.green_X; - if (int_green_Y != NULL) - *int_green_Y = info_ptr->colorspace.end_points_XYZ.green_Y; - if (int_green_Z != NULL) - *int_green_Z = info_ptr->colorspace.end_points_XYZ.green_Z; - if (int_blue_X != NULL) - *int_blue_X = info_ptr->colorspace.end_points_XYZ.blue_X; - if (int_blue_Y != NULL) - *int_blue_Y = info_ptr->colorspace.end_points_XYZ.blue_Y; - if (int_blue_Z != NULL) - *int_blue_Z = info_ptr->colorspace.end_points_XYZ.blue_Z; - return (PNG_INFO_cHRM); - } - - return (0); -} - -png_uint_32 PNGAPI -png_get_cHRM_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x, - png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y, - png_fixed_point *blue_x, png_fixed_point *blue_y) -{ - png_debug1(1, "in %s retrieval function", "cHRM"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS) != 0) - { - if (white_x != NULL) - *white_x = info_ptr->colorspace.end_points_xy.whitex; - if (white_y != NULL) - *white_y = info_ptr->colorspace.end_points_xy.whitey; - if (red_x != NULL) - *red_x = info_ptr->colorspace.end_points_xy.redx; - if (red_y != NULL) - *red_y = info_ptr->colorspace.end_points_xy.redy; - if (green_x != NULL) - *green_x = info_ptr->colorspace.end_points_xy.greenx; - if (green_y != NULL) - *green_y = info_ptr->colorspace.end_points_xy.greeny; - if (blue_x != NULL) - *blue_x = info_ptr->colorspace.end_points_xy.bluex; - if (blue_y != NULL) - *blue_y = info_ptr->colorspace.end_points_xy.bluey; - return (PNG_INFO_cHRM); - } - - return (0); -} -# endif -#endif - -#ifdef PNG_gAMA_SUPPORTED -# ifdef PNG_FIXED_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_gAMA_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *file_gamma) -{ - png_debug1(1, "in %s retrieval function", "gAMA"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) != 0 && - file_gamma != NULL) - { - *file_gamma = info_ptr->colorspace.gamma; - return (PNG_INFO_gAMA); - } - - return (0); -} -# endif - -# ifdef PNG_FLOATING_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_gAMA(png_const_structrp png_ptr, png_const_inforp info_ptr, - double *file_gamma) -{ - png_debug1(1, "in %s retrieval function", "gAMA(float)"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) != 0 && - file_gamma != NULL) - { - *file_gamma = png_float(png_ptr, info_ptr->colorspace.gamma, - "png_get_gAMA"); - return (PNG_INFO_gAMA); - } - - return (0); -} -# endif -#endif - -#ifdef PNG_sRGB_SUPPORTED -png_uint_32 PNGAPI -png_get_sRGB(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *file_srgb_intent) -{ - png_debug1(1, "in %s retrieval function", "sRGB"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sRGB) != 0 && file_srgb_intent != NULL) - { - *file_srgb_intent = info_ptr->colorspace.rendering_intent; - return (PNG_INFO_sRGB); - } - - return (0); -} -#endif - -#ifdef PNG_iCCP_SUPPORTED -png_uint_32 PNGAPI -png_get_iCCP(png_const_structrp png_ptr, png_inforp info_ptr, - png_charpp name, int *compression_type, - png_bytepp profile, png_uint_32 *proflen) -{ - png_debug1(1, "in %s retrieval function", "iCCP"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_iCCP) != 0 && - name != NULL && compression_type != NULL && profile != NULL && - proflen != NULL) - { - *name = info_ptr->iccp_name; - *profile = info_ptr->iccp_profile; - *proflen = png_get_uint_32(info_ptr->iccp_profile); - /* This is somewhat irrelevant since the profile data returned has - * actually been uncompressed. - */ - *compression_type = PNG_COMPRESSION_TYPE_BASE; - return (PNG_INFO_iCCP); - } - - return (0); -} -#endif - -#ifdef PNG_sPLT_SUPPORTED -int PNGAPI -png_get_sPLT(png_const_structrp png_ptr, png_inforp info_ptr, - png_sPLT_tpp spalettes) -{ - if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL) - { - *spalettes = info_ptr->splt_palettes; - return info_ptr->splt_palettes_num; - } - - return (0); -} -#endif - -#ifdef PNG_eXIf_SUPPORTED -png_uint_32 PNGAPI -png_get_eXIf(png_const_structrp png_ptr, png_inforp info_ptr, - png_bytep *exif) -{ - png_warning(png_ptr, "png_get_eXIf does not work; use png_get_eXIf_1"); - PNG_UNUSED(info_ptr) - PNG_UNUSED(exif) - return 0; -} - -png_uint_32 PNGAPI -png_get_eXIf_1(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *num_exif, png_bytep *exif) -{ - png_debug1(1, "in %s retrieval function", "eXIf"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_eXIf) != 0 && exif != NULL) - { - *num_exif = info_ptr->num_exif; - *exif = info_ptr->exif; - return (PNG_INFO_eXIf); - } - - return (0); -} -#endif - -#ifdef PNG_hIST_SUPPORTED -png_uint_32 PNGAPI -png_get_hIST(png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_16p *hist) -{ - png_debug1(1, "in %s retrieval function", "hIST"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_hIST) != 0 && hist != NULL) - { - *hist = info_ptr->hist; - return (PNG_INFO_hIST); - } - - return (0); -} -#endif - -png_uint_32 PNGAPI -png_get_IHDR(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *width, png_uint_32 *height, int *bit_depth, - int *color_type, int *interlace_type, int *compression_type, - int *filter_type) -{ - png_debug1(1, "in %s retrieval function", "IHDR"); - - if (png_ptr == NULL || info_ptr == NULL) - return (0); - - if (width != NULL) - *width = info_ptr->width; - - if (height != NULL) - *height = info_ptr->height; - - if (bit_depth != NULL) - *bit_depth = info_ptr->bit_depth; - - if (color_type != NULL) - *color_type = info_ptr->color_type; - - if (compression_type != NULL) - *compression_type = info_ptr->compression_type; - - if (filter_type != NULL) - *filter_type = info_ptr->filter_type; - - if (interlace_type != NULL) - *interlace_type = info_ptr->interlace_type; - - /* This is redundant if we can be sure that the info_ptr values were all - * assigned in png_set_IHDR(). We do the check anyhow in case an - * application has ignored our advice not to mess with the members - * of info_ptr directly. - */ - png_check_IHDR(png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type, - info_ptr->compression_type, info_ptr->filter_type); - - return (1); -} - -#ifdef PNG_oFFs_SUPPORTED -png_uint_32 PNGAPI -png_get_oFFs(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type) -{ - png_debug1(1, "in %s retrieval function", "oFFs"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_oFFs) != 0 && - offset_x != NULL && offset_y != NULL && unit_type != NULL) - { - *offset_x = info_ptr->x_offset; - *offset_y = info_ptr->y_offset; - *unit_type = (int)info_ptr->offset_unit_type; - return (PNG_INFO_oFFs); - } - - return (0); -} -#endif - -#ifdef PNG_pCAL_SUPPORTED -png_uint_32 PNGAPI -png_get_pCAL(png_const_structrp png_ptr, png_inforp info_ptr, - png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams, - png_charp *units, png_charpp *params) -{ - png_debug1(1, "in %s retrieval function", "pCAL"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pCAL) != 0 && - purpose != NULL && X0 != NULL && X1 != NULL && type != NULL && - nparams != NULL && units != NULL && params != NULL) - { - *purpose = info_ptr->pcal_purpose; - *X0 = info_ptr->pcal_X0; - *X1 = info_ptr->pcal_X1; - *type = (int)info_ptr->pcal_type; - *nparams = (int)info_ptr->pcal_nparams; - *units = info_ptr->pcal_units; - *params = info_ptr->pcal_params; - return (PNG_INFO_pCAL); - } - - return (0); -} -#endif - -#ifdef PNG_sCAL_SUPPORTED -# ifdef PNG_FIXED_POINT_SUPPORTED -# if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ - defined(PNG_FLOATING_POINT_SUPPORTED) -png_uint_32 PNGAPI -png_get_sCAL_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, png_fixed_point *width, png_fixed_point *height) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sCAL) != 0) - { - *unit = info_ptr->scal_unit; - /*TODO: make this work without FP support; the API is currently eliminated - * if neither floating point APIs nor internal floating point arithmetic - * are enabled. - */ - *width = png_fixed(png_ptr, atof(info_ptr->scal_s_width), "sCAL width"); - *height = png_fixed(png_ptr, atof(info_ptr->scal_s_height), - "sCAL height"); - return (PNG_INFO_sCAL); - } - - return(0); -} -# endif /* FLOATING_ARITHMETIC */ -# endif /* FIXED_POINT */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_sCAL(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, double *width, double *height) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sCAL) != 0) - { - *unit = info_ptr->scal_unit; - *width = atof(info_ptr->scal_s_width); - *height = atof(info_ptr->scal_s_height); - return (PNG_INFO_sCAL); - } - - return(0); -} -# endif /* FLOATING POINT */ -png_uint_32 PNGAPI -png_get_sCAL_s(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, png_charpp width, png_charpp height) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sCAL) != 0) - { - *unit = info_ptr->scal_unit; - *width = info_ptr->scal_s_width; - *height = info_ptr->scal_s_height; - return (PNG_INFO_sCAL); - } - - return(0); -} -#endif /* sCAL */ - -#ifdef PNG_pHYs_SUPPORTED -png_uint_32 PNGAPI -png_get_pHYs(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) -{ - png_uint_32 retval = 0; - - png_debug1(1, "in %s retrieval function", "pHYs"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - if (res_x != NULL) - { - *res_x = info_ptr->x_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (res_y != NULL) - { - *res_y = info_ptr->y_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (unit_type != NULL) - { - *unit_type = (int)info_ptr->phys_unit_type; - retval |= PNG_INFO_pHYs; - } - } - - return (retval); -} -#endif /* pHYs */ - -png_uint_32 PNGAPI -png_get_PLTE(png_const_structrp png_ptr, png_inforp info_ptr, - png_colorp *palette, int *num_palette) -{ - png_debug1(1, "in %s retrieval function", "PLTE"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_PLTE) != 0 && palette != NULL) - { - *palette = info_ptr->palette; - *num_palette = info_ptr->num_palette; - png_debug1(3, "num_palette = %d", *num_palette); - return (PNG_INFO_PLTE); - } - - return (0); -} - -#ifdef PNG_sBIT_SUPPORTED -png_uint_32 PNGAPI -png_get_sBIT(png_const_structrp png_ptr, png_inforp info_ptr, - png_color_8p *sig_bit) -{ - png_debug1(1, "in %s retrieval function", "sBIT"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sBIT) != 0 && sig_bit != NULL) - { - *sig_bit = &(info_ptr->sig_bit); - return (PNG_INFO_sBIT); - } - - return (0); -} -#endif - -#ifdef PNG_TEXT_SUPPORTED -int PNGAPI -png_get_text(png_const_structrp png_ptr, png_inforp info_ptr, - png_textp *text_ptr, int *num_text) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0) - { - png_debug1(1, "in 0x%lx retrieval function", - (unsigned long)png_ptr->chunk_name); - - if (text_ptr != NULL) - *text_ptr = info_ptr->text; - - if (num_text != NULL) - *num_text = info_ptr->num_text; - - return info_ptr->num_text; - } - - if (num_text != NULL) - *num_text = 0; - - return(0); -} -#endif - -#ifdef PNG_tIME_SUPPORTED -png_uint_32 PNGAPI -png_get_tIME(png_const_structrp png_ptr, png_inforp info_ptr, - png_timep *mod_time) -{ - png_debug1(1, "in %s retrieval function", "tIME"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_tIME) != 0 && mod_time != NULL) - { - *mod_time = &(info_ptr->mod_time); - return (PNG_INFO_tIME); - } - - return (0); -} -#endif - -#ifdef PNG_tRNS_SUPPORTED -png_uint_32 PNGAPI -png_get_tRNS(png_const_structrp png_ptr, png_inforp info_ptr, - png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color) -{ - png_uint_32 retval = 0; - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_tRNS) != 0) - { - png_debug1(1, "in %s retrieval function", "tRNS"); - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (trans_alpha != NULL) - { - *trans_alpha = info_ptr->trans_alpha; - retval |= PNG_INFO_tRNS; - } - - if (trans_color != NULL) - *trans_color = &(info_ptr->trans_color); - } - - else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */ - { - if (trans_color != NULL) - { - *trans_color = &(info_ptr->trans_color); - retval |= PNG_INFO_tRNS; - } - - if (trans_alpha != NULL) - *trans_alpha = NULL; - } - - if (num_trans != NULL) - { - *num_trans = info_ptr->num_trans; - retval |= PNG_INFO_tRNS; - } - } - - return (retval); -} -#endif - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -int PNGAPI -png_get_unknown_chunks(png_const_structrp png_ptr, png_inforp info_ptr, - png_unknown_chunkpp unknowns) -{ - if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL) - { - *unknowns = info_ptr->unknown_chunks; - return info_ptr->unknown_chunks_num; - } - - return (0); -} -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -png_byte PNGAPI -png_get_rgb_to_gray_status (png_const_structrp png_ptr) -{ - return (png_byte)(png_ptr ? png_ptr->rgb_to_gray_status : 0); -} -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -png_voidp PNGAPI -png_get_user_chunk_ptr(png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_chunk_ptr : NULL); -} -#endif - -png_size_t PNGAPI -png_get_compression_buffer_size(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return 0; - -#ifdef PNG_WRITE_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0) -#endif - { -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED - return png_ptr->IDAT_read_size; -#else - return PNG_IDAT_READ_SIZE; -#endif - } - -#ifdef PNG_WRITE_SUPPORTED - else - return png_ptr->zbuffer_size; -#endif -} - -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -/* These functions were added to libpng 1.2.6 and were enabled - * by default in libpng-1.4.0 */ -png_uint_32 PNGAPI -png_get_user_width_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_width_max : 0); -} - -png_uint_32 PNGAPI -png_get_user_height_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_height_max : 0); -} - -/* This function was added to libpng 1.4.0 */ -png_uint_32 PNGAPI -png_get_chunk_cache_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_chunk_cache_max : 0); -} - -/* This function was added to libpng 1.4.1 */ -png_alloc_size_t PNGAPI -png_get_chunk_malloc_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_chunk_malloc_max : 0); -} -#endif /* SET_USER_LIMITS */ - -/* These functions were added to libpng 1.4.0 */ -#ifdef PNG_IO_STATE_SUPPORTED -png_uint_32 PNGAPI -png_get_io_state (png_const_structrp png_ptr) -{ - return png_ptr->io_state; -} - -png_uint_32 PNGAPI -png_get_io_chunk_type (png_const_structrp png_ptr) -{ - return png_ptr->chunk_name; -} -#endif /* IO_STATE */ - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -# ifdef PNG_GET_PALETTE_MAX_SUPPORTED -int PNGAPI -png_get_palette_max(png_const_structp png_ptr, png_const_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return png_ptr->num_palette_max; - - return (-1); -} -# endif -#endif - -#endif /* READ || WRITE */ diff --git a/src/png/libpng/pnginfo.h b/src/png/libpng/pnginfo.h deleted file mode 100644 index d5f6149db..000000000 --- a/src/png/libpng/pnginfo.h +++ /dev/null @@ -1,267 +0,0 @@ - -/* pnginfo.h - header file for PNG reference library - * - * Last changed in libpng 1.6.1 [March 28, 2013] - * Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - - /* png_info is a structure that holds the information in a PNG file so - * that the application can find out the characteristics of the image. - * If you are reading the file, this structure will tell you what is - * in the PNG file. If you are writing the file, fill in the information - * you want to put into the PNG file, using png_set_*() functions, then - * call png_write_info(). - * - * The names chosen should be very close to the PNG specification, so - * consult that document for information about the meaning of each field. - * - * With libpng < 0.95, it was only possible to directly set and read the - * the values in the png_info_struct, which meant that the contents and - * order of the values had to remain fixed. With libpng 0.95 and later, - * however, there are now functions that abstract the contents of - * png_info_struct from the application, so this makes it easier to use - * libpng with dynamic libraries, and even makes it possible to use - * libraries that don't have all of the libpng ancillary chunk-handing - * functionality. In libpng-1.5.0 this was moved into a separate private - * file that is not visible to applications. - * - * The following members may have allocated storage attached that should be - * cleaned up before the structure is discarded: palette, trans, text, - * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, - * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these - * are automatically freed when the info structure is deallocated, if they were - * allocated internally by libpng. This behavior can be changed by means - * of the png_data_freer() function. - * - * More allocation details: all the chunk-reading functions that - * change these members go through the corresponding png_set_* - * functions. A function to clear these members is available: see - * png_free_data(). The png_set_* functions do not depend on being - * able to point info structure members to any of the storage they are - * passed (they make their own copies), EXCEPT that the png_set_text - * functions use the same storage passed to them in the text_ptr or - * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns - * functions do not make their own copies. - */ -#ifndef PNGINFO_H -#define PNGINFO_H - -struct png_info_def -{ - /* The following are necessary for every PNG file */ - png_uint_32 width; /* width of image in pixels (from IHDR) */ - png_uint_32 height; /* height of image in pixels (from IHDR) */ - png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */ - png_size_t rowbytes; /* bytes needed to hold an untransformed row */ - png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */ - png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */ - png_uint_16 num_trans; /* number of transparent palette color (tRNS) */ - png_byte bit_depth; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */ - png_byte color_type; /* see PNG_COLOR_TYPE_ below (from IHDR) */ - /* The following three should have been named *_method not *_type */ - png_byte compression_type; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */ - png_byte filter_type; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */ - png_byte interlace_type; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ - - /* The following are set by png_set_IHDR, called from the application on - * write, but the are never actually used by the write code. - */ - png_byte channels; /* number of data channels per pixel (1, 2, 3, 4) */ - png_byte pixel_depth; /* number of bits per pixel */ - png_byte spare_byte; /* to align the data, and for future use */ - -#ifdef PNG_READ_SUPPORTED - /* This is never set during write */ - png_byte signature[8]; /* magic bytes read by libpng from start of file */ -#endif - - /* The rest of the data is optional. If you are reading, check the - * valid field to see if the information in these are valid. If you - * are writing, set the valid field to those chunks you want written, - * and initialize the appropriate fields below. - */ - -#if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED) - /* png_colorspace only contains 'flags' if neither GAMMA or COLORSPACE are - * defined. When COLORSPACE is switched on all the colorspace-defining - * chunks should be enabled, when GAMMA is switched on all the gamma-defining - * chunks should be enabled. If this is not done it becomes possible to read - * inconsistent PNG files and assign a probably incorrect interpretation to - * the information. (In other words, by carefully choosing which chunks to - * recognize the system configuration can select an interpretation for PNG - * files containing ambiguous data and this will result in inconsistent - * behavior between different libpng builds!) - */ - png_colorspace colorspace; -#endif - -#ifdef PNG_iCCP_SUPPORTED - /* iCCP chunk data. */ - png_charp iccp_name; /* profile name */ - png_bytep iccp_profile; /* International Color Consortium profile data */ - png_uint_32 iccp_proflen; /* ICC profile data length */ -#endif - -#ifdef PNG_TEXT_SUPPORTED - /* The tEXt, and zTXt chunks contain human-readable textual data in - * uncompressed, compressed, and optionally compressed forms, respectively. - * The data in "text" is an array of pointers to uncompressed, - * null-terminated C strings. Each chunk has a keyword that describes the - * textual data contained in that chunk. Keywords are not required to be - * unique, and the text string may be empty. Any number of text chunks may - * be in an image. - */ - int num_text; /* number of comments read or comments to write */ - int max_text; /* current size of text array */ - png_textp text; /* array of comments read or comments to write */ -#endif /* TEXT */ - -#ifdef PNG_tIME_SUPPORTED - /* The tIME chunk holds the last time the displayed image data was - * modified. See the png_time struct for the contents of this struct. - */ - png_time mod_time; -#endif - -#ifdef PNG_sBIT_SUPPORTED - /* The sBIT chunk specifies the number of significant high-order bits - * in the pixel data. Values are in the range [1, bit_depth], and are - * only specified for the channels in the pixel data. The contents of - * the low-order bits is not specified. Data is valid if - * (valid & PNG_INFO_sBIT) is non-zero. - */ - png_color_8 sig_bit; /* significant bits in color channels */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ -defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The tRNS chunk supplies transparency data for paletted images and - * other image types that don't need a full alpha channel. There are - * "num_trans" transparency values for a paletted image, stored in the - * same order as the palette colors, starting from index 0. Values - * for the data are in the range [0, 255], ranging from fully transparent - * to fully opaque, respectively. For non-paletted images, there is a - * single color specified that should be treated as fully transparent. - * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. - */ - png_bytep trans_alpha; /* alpha values for paletted image */ - png_color_16 trans_color; /* transparent color for non-palette image */ -#endif - -#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The bKGD chunk gives the suggested image background color if the - * display program does not have its own background color and the image - * is needs to composited onto a background before display. The colors - * in "background" are normally in the same color space/depth as the - * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. - */ - png_color_16 background; -#endif - -#ifdef PNG_oFFs_SUPPORTED - /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards - * and downwards from the top-left corner of the display, page, or other - * application-specific co-ordinate space. See the PNG_OFFSET_ defines - * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. - */ - png_int_32 x_offset; /* x offset on page */ - png_int_32 y_offset; /* y offset on page */ - png_byte offset_unit_type; /* offset units type */ -#endif - -#ifdef PNG_pHYs_SUPPORTED - /* The pHYs chunk gives the physical pixel density of the image for - * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ - * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. - */ - png_uint_32 x_pixels_per_unit; /* horizontal pixel density */ - png_uint_32 y_pixels_per_unit; /* vertical pixel density */ - png_byte phys_unit_type; /* resolution type (see PNG_RESOLUTION_ below) */ -#endif - -#ifdef PNG_eXIf_SUPPORTED - int num_exif; /* Added at libpng-1.6.31 */ - png_bytep exif; -# ifdef PNG_READ_eXIf_SUPPORTED - png_bytep eXIf_buf; /* Added at libpng-1.6.32 */ -# endif -#endif - -#ifdef PNG_hIST_SUPPORTED - /* The hIST chunk contains the relative frequency or importance of the - * various palette entries, so that a viewer can intelligently select a - * reduced-color palette, if required. Data is an array of "num_palette" - * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) - * is non-zero. - */ - png_uint_16p hist; -#endif - -#ifdef PNG_pCAL_SUPPORTED - /* The pCAL chunk describes a transformation between the stored pixel - * values and original physical data values used to create the image. - * The integer range [0, 2^bit_depth - 1] maps to the floating-point - * range given by [pcal_X0, pcal_X1], and are further transformed by a - * (possibly non-linear) transformation function given by "pcal_type" - * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ - * defines below, and the PNG-Group's PNG extensions document for a - * complete description of the transformations and how they should be - * implemented, and for a description of the ASCII parameter strings. - * Data values are valid if (valid & PNG_INFO_pCAL) non-zero. - */ - png_charp pcal_purpose; /* pCAL chunk description string */ - png_int_32 pcal_X0; /* minimum value */ - png_int_32 pcal_X1; /* maximum value */ - png_charp pcal_units; /* Latin-1 string giving physical units */ - png_charpp pcal_params; /* ASCII strings containing parameter values */ - png_byte pcal_type; /* equation type (see PNG_EQUATION_ below) */ - png_byte pcal_nparams; /* number of parameters given in pcal_params */ -#endif - -/* New members added in libpng-1.0.6 */ - png_uint_32 free_me; /* flags items libpng is responsible for freeing */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED - /* Storage for unknown chunks that the library doesn't recognize. */ - png_unknown_chunkp unknown_chunks; - - /* The type of this field is limited by the type of - * png_struct::user_chunk_cache_max, else overflow can occur. - */ - int unknown_chunks_num; -#endif - -#ifdef PNG_sPLT_SUPPORTED - /* Data on sPLT chunks (there may be more than one). */ - png_sPLT_tp splt_palettes; - int splt_palettes_num; /* Match type returned by png_get API */ -#endif - -#ifdef PNG_sCAL_SUPPORTED - /* The sCAL chunk describes the actual physical dimensions of the - * subject matter of the graphic. The chunk contains a unit specification - * a byte value, and two ASCII strings representing floating-point - * values. The values are width and height corresponsing to one pixel - * in the image. Data values are valid if (valid & PNG_INFO_sCAL) is - * non-zero. - */ - png_byte scal_unit; /* unit of physical scale */ - png_charp scal_s_width; /* string containing height */ - png_charp scal_s_height; /* string containing width */ -#endif - -#ifdef PNG_INFO_IMAGE_SUPPORTED - /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) - non-zero */ - /* Data valid if (valid & PNG_INFO_IDAT) non-zero */ - png_bytepp row_pointers; /* the image bits */ -#endif - -}; -#endif /* PNGINFO_H */ diff --git a/src/png/libpng/pngmem.c b/src/png/libpng/pngmem.c deleted file mode 100644 index ff3ef7e88..000000000 --- a/src/png/libpng/pngmem.c +++ /dev/null @@ -1,284 +0,0 @@ - -/* pngmem.c - stub functions for memory allocation - * - * Last changed in libpng 1.6.26 [October 20, 2016] - * Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all memory allocation. Users who - * need special memory handling are expected to supply replacement - * functions for png_malloc() and png_free(), and to use - * png_create_read_struct_2() and png_create_write_struct_2() to - * identify the replacement functions. - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) -/* Free a png_struct */ -void /* PRIVATE */ -png_destroy_png_struct(png_structrp png_ptr) -{ - if (png_ptr != NULL) - { - /* png_free might call png_error and may certainly call - * png_get_mem_ptr, so fake a temporary png_struct to support this. - */ - png_struct dummy_struct = *png_ptr; - memset(png_ptr, 0, (sizeof *png_ptr)); - png_free(&dummy_struct, png_ptr); - -# ifdef PNG_SETJMP_SUPPORTED - /* We may have a jmp_buf left to deallocate. */ - png_free_jmpbuf(&dummy_struct); -# endif - } -} - -/* Allocate memory. For reasonable files, size should never exceed - * 64K. However, zlib may allocate more than 64K if you don't tell - * it not to. See zconf.h and png.h for more information. zlib does - * need to allocate exactly 64K, so whatever you call here must - * have the ability to do that. - */ -PNG_FUNCTION(png_voidp,PNGAPI -png_calloc,(png_const_structrp png_ptr, png_alloc_size_t size),PNG_ALLOCATED) -{ - png_voidp ret; - - ret = png_malloc(png_ptr, size); - - if (ret != NULL) - memset(ret, 0, size); - - return ret; -} - -/* png_malloc_base, an internal function added at libpng 1.6.0, does the work of - * allocating memory, taking into account limits and PNG_USER_MEM_SUPPORTED. - * Checking and error handling must happen outside this routine; it returns NULL - * if the allocation cannot be done (for any reason.) - */ -PNG_FUNCTION(png_voidp /* PRIVATE */, -png_malloc_base,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED) -{ - /* Moved to png_malloc_base from png_malloc_default in 1.6.0; the DOS - * allocators have also been removed in 1.6.0, so any 16-bit system now has - * to implement a user memory handler. This checks to be sure it isn't - * called with big numbers. - */ -#ifndef PNG_USER_MEM_SUPPORTED - PNG_UNUSED(png_ptr) -#endif - - /* Some compilers complain that this is always true. However, it - * can be false when integer overflow happens. - */ - if (size > 0 && size <= PNG_SIZE_MAX -# ifdef PNG_MAX_MALLOC_64K - && size <= 65536U -# endif - ) - { -#ifdef PNG_USER_MEM_SUPPORTED - if (png_ptr != NULL && png_ptr->malloc_fn != NULL) - return png_ptr->malloc_fn(png_constcast(png_structrp,png_ptr), size); - - else -#endif - return malloc((size_t)size); /* checked for truncation above */ - } - - else - return NULL; -} - -#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\ - defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) -/* This is really here only to work round a spurious warning in GCC 4.6 and 4.7 - * that arises because of the checks in png_realloc_array that are repeated in - * png_malloc_array. - */ -static png_voidp -png_malloc_array_checked(png_const_structrp png_ptr, int nelements, - size_t element_size) -{ - png_alloc_size_t req = (png_alloc_size_t)nelements; /* known to be > 0 */ - - if (req <= PNG_SIZE_MAX/element_size) - return png_malloc_base(png_ptr, req * element_size); - - /* The failure case when the request is too large */ - return NULL; -} - -PNG_FUNCTION(png_voidp /* PRIVATE */, -png_malloc_array,(png_const_structrp png_ptr, int nelements, - size_t element_size),PNG_ALLOCATED) -{ - if (nelements <= 0 || element_size == 0) - png_error(png_ptr, "internal error: array alloc"); - - return png_malloc_array_checked(png_ptr, nelements, element_size); -} - -PNG_FUNCTION(png_voidp /* PRIVATE */, -png_realloc_array,(png_const_structrp png_ptr, png_const_voidp old_array, - int old_elements, int add_elements, size_t element_size),PNG_ALLOCATED) -{ - /* These are internal errors: */ - if (add_elements <= 0 || element_size == 0 || old_elements < 0 || - (old_array == NULL && old_elements > 0)) - png_error(png_ptr, "internal error: array realloc"); - - /* Check for overflow on the elements count (so the caller does not have to - * check.) - */ - if (add_elements <= INT_MAX - old_elements) - { - png_voidp new_array = png_malloc_array_checked(png_ptr, - old_elements+add_elements, element_size); - - if (new_array != NULL) - { - /* Because png_malloc_array worked the size calculations below cannot - * overflow. - */ - if (old_elements > 0) - memcpy(new_array, old_array, element_size*(unsigned)old_elements); - - memset((char*)new_array + element_size*(unsigned)old_elements, 0, - element_size*(unsigned)add_elements); - - return new_array; - } - } - - return NULL; /* error */ -} -#endif /* TEXT || sPLT || STORE_UNKNOWN_CHUNKS */ - -/* Various functions that have different error handling are derived from this. - * png_malloc always exists, but if PNG_USER_MEM_SUPPORTED is defined a separate - * function png_malloc_default is also provided. - */ -PNG_FUNCTION(png_voidp,PNGAPI -png_malloc,(png_const_structrp png_ptr, png_alloc_size_t size),PNG_ALLOCATED) -{ - png_voidp ret; - - if (png_ptr == NULL) - return NULL; - - ret = png_malloc_base(png_ptr, size); - - if (ret == NULL) - png_error(png_ptr, "Out of memory"); /* 'm' means png_malloc */ - - return ret; -} - -#ifdef PNG_USER_MEM_SUPPORTED -PNG_FUNCTION(png_voidp,PNGAPI -png_malloc_default,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED PNG_DEPRECATED) -{ - png_voidp ret; - - if (png_ptr == NULL) - return NULL; - - /* Passing 'NULL' here bypasses the application provided memory handler. */ - ret = png_malloc_base(NULL/*use malloc*/, size); - - if (ret == NULL) - png_error(png_ptr, "Out of Memory"); /* 'M' means png_malloc_default */ - - return ret; -} -#endif /* USER_MEM */ - -/* This function was added at libpng version 1.2.3. The png_malloc_warn() - * function will issue a png_warning and return NULL instead of issuing a - * png_error, if it fails to allocate the requested memory. - */ -PNG_FUNCTION(png_voidp,PNGAPI -png_malloc_warn,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED) -{ - if (png_ptr != NULL) - { - png_voidp ret = png_malloc_base(png_ptr, size); - - if (ret != NULL) - return ret; - - png_warning(png_ptr, "Out of memory"); - } - - return NULL; -} - -/* Free a pointer allocated by png_malloc(). If ptr is NULL, return - * without taking any action. - */ -void PNGAPI -png_free(png_const_structrp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL || ptr == NULL) - return; - -#ifdef PNG_USER_MEM_SUPPORTED - if (png_ptr->free_fn != NULL) - png_ptr->free_fn(png_constcast(png_structrp,png_ptr), ptr); - - else - png_free_default(png_ptr, ptr); -} - -PNG_FUNCTION(void,PNGAPI -png_free_default,(png_const_structrp png_ptr, png_voidp ptr),PNG_DEPRECATED) -{ - if (png_ptr == NULL || ptr == NULL) - return; -#endif /* USER_MEM */ - - free(ptr); -} - -#ifdef PNG_USER_MEM_SUPPORTED -/* This function is called when the application wants to use another method - * of allocating and freeing memory. - */ -void PNGAPI -png_set_mem_fn(png_structrp png_ptr, png_voidp mem_ptr, png_malloc_ptr - malloc_fn, png_free_ptr free_fn) -{ - if (png_ptr != NULL) - { - png_ptr->mem_ptr = mem_ptr; - png_ptr->malloc_fn = malloc_fn; - png_ptr->free_fn = free_fn; - } -} - -/* This function returns a pointer to the mem_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy and png_read_destroy are called. - */ -png_voidp PNGAPI -png_get_mem_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return NULL; - - return png_ptr->mem_ptr; -} -#endif /* USER_MEM */ -#endif /* READ || WRITE */ diff --git a/src/png/libpng/pngpread.c b/src/png/libpng/pngpread.c deleted file mode 100644 index fbe361dc3..000000000 --- a/src/png/libpng/pngpread.c +++ /dev/null @@ -1,1096 +0,0 @@ - -/* pngpread.c - read a png file in push mode - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - -/* Push model modes */ -#define PNG_READ_SIG_MODE 0 -#define PNG_READ_CHUNK_MODE 1 -#define PNG_READ_IDAT_MODE 2 -#define PNG_READ_tEXt_MODE 4 -#define PNG_READ_zTXt_MODE 5 -#define PNG_READ_DONE_MODE 6 -#define PNG_READ_iTXt_MODE 7 -#define PNG_ERROR_MODE 8 - -#define PNG_PUSH_SAVE_BUFFER_IF_FULL \ -if (png_ptr->push_length + 4 > png_ptr->buffer_size) \ - { png_push_save_buffer(png_ptr); return; } -#define PNG_PUSH_SAVE_BUFFER_IF_LT(N) \ -if (png_ptr->buffer_size < N) \ - { png_push_save_buffer(png_ptr); return; } - -void PNGAPI -png_process_data(png_structrp png_ptr, png_inforp info_ptr, - png_bytep buffer, png_size_t buffer_size) -{ - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_push_restore_buffer(png_ptr, buffer, buffer_size); - - while (png_ptr->buffer_size) - { - png_process_some_data(png_ptr, info_ptr); - } -} - -png_size_t PNGAPI -png_process_data_pause(png_structrp png_ptr, int save) -{ - if (png_ptr != NULL) - { - /* It's easiest for the caller if we do the save; then the caller doesn't - * have to supply the same data again: - */ - if (save != 0) - png_push_save_buffer(png_ptr); - else - { - /* This includes any pending saved bytes: */ - png_size_t remaining = png_ptr->buffer_size; - png_ptr->buffer_size = 0; - - /* So subtract the saved buffer size, unless all the data - * is actually 'saved', in which case we just return 0 - */ - if (png_ptr->save_buffer_size < remaining) - return remaining - png_ptr->save_buffer_size; - } - } - - return 0; -} - -png_uint_32 PNGAPI -png_process_data_skip(png_structrp png_ptr) -{ -/* TODO: Deprecate and remove this API. - * Somewhere the implementation of this seems to have been lost, - * or abandoned. It was only to support some internal back-door access - * to png_struct) in libpng-1.4.x. - */ - png_app_warning(png_ptr, -"png_process_data_skip is not implemented in any current version of libpng"); - return 0; -} - -/* What we do with the incoming data depends on what we were previously - * doing before we ran out of data... - */ -void /* PRIVATE */ -png_process_some_data(png_structrp png_ptr, png_inforp info_ptr) -{ - if (png_ptr == NULL) - return; - - switch (png_ptr->process_mode) - { - case PNG_READ_SIG_MODE: - { - png_push_read_sig(png_ptr, info_ptr); - break; - } - - case PNG_READ_CHUNK_MODE: - { - png_push_read_chunk(png_ptr, info_ptr); - break; - } - - case PNG_READ_IDAT_MODE: - { - png_push_read_IDAT(png_ptr); - break; - } - - default: - { - png_ptr->buffer_size = 0; - break; - } - } -} - -/* Read any remaining signature bytes from the stream and compare them with - * the correct PNG signature. It is possible that this routine is called - * with bytes already read from the signature, either because they have been - * checked by the calling application, or because of multiple calls to this - * routine. - */ -void /* PRIVATE */ -png_push_read_sig(png_structrp png_ptr, png_inforp info_ptr) -{ - png_size_t num_checked = png_ptr->sig_bytes, /* SAFE, does not exceed 8 */ - num_to_check = 8 - num_checked; - - if (png_ptr->buffer_size < num_to_check) - { - num_to_check = png_ptr->buffer_size; - } - - png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]), - num_to_check); - png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check); - - if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) - { - if (num_checked < 4 && - png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) - png_error(png_ptr, "Not a PNG file"); - - else - png_error(png_ptr, "PNG file corrupted by ASCII conversion"); - } - else - { - if (png_ptr->sig_bytes >= 8) - { - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - } - } -} - -void /* PRIVATE */ -png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) -{ - png_uint_32 chunk_name; -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int keep; /* unknown handling method */ -#endif - - /* First we make sure we have enough data for the 4-byte chunk name - * and the 4-byte chunk length before proceeding with decoding the - * chunk data. To fully decode each of these chunks, we also make - * sure we have enough data in the buffer for the 4-byte CRC at the - * end of every chunk (except IDAT, which is handled separately). - */ - if ((png_ptr->mode & PNG_HAVE_CHUNK_HEADER) == 0) - { - png_byte chunk_length[4]; - png_byte chunk_tag[4]; - - PNG_PUSH_SAVE_BUFFER_IF_LT(8) - png_push_fill_buffer(png_ptr, chunk_length, 4); - png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); - png_reset_crc(png_ptr); - png_crc_read(png_ptr, chunk_tag, 4); - png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); - png_check_chunk_name(png_ptr, png_ptr->chunk_name); - png_check_chunk_length(png_ptr, png_ptr->push_length); - png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; - } - - chunk_name = png_ptr->chunk_name; - - if (chunk_name == png_IDAT) - { - if ((png_ptr->mode & PNG_AFTER_IDAT) != 0) - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; - - /* If we reach an IDAT chunk, this means we have read all of the - * header chunks, and we can start reading the image (or if this - * is called after the image has been read - we have an error). - */ - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_error(png_ptr, "Missing IHDR before IDAT"); - - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - (png_ptr->mode & PNG_HAVE_PLTE) == 0) - png_error(png_ptr, "Missing PLTE before IDAT"); - - png_ptr->process_mode = PNG_READ_IDAT_MODE; - - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - if ((png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT) == 0) - if (png_ptr->push_length == 0) - return; - - png_ptr->mode |= PNG_HAVE_IDAT; - - if ((png_ptr->mode & PNG_AFTER_IDAT) != 0) - png_benign_error(png_ptr, "Too many IDATs found"); - } - - if (chunk_name == png_IHDR) - { - if (png_ptr->push_length != 13) - png_error(png_ptr, "Invalid IHDR length"); - - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); - } - - else if (chunk_name == png_IEND) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); - - png_ptr->process_mode = PNG_READ_DONE_MODE; - png_push_have_end(png_ptr, info_ptr); - } - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length, keep); - - if (chunk_name == png_PLTE) - png_ptr->mode |= PNG_HAVE_PLTE; - } -#endif - - else if (chunk_name == png_PLTE) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length); - } - - else if (chunk_name == png_IDAT) - { - png_ptr->idat_size = png_ptr->push_length; - png_ptr->process_mode = PNG_READ_IDAT_MODE; - png_push_have_info(png_ptr, info_ptr); - png_ptr->zstream.avail_out = - (uInt) PNG_ROWBYTES(png_ptr->pixel_depth, - png_ptr->iwidth) + 1; - png_ptr->zstream.next_out = png_ptr->row_buf; - return; - } - -#ifdef PNG_READ_gAMA_SUPPORTED - else if (png_ptr->chunk_name == png_gAMA) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sBIT_SUPPORTED - else if (png_ptr->chunk_name == png_sBIT) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_cHRM_SUPPORTED - else if (png_ptr->chunk_name == png_cHRM) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sRGB_SUPPORTED - else if (chunk_name == png_sRGB) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_iCCP_SUPPORTED - else if (png_ptr->chunk_name == png_iCCP) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sPLT_SUPPORTED - else if (chunk_name == png_sPLT) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_tRNS_SUPPORTED - else if (chunk_name == png_tRNS) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_bKGD_SUPPORTED - else if (chunk_name == png_bKGD) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_hIST_SUPPORTED - else if (chunk_name == png_hIST) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_pHYs_SUPPORTED - else if (chunk_name == png_pHYs) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_oFFs_SUPPORTED - else if (chunk_name == png_oFFs) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length); - } -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED - else if (chunk_name == png_pCAL) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sCAL_SUPPORTED - else if (chunk_name == png_sCAL) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_tIME_SUPPORTED - else if (chunk_name == png_tIME) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_tEXt_SUPPORTED - else if (chunk_name == png_tEXt) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_zTXt_SUPPORTED - else if (chunk_name == png_zTXt) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_iTXt_SUPPORTED - else if (chunk_name == png_iTXt) - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length); - } -#endif - - else - { - PNG_PUSH_SAVE_BUFFER_IF_FULL - png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length, - PNG_HANDLE_CHUNK_AS_DEFAULT); - } - - png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; -} - -void PNGCBAPI -png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length) -{ - png_bytep ptr; - - if (png_ptr == NULL) - return; - - ptr = buffer; - if (png_ptr->save_buffer_size != 0) - { - png_size_t save_size; - - if (length < png_ptr->save_buffer_size) - save_size = length; - - else - save_size = png_ptr->save_buffer_size; - - memcpy(ptr, png_ptr->save_buffer_ptr, save_size); - length -= save_size; - ptr += save_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - if (length != 0 && png_ptr->current_buffer_size != 0) - { - png_size_t save_size; - - if (length < png_ptr->current_buffer_size) - save_size = length; - - else - save_size = png_ptr->current_buffer_size; - - memcpy(ptr, png_ptr->current_buffer_ptr, save_size); - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } -} - -void /* PRIVATE */ -png_push_save_buffer(png_structrp png_ptr) -{ - if (png_ptr->save_buffer_size != 0) - { - if (png_ptr->save_buffer_ptr != png_ptr->save_buffer) - { - png_size_t i, istop; - png_bytep sp; - png_bytep dp; - - istop = png_ptr->save_buffer_size; - for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer; - i < istop; i++, sp++, dp++) - { - *dp = *sp; - } - } - } - if (png_ptr->save_buffer_size + png_ptr->current_buffer_size > - png_ptr->save_buffer_max) - { - png_size_t new_max; - png_bytep old_buffer; - - if (png_ptr->save_buffer_size > PNG_SIZE_MAX - - (png_ptr->current_buffer_size + 256)) - { - png_error(png_ptr, "Potential overflow of save_buffer"); - } - - new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256; - old_buffer = png_ptr->save_buffer; - png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr, - (png_size_t)new_max); - - if (png_ptr->save_buffer == NULL) - { - png_free(png_ptr, old_buffer); - png_error(png_ptr, "Insufficient memory for save_buffer"); - } - - if (old_buffer) - memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); - else if (png_ptr->save_buffer_size) - png_error(png_ptr, "save_buffer error"); - png_free(png_ptr, old_buffer); - png_ptr->save_buffer_max = new_max; - } - if (png_ptr->current_buffer_size) - { - memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, - png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); - png_ptr->save_buffer_size += png_ptr->current_buffer_size; - png_ptr->current_buffer_size = 0; - } - png_ptr->save_buffer_ptr = png_ptr->save_buffer; - png_ptr->buffer_size = 0; -} - -void /* PRIVATE */ -png_push_restore_buffer(png_structrp png_ptr, png_bytep buffer, - png_size_t buffer_length) -{ - png_ptr->current_buffer = buffer; - png_ptr->current_buffer_size = buffer_length; - png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size; - png_ptr->current_buffer_ptr = png_ptr->current_buffer; -} - -void /* PRIVATE */ -png_push_read_IDAT(png_structrp png_ptr) -{ - if ((png_ptr->mode & PNG_HAVE_CHUNK_HEADER) == 0) - { - png_byte chunk_length[4]; - png_byte chunk_tag[4]; - - /* TODO: this code can be commoned up with the same code in push_read */ - PNG_PUSH_SAVE_BUFFER_IF_LT(8) - png_push_fill_buffer(png_ptr, chunk_length, 4); - png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); - png_reset_crc(png_ptr); - png_crc_read(png_ptr, chunk_tag, 4); - png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); - png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; - - if (png_ptr->chunk_name != png_IDAT) - { - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) - png_error(png_ptr, "Not enough compressed data"); - - return; - } - - png_ptr->idat_size = png_ptr->push_length; - } - - if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0) - { - png_size_t save_size = png_ptr->save_buffer_size; - png_uint_32 idat_size = png_ptr->idat_size; - - /* We want the smaller of 'idat_size' and 'current_buffer_size', but they - * are of different types and we don't know which variable has the fewest - * bits. Carefully select the smaller and cast it to the type of the - * larger - this cannot overflow. Do not cast in the following test - it - * will break on either 16-bit or 64-bit platforms. - */ - if (idat_size < save_size) - save_size = (png_size_t)idat_size; - - else - idat_size = (png_uint_32)save_size; - - png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_ptr->idat_size -= idat_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - - if (png_ptr->idat_size != 0 && png_ptr->current_buffer_size != 0) - { - png_size_t save_size = png_ptr->current_buffer_size; - png_uint_32 idat_size = png_ptr->idat_size; - - /* We want the smaller of 'idat_size' and 'current_buffer_size', but they - * are of different types and we don't know which variable has the fewest - * bits. Carefully select the smaller and cast it to the type of the - * larger - this cannot overflow. - */ - if (idat_size < save_size) - save_size = (png_size_t)idat_size; - - else - idat_size = (png_uint_32)save_size; - - png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_ptr->idat_size -= idat_size; - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } - - if (png_ptr->idat_size == 0) - { - PNG_PUSH_SAVE_BUFFER_IF_LT(4) - png_crc_finish(png_ptr, 0); - png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->zowner = 0; - } -} - -void /* PRIVATE */ -png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer, - png_size_t buffer_length) -{ - /* The caller checks for a non-zero buffer length. */ - if (!(buffer_length > 0) || buffer == NULL) - png_error(png_ptr, "No IDAT data (internal error)"); - - /* This routine must process all the data it has been given - * before returning, calling the row callback as required to - * handle the uncompressed results. - */ - png_ptr->zstream.next_in = buffer; - /* TODO: WARNING: TRUNCATION ERROR: DANGER WILL ROBINSON: */ - png_ptr->zstream.avail_in = (uInt)buffer_length; - - /* Keep going until the decompressed data is all processed - * or the stream marked as finished. - */ - while (png_ptr->zstream.avail_in > 0 && - (png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) - { - int ret; - - /* We have data for zlib, but we must check that zlib - * has someplace to put the results. It doesn't matter - * if we don't expect any results -- it may be the input - * data is just the LZ end code. - */ - if (!(png_ptr->zstream.avail_out > 0)) - { - /* TODO: WARNING: TRUNCATION ERROR: DANGER WILL ROBINSON: */ - png_ptr->zstream.avail_out = (uInt)(PNG_ROWBYTES(png_ptr->pixel_depth, - png_ptr->iwidth) + 1); - - png_ptr->zstream.next_out = png_ptr->row_buf; - } - - /* Using Z_SYNC_FLUSH here means that an unterminated - * LZ stream (a stream with a missing end code) can still - * be handled, otherwise (Z_NO_FLUSH) a future zlib - * implementation might defer output and therefore - * change the current behavior (see comments in inflate.c - * for why this doesn't happen at present with zlib 1.2.5). - */ - ret = PNG_INFLATE(png_ptr, Z_SYNC_FLUSH); - - /* Check for any failure before proceeding. */ - if (ret != Z_OK && ret != Z_STREAM_END) - { - /* Terminate the decompression. */ - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - png_ptr->zowner = 0; - - /* This may be a truncated stream (missing or - * damaged end code). Treat that as a warning. - */ - if (png_ptr->row_number >= png_ptr->num_rows || - png_ptr->pass > 6) - png_warning(png_ptr, "Truncated compressed data in IDAT"); - - else - { - if (ret == Z_DATA_ERROR) - png_benign_error(png_ptr, "IDAT: ADLER32 checksum mismatch"); - else - png_error(png_ptr, "Decompression error in IDAT"); - } - - /* Skip the check on unprocessed input */ - return; - } - - /* Did inflate output any data? */ - if (png_ptr->zstream.next_out != png_ptr->row_buf) - { - /* Is this unexpected data after the last row? - * If it is, artificially terminate the LZ output - * here. - */ - if (png_ptr->row_number >= png_ptr->num_rows || - png_ptr->pass > 6) - { - /* Extra data. */ - png_warning(png_ptr, "Extra compressed data in IDAT"); - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - png_ptr->zowner = 0; - - /* Do no more processing; skip the unprocessed - * input check below. - */ - return; - } - - /* Do we have a complete row? */ - if (png_ptr->zstream.avail_out == 0) - png_push_process_row(png_ptr); - } - - /* And check for the end of the stream. */ - if (ret == Z_STREAM_END) - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - } - - /* All the data should have been processed, if anything - * is left at this point we have bytes of IDAT data - * after the zlib end code. - */ - if (png_ptr->zstream.avail_in > 0) - png_warning(png_ptr, "Extra compression data in IDAT"); -} - -void /* PRIVATE */ -png_push_process_row(png_structrp png_ptr) -{ - /* 1.5.6: row_info moved out of png_struct to a local here. */ - png_row_info row_info; - - row_info.width = png_ptr->iwidth; /* NOTE: width of current interlaced row */ - row_info.color_type = png_ptr->color_type; - row_info.bit_depth = png_ptr->bit_depth; - row_info.channels = png_ptr->channels; - row_info.pixel_depth = png_ptr->pixel_depth; - row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width); - - if (png_ptr->row_buf[0] > PNG_FILTER_VALUE_NONE) - { - if (png_ptr->row_buf[0] < PNG_FILTER_VALUE_LAST) - png_read_filter_row(png_ptr, &row_info, png_ptr->row_buf + 1, - png_ptr->prev_row + 1, png_ptr->row_buf[0]); - else - png_error(png_ptr, "bad adaptive filter value"); - } - - /* libpng 1.5.6: the following line was copying png_ptr->rowbytes before - * 1.5.6, while the buffer really is this big in current versions of libpng - * it may not be in the future, so this was changed just to copy the - * interlaced row count: - */ - memcpy(png_ptr->prev_row, png_ptr->row_buf, row_info.rowbytes + 1); - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - if (png_ptr->transformations != 0) - png_do_read_transformations(png_ptr, &row_info); -#endif - - /* The transformed pixel depth should match the depth now in row_info. */ - if (png_ptr->transformed_pixel_depth == 0) - { - png_ptr->transformed_pixel_depth = row_info.pixel_depth; - if (row_info.pixel_depth > png_ptr->maximum_pixel_depth) - png_error(png_ptr, "progressive row overflow"); - } - - else if (png_ptr->transformed_pixel_depth != row_info.pixel_depth) - png_error(png_ptr, "internal progressive row size calculation error"); - - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Expand interlaced rows to full size */ - if (png_ptr->interlaced != 0 && - (png_ptr->transformations & PNG_INTERLACE) != 0) - { - if (png_ptr->pass < 6) - png_do_read_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass, - png_ptr->transformations); - - switch (png_ptr->pass) - { - case 0: - { - int i; - for (i = 0; i < 8 && png_ptr->pass == 0; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */ - } - - if (png_ptr->pass == 2) /* Pass 1 might be empty */ - { - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - if (png_ptr->pass == 4 && png_ptr->height <= 4) - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - if (png_ptr->pass == 6 && png_ptr->height <= 4) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - break; - } - - case 1: - { - int i; - for (i = 0; i < 8 && png_ptr->pass == 1; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 2) /* Skip top 4 generated rows */ - { - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - break; - } - - case 2: - { - int i; - - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 4) /* Pass 3 might be empty */ - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - break; - } - - case 3: - { - int i; - - for (i = 0; i < 4 && png_ptr->pass == 3; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 4) /* Skip top two generated rows */ - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - break; - } - - case 4: - { - int i; - - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 6) /* Pass 5 might be empty */ - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - break; - } - - case 5: - { - int i; - - for (i = 0; i < 2 && png_ptr->pass == 5; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 6) /* Skip top generated row */ - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - break; - } - - default: - case 6: - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - - if (png_ptr->pass != 6) - break; - - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - } - else -#endif - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } -} - -void /* PRIVATE */ -png_read_push_finish_row(png_structrp png_ptr) -{ -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; - - /* Height of interlace block. This is not currently used - if you need - * it, uncomment it here and in png.h - static PNG_CONST png_byte png_pass_height[] = {8, 8, 4, 4, 2, 2, 1}; - */ -#endif - - png_ptr->row_number++; - if (png_ptr->row_number < png_ptr->num_rows) - return; - -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (png_ptr->interlaced != 0) - { - png_ptr->row_number = 0; - memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - do - { - png_ptr->pass++; - if ((png_ptr->pass == 1 && png_ptr->width < 5) || - (png_ptr->pass == 3 && png_ptr->width < 3) || - (png_ptr->pass == 5 && png_ptr->width < 2)) - png_ptr->pass++; - - if (png_ptr->pass > 7) - png_ptr->pass--; - - if (png_ptr->pass >= 7) - break; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - if ((png_ptr->transformations & PNG_INTERLACE) != 0) - break; - - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - - } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0); - } -#endif /* READ_INTERLACING */ -} - -void /* PRIVATE */ -png_push_have_info(png_structrp png_ptr, png_inforp info_ptr) -{ - if (png_ptr->info_fn != NULL) - (*(png_ptr->info_fn))(png_ptr, info_ptr); -} - -void /* PRIVATE */ -png_push_have_end(png_structrp png_ptr, png_inforp info_ptr) -{ - if (png_ptr->end_fn != NULL) - (*(png_ptr->end_fn))(png_ptr, info_ptr); -} - -void /* PRIVATE */ -png_push_have_row(png_structrp png_ptr, png_bytep row) -{ - if (png_ptr->row_fn != NULL) - (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number, - (int)png_ptr->pass); -} - -#ifdef PNG_READ_INTERLACING_SUPPORTED -void PNGAPI -png_progressive_combine_row(png_const_structrp png_ptr, png_bytep old_row, - png_const_bytep new_row) -{ - if (png_ptr == NULL) - return; - - /* new_row is a flag here - if it is NULL then the app callback was called - * from an empty row (see the calls to png_struct::row_fn below), otherwise - * it must be png_ptr->row_buf+1 - */ - if (new_row != NULL) - png_combine_row(png_ptr, old_row, 1/*blocky display*/); -} -#endif /* READ_INTERLACING */ - -void PNGAPI -png_set_progressive_read_fn(png_structrp png_ptr, png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->info_fn = info_fn; - png_ptr->row_fn = row_fn; - png_ptr->end_fn = end_fn; - - png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); -} - -png_voidp PNGAPI -png_get_progressive_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return (NULL); - - return png_ptr->io_ptr; -} -#endif /* PROGRESSIVE_READ */ diff --git a/src/png/libpng/pngpriv.h b/src/png/libpng/pngpriv.h deleted file mode 100644 index 1f2e90f2b..000000000 --- a/src/png/libpng/pngpriv.h +++ /dev/null @@ -1,2120 +0,0 @@ - -/* pngpriv.h - private declarations for use inside libpng - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* The symbols declared in this file (including the functions declared - * as extern) are PRIVATE. They are not part of the libpng public - * interface, and are not recommended for use by regular applications. - * Some of them may become public in the future; others may stay private, - * change in an incompatible way, or even disappear. - * Although the libpng users are not forbidden to include this header, - * they should be well aware of the issues that may arise from doing so. - */ - -#ifndef PNGPRIV_H -#define PNGPRIV_H - -/* Feature Test Macros. The following are defined here to ensure that correctly - * implemented libraries reveal the APIs libpng needs to build and hide those - * that are not needed and potentially damaging to the compilation. - * - * Feature Test Macros must be defined before any system header is included (see - * POSIX 1003.1 2.8.2 "POSIX Symbols." - * - * These macros only have an effect if the operating system supports either - * POSIX 1003.1 or C99, or both. On other operating systems (particularly - * Windows/Visual Studio) there is no effect; the OS specific tests below are - * still required (as of 2011-05-02.) - */ -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */ -#endif - -#ifndef PNG_VERSION_INFO_ONLY -/* Standard library headers not required by png.h: */ -# include -# include -#endif - -#define PNGLIB_BUILD /*libpng is being built, not used*/ - -/* If HAVE_CONFIG_H is defined during the build then the build system must - * provide an appropriate "config.h" file on the include path. The header file - * must provide definitions as required below (search for "HAVE_CONFIG_H"); - * see configure.ac for more details of the requirements. The macro - * "PNG_NO_CONFIG_H" is provided for maintainers to test for dependencies on - * 'configure'; define this macro to prevent the configure build including the - * configure generated config.h. Libpng is expected to compile without *any* - * special build system support on a reasonably ANSI-C compliant system. - */ -#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) -# include - - /* Pick up the definition of 'restrict' from config.h if it was read: */ -# define PNG_RESTRICT restrict -#endif - -/* To support symbol prefixing it is necessary to know *before* including png.h - * whether the fixed point (and maybe other) APIs are exported, because if they - * are not internal definitions may be required. This is handled below just - * before png.h is included, but load the configuration now if it is available. - */ -#ifndef PNGLCONF_H -# include "pnglibconf.h" -#endif - -/* Local renames may change non-exported API functions from png.h */ -#if defined(PNG_PREFIX) && !defined(PNGPREFIX_H) -# include "pngprefix.h" -#endif - -#ifdef PNG_USER_CONFIG -# include "pngusr.h" - /* These should have been defined in pngusr.h */ -# ifndef PNG_USER_PRIVATEBUILD -# define PNG_USER_PRIVATEBUILD "Custom libpng build" -# endif -# ifndef PNG_USER_DLLFNAME_POSTFIX -# define PNG_USER_DLLFNAME_POSTFIX "Cb" -# endif -#endif - -/* Compile time options. - * ===================== - * In a multi-arch build the compiler may compile the code several times for the - * same object module, producing different binaries for different architectures. - * When this happens configure-time setting of the target host options cannot be - * done and this interferes with the handling of the ARM NEON optimizations, and - * possibly other similar optimizations. Put additional tests here; in general - * this is needed when the same option can be changed at both compile time and - * run time depending on the target OS (i.e. iOS vs Android.) - * - * NOTE: symbol prefixing does not pass $(CFLAGS) to the preprocessor, because - * this is not possible with certain compilers (Oracle SUN OS CC), as a result - * it is necessary to ensure that all extern functions that *might* be used - * regardless of $(CFLAGS) get declared in this file. The test on __ARM_NEON__ - * below is one example of this behavior because it is controlled by the - * presence or not of -mfpu=neon on the GCC command line, it is possible to do - * this in $(CC), e.g. "CC=gcc -mfpu=neon", but people who build libpng rarely - * do this. - */ -#ifndef PNG_ARM_NEON_OPT - /* ARM NEON optimizations are being controlled by the compiler settings, - * typically the target FPU. If the FPU has been set to NEON (-mfpu=neon - * with GCC) then the compiler will define __ARM_NEON__ and we can rely - * unconditionally on NEON instructions not crashing, otherwise we must - * disable use of NEON instructions. - * - * NOTE: at present these optimizations depend on 'ALIGNED_MEMORY', so they - * can only be turned on automatically if that is supported too. If - * PNG_ARM_NEON_OPT is set in CPPFLAGS (to >0) then arm/arm_init.c will fail - * to compile with an appropriate #error if ALIGNED_MEMORY has been turned - * off. - * - * Note that gcc-4.9 defines __ARM_NEON instead of the deprecated - * __ARM_NEON__, so we check both variants. - * - * To disable ARM_NEON optimizations entirely, and skip compiling the - * associated assembler code, pass --enable-arm-neon=no to configure - * or put -DPNG_ARM_NEON_OPT=0 in CPPFLAGS. - */ -# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \ - defined(PNG_ALIGNED_MEMORY_SUPPORTED) -# define PNG_ARM_NEON_OPT 2 -# else -# define PNG_ARM_NEON_OPT 0 -# endif -#endif - -#if PNG_ARM_NEON_OPT > 0 - /* NEON optimizations are to be at least considered by libpng, so enable the - * callbacks to do this. - */ -# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon - - /* By default the 'intrinsics' code in arm/filter_neon_intrinsics.c is used - * if possible - if __ARM_NEON__ is set and the compiler version is not known - * to be broken. This is controlled by PNG_ARM_NEON_IMPLEMENTATION which can - * be: - * - * 1 The intrinsics code (the default with __ARM_NEON__) - * 2 The hand coded assembler (the default without __ARM_NEON__) - * - * It is possible to set PNG_ARM_NEON_IMPLEMENTATION in CPPFLAGS, however - * this is *NOT* supported and may cease to work even after a minor revision - * to libpng. It *is* valid to do this for testing purposes, e.g. speed - * testing or a new compiler, but the results should be communicated to the - * libpng implementation list for incorporation in the next minor release. - */ -# ifndef PNG_ARM_NEON_IMPLEMENTATION -# if defined(__ARM_NEON__) || defined(__ARM_NEON) -# if defined(__clang__) - /* At present it is unknown by the libpng developers which versions - * of clang support the intrinsics, however some or perhaps all - * versions do not work with the assembler so this may be - * irrelevant, so just use the default (do nothing here.) - */ -# elif defined(__GNUC__) - /* GCC 4.5.4 NEON support is known to be broken. 4.6.3 is known to - * work, so if this *is* GCC, or G++, look for a version >4.5 - */ -# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) -# define PNG_ARM_NEON_IMPLEMENTATION 2 -# endif /* no GNUC support */ -# endif /* __GNUC__ */ -# else /* !defined __ARM_NEON__ */ - /* The 'intrinsics' code simply won't compile without this -mfpu=neon: - */ -# define PNG_ARM_NEON_IMPLEMENTATION 2 -# endif /* __ARM_NEON__ */ -# endif /* !PNG_ARM_NEON_IMPLEMENTATION */ - -# ifndef PNG_ARM_NEON_IMPLEMENTATION - /* Use the intrinsics code by default. */ -# define PNG_ARM_NEON_IMPLEMENTATION 1 -# endif -#endif /* PNG_ARM_NEON_OPT > 0 */ - -#ifndef PNG_MIPS_MSA_OPT -# if defined(__mips_msa) && (__mips_isa_rev >= 5) && defined(PNG_ALIGNED_MEMORY_SUPPORTED) -# define PNG_MIPS_MSA_OPT 2 -# else -# define PNG_MIPS_MSA_OPT 0 -# endif -#endif - -#ifndef PNG_POWERPC_VSX_OPT -# if defined(__PPC64__) && defined(__ALTIVEC__) && defined(__VSX__) -# define PNG_POWERPC_VSX_OPT 2 -# else -# define PNG_POWERPC_VSX_OPT 0 -# endif -#endif - -#ifndef PNG_INTEL_SSE_OPT -# ifdef PNG_INTEL_SSE - /* Only check for SSE if the build configuration has been modified to - * enable SSE optimizations. This means that these optimizations will - * be off by default. See contrib/intel for more details. - */ -# if defined(__SSE4_1__) || defined(__AVX__) || defined(__SSSE3__) || \ - defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \ - (defined(_M_IX86_FP) && _M_IX86_FP >= 2) -# define PNG_INTEL_SSE_OPT 1 -# endif -# endif -#endif - -#if PNG_INTEL_SSE_OPT > 0 -# ifndef PNG_INTEL_SSE_IMPLEMENTATION -# if defined(__SSE4_1__) || defined(__AVX__) - /* We are not actually using AVX, but checking for AVX is the best - way we can detect SSE4.1 and SSSE3 on MSVC. - */ -# define PNG_INTEL_SSE_IMPLEMENTATION 3 -# elif defined(__SSSE3__) -# define PNG_INTEL_SSE_IMPLEMENTATION 2 -# elif defined(__SSE2__) || defined(_M_X64) || defined(_M_AMD64) || \ - (defined(_M_IX86_FP) && _M_IX86_FP >= 2) -# define PNG_INTEL_SSE_IMPLEMENTATION 1 -# else -# define PNG_INTEL_SSE_IMPLEMENTATION 0 -# endif -# endif - -# if PNG_INTEL_SSE_IMPLEMENTATION > 0 -# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_sse2 -# endif -#endif - -#if PNG_MIPS_MSA_OPT > 0 -# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_msa -# ifndef PNG_MIPS_MSA_IMPLEMENTATION -# if defined(__mips_msa) -# if defined(__clang__) -# elif defined(__GNUC__) -# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) -# define PNG_MIPS_MSA_IMPLEMENTATION 2 -# endif /* no GNUC support */ -# endif /* __GNUC__ */ -# else /* !defined __mips_msa */ -# define PNG_MIPS_MSA_IMPLEMENTATION 2 -# endif /* __mips_msa */ -# endif /* !PNG_MIPS_MSA_IMPLEMENTATION */ - -# ifndef PNG_MIPS_MSA_IMPLEMENTATION -# define PNG_MIPS_MSA_IMPLEMENTATION 1 -# endif -#endif /* PNG_MIPS_MSA_OPT > 0 */ - -#if PNG_POWERPC_VSX_OPT > 0 -# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_vsx -# define PNG_POWERPC_VSX_IMPLEMENTATION 1 -#endif - - -/* Is this a build of a DLL where compilation of the object modules requires - * different preprocessor settings to those required for a simple library? If - * so PNG_BUILD_DLL must be set. - * - * If libpng is used inside a DLL but that DLL does not export the libpng APIs - * PNG_BUILD_DLL must not be set. To avoid the code below kicking in build a - * static library of libpng then link the DLL against that. - */ -#ifndef PNG_BUILD_DLL -# ifdef DLL_EXPORT - /* This is set by libtool when files are compiled for a DLL; libtool - * always compiles twice, even on systems where it isn't necessary. Set - * PNG_BUILD_DLL in case it is necessary: - */ -# define PNG_BUILD_DLL -# else -# ifdef _WINDLL - /* This is set by the Microsoft Visual Studio IDE in projects that - * build a DLL. It can't easily be removed from those projects (it - * isn't visible in the Visual Studio UI) so it is a fairly reliable - * indication that PNG_IMPEXP needs to be set to the DLL export - * attributes. - */ -# define PNG_BUILD_DLL -# else -# ifdef __DLL__ - /* This is set by the Borland C system when compiling for a DLL - * (as above.) - */ -# define PNG_BUILD_DLL -# else - /* Add additional compiler cases here. */ -# endif -# endif -# endif -#endif /* Setting PNG_BUILD_DLL if required */ - -/* See pngconf.h for more details: the builder of the library may set this on - * the command line to the right thing for the specific compilation system or it - * may be automagically set above (at present we know of no system where it does - * need to be set on the command line.) - * - * PNG_IMPEXP must be set here when building the library to prevent pngconf.h - * setting it to the "import" setting for a DLL build. - */ -#ifndef PNG_IMPEXP -# ifdef PNG_BUILD_DLL -# define PNG_IMPEXP PNG_DLL_EXPORT -# else - /* Not building a DLL, or the DLL doesn't require specific export - * definitions. - */ -# define PNG_IMPEXP -# endif -#endif - -/* No warnings for private or deprecated functions in the build: */ -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE -#endif - -/* Symbol preprocessing support. - * - * To enable listing global, but internal, symbols the following macros should - * always be used to declare an extern data or function object in this file. - */ -#ifndef PNG_INTERNAL_DATA -# define PNG_INTERNAL_DATA(type, name, array) PNG_LINKAGE_DATA type name array -#endif - -#ifndef PNG_INTERNAL_FUNCTION -# define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\ - PNG_LINKAGE_FUNCTION PNG_FUNCTION(type, name, args, PNG_EMPTY attributes) -#endif - -#ifndef PNG_INTERNAL_CALLBACK -# define PNG_INTERNAL_CALLBACK(type, name, args, attributes)\ - PNG_LINKAGE_CALLBACK PNG_FUNCTION(type, (PNGCBAPI name), args,\ - PNG_EMPTY attributes) -#endif - -/* If floating or fixed point APIs are disabled they may still be compiled - * internally. To handle this make sure they are declared as the appropriate - * internal extern function (otherwise the symbol prefixing stuff won't work and - * the functions will be used without definitions.) - * - * NOTE: although all the API functions are declared here they are not all - * actually built! Because the declarations are still made it is necessary to - * fake out types that they depend on. - */ -#ifndef PNG_FP_EXPORT -# ifndef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FP_EXPORT(ordinal, type, name, args)\ - PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); -# ifndef PNG_VERSION_INFO_ONLY - typedef struct png_incomplete png_double; - typedef png_double* png_doublep; - typedef const png_double* png_const_doublep; - typedef png_double** png_doublepp; -# endif -# endif -#endif -#ifndef PNG_FIXED_EXPORT -# ifndef PNG_FIXED_POINT_SUPPORTED -# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ - PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); -# endif -#endif - -#include "png.h" - -/* pngconf.h does not set PNG_DLL_EXPORT unless it is required, so: */ -#ifndef PNG_DLL_EXPORT -# define PNG_DLL_EXPORT -#endif - -/* This is a global switch to set the compilation for an installed system - * (a release build). It can be set for testing debug builds to ensure that - * they will compile when the build type is switched to RC or STABLE, the - * default is just to use PNG_LIBPNG_BUILD_BASE_TYPE. Set this in CPPFLAGS - * with either: - * - * -DPNG_RELEASE_BUILD Turns on the release compile path - * -DPNG_RELEASE_BUILD=0 Turns it off - * or in your pngusr.h with - * #define PNG_RELEASE_BUILD=1 Turns on the release compile path - * #define PNG_RELEASE_BUILD=0 Turns it off - */ -#ifndef PNG_RELEASE_BUILD -# define PNG_RELEASE_BUILD (PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC) -#endif - -/* SECURITY and SAFETY: - * - * libpng is built with support for internal limits on image dimensions and - * memory usage. These are documented in scripts/pnglibconf.dfa of the - * source and recorded in the machine generated header file pnglibconf.h. - */ - -/* If you are running on a machine where you cannot allocate more - * than 64K of memory at once, uncomment this. While libpng will not - * normally need that much memory in a chunk (unless you load up a very - * large file), zlib needs to know how big of a chunk it can use, and - * libpng thus makes sure to check any memory allocation to verify it - * will fit into memory. - * - * zlib provides 'MAXSEG_64K' which, if defined, indicates the - * same limit and pngconf.h (already included) sets the limit - * if certain operating systems are detected. - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) -# define PNG_MAX_MALLOC_64K -#endif - -#ifndef PNG_UNUSED -/* Unused formal parameter warnings are silenced using the following macro - * which is expected to have no bad effects on performance (optimizing - * compilers will probably remove it entirely). Note that if you replace - * it with something other than whitespace, you must include the terminating - * semicolon. - */ -# define PNG_UNUSED(param) (void)param; -#endif - -/* Just a little check that someone hasn't tried to define something - * contradictory. - */ -#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) -# undef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 65536L -#endif - -/* If warnings or errors are turned off the code is disabled or redirected here. - * From 1.5.4 functions have been added to allow very limited formatting of - * error and warning messages - this code will also be disabled here. - */ -#ifdef PNG_WARNINGS_SUPPORTED -# define PNG_WARNING_PARAMETERS(p) png_warning_parameters p; -#else -# define png_warning_parameter(p,number,string) ((void)0) -# define png_warning_parameter_unsigned(p,number,format,value) ((void)0) -# define png_warning_parameter_signed(p,number,format,value) ((void)0) -# define png_formatted_warning(pp,p,message) ((void)(pp)) -# define PNG_WARNING_PARAMETERS(p) -#endif -#ifndef PNG_ERROR_TEXT_SUPPORTED -# define png_fixed_error(s1,s2) png_err(s1) -#endif - -/* Some fixed point APIs are still required even if not exported because - * they get used by the corresponding floating point APIs. This magic - * deals with this: - */ -#ifdef PNG_FIXED_POINT_SUPPORTED -# define PNGFAPI PNGAPI -#else -# define PNGFAPI /* PRIVATE */ -#endif - -#ifndef PNG_VERSION_INFO_ONLY -/* Other defines specific to compilers can go here. Try to keep - * them inside an appropriate ifdef/endif pair for portability. - */ - -/* C allows up-casts from (void*) to any pointer and (const void*) to any - * pointer to a const object. C++ regards this as a type error and requires an - * explicit, static, cast and provides the static_cast<> rune to ensure that - * const is not cast away. - */ -#ifdef __cplusplus -# define png_voidcast(type, value) static_cast(value) -# define png_constcast(type, value) const_cast(value) -# define png_aligncast(type, value) \ - static_cast(static_cast(value)) -# define png_aligncastconst(type, value) \ - static_cast(static_cast(value)) -#else -# define png_voidcast(type, value) (value) -# ifdef _WIN64 -# ifdef __GNUC__ - typedef unsigned long long png_ptruint; -# else - typedef unsigned __int64 png_ptruint; -# endif -# else - typedef unsigned long png_ptruint; -# endif -# define png_constcast(type, value) ((type)(png_ptruint)(const void*)(value)) -# define png_aligncast(type, value) ((void*)(value)) -# define png_aligncastconst(type, value) ((const void*)(value)) -#endif /* __cplusplus */ - -#if defined(PNG_FLOATING_POINT_SUPPORTED) ||\ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) - /* png.c requires the following ANSI-C constants if the conversion of - * floating point to ASCII is implemented therein: - * - * DBL_DIG Maximum number of decimal digits (can be set to any constant) - * DBL_MIN Smallest normalized fp number (can be set to an arbitrary value) - * DBL_MAX Maximum floating point number (can be set to an arbitrary value) - */ -# include - -# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ - defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) - /* We need to check that hasn't already been included earlier - * as it seems it doesn't agree with , yet we should really use - * if possible. - */ -# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) -# include -# endif -# else -# include -# endif -# if defined(_AMIGA) && defined(__SASC) && defined(_M68881) - /* Amiga SAS/C: We must include builtin FPU functions when compiling using - * MATH=68881 - */ -# include -# endif -#endif - -/* This provides the non-ANSI (far) memory allocation routines. */ -#if defined(__TURBOC__) && defined(__MSDOS__) -# include -# include -#endif - -#if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \ - defined(_WIN32) || defined(__WIN32__) -# include /* defines _WINDOWS_ macro */ -#endif -#endif /* PNG_VERSION_INFO_ONLY */ - -/* Moved here around 1.5.0beta36 from pngconf.h */ -/* Users may want to use these so they are not private. Any library - * functions that are passed far data must be model-independent. - */ - -/* Memory model/platform independent fns */ -#ifndef PNG_ABORT -# ifdef _WINDOWS_ -# define PNG_ABORT() ExitProcess(0) -# else -# define PNG_ABORT() abort() -# endif -#endif - -/* These macros may need to be architecture dependent. */ -#define PNG_ALIGN_NONE 0 /* do not use data alignment */ -#define PNG_ALIGN_ALWAYS 1 /* assume unaligned accesses are OK */ -#ifdef offsetof -# define PNG_ALIGN_OFFSET 2 /* use offsetof to determine alignment */ -#else -# define PNG_ALIGN_OFFSET -1 /* prevent the use of this */ -#endif -#define PNG_ALIGN_SIZE 3 /* use sizeof to determine alignment */ - -#ifndef PNG_ALIGN_TYPE - /* Default to using aligned access optimizations and requiring alignment to a - * multiple of the data type size. Override in a compiler specific fashion - * if necessary by inserting tests here: - */ -# define PNG_ALIGN_TYPE PNG_ALIGN_SIZE -#endif - -#if PNG_ALIGN_TYPE == PNG_ALIGN_SIZE - /* This is used because in some compiler implementations non-aligned - * structure members are supported, so the offsetof approach below fails. - * Set PNG_ALIGN_SIZE=0 for compiler combinations where unaligned access - * is good for performance. Do not do this unless you have tested the result - * and understand it. - */ -# define png_alignof(type) (sizeof (type)) -#else -# if PNG_ALIGN_TYPE == PNG_ALIGN_OFFSET -# define png_alignof(type) offsetof(struct{char c; type t;}, t) -# else -# if PNG_ALIGN_TYPE == PNG_ALIGN_ALWAYS -# define png_alignof(type) (1) -# endif - /* Else leave png_alignof undefined to prevent use thereof */ -# endif -#endif - -/* This implicitly assumes alignment is always to a power of 2. */ -#ifdef png_alignof -# define png_isaligned(ptr, type)\ - (((type)((const char*)ptr-(const char*)0) & \ - (type)(png_alignof(type)-1)) == 0) -#else -# define png_isaligned(ptr, type) 0 -#endif - -/* End of memory model/platform independent support */ -/* End of 1.5.0beta36 move from pngconf.h */ - -/* CONSTANTS and UTILITY MACROS - * These are used internally by libpng and not exposed in the API - */ - -/* Various modes of operation. Note that after an init, mode is set to - * zero automatically when the structure is created. Three of these - * are defined in png.h because they need to be visible to applications - * that call png_set_unknown_chunk(). - */ -/* #define PNG_HAVE_IHDR 0x01U (defined in png.h) */ -/* #define PNG_HAVE_PLTE 0x02U (defined in png.h) */ -#define PNG_HAVE_IDAT 0x04U -/* #define PNG_AFTER_IDAT 0x08U (defined in png.h) */ -#define PNG_HAVE_IEND 0x10U - /* 0x20U (unused) */ - /* 0x40U (unused) */ - /* 0x80U (unused) */ -#define PNG_HAVE_CHUNK_HEADER 0x100U -#define PNG_WROTE_tIME 0x200U -#define PNG_WROTE_INFO_BEFORE_PLTE 0x400U -#define PNG_BACKGROUND_IS_GRAY 0x800U -#define PNG_HAVE_PNG_SIGNATURE 0x1000U -#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000U /* Have another chunk after IDAT */ - /* 0x4000U (unused) */ -#define PNG_IS_READ_STRUCT 0x8000U /* Else is a write struct */ - -/* Flags for the transformations the PNG library does on the image data */ -#define PNG_BGR 0x0001U -#define PNG_INTERLACE 0x0002U -#define PNG_PACK 0x0004U -#define PNG_SHIFT 0x0008U -#define PNG_SWAP_BYTES 0x0010U -#define PNG_INVERT_MONO 0x0020U -#define PNG_QUANTIZE 0x0040U -#define PNG_COMPOSE 0x0080U /* Was PNG_BACKGROUND */ -#define PNG_BACKGROUND_EXPAND 0x0100U -#define PNG_EXPAND_16 0x0200U /* Added to libpng 1.5.2 */ -#define PNG_16_TO_8 0x0400U /* Becomes 'chop' in 1.5.4 */ -#define PNG_RGBA 0x0800U -#define PNG_EXPAND 0x1000U -#define PNG_GAMMA 0x2000U -#define PNG_GRAY_TO_RGB 0x4000U -#define PNG_FILLER 0x8000U -#define PNG_PACKSWAP 0x10000U -#define PNG_SWAP_ALPHA 0x20000U -#define PNG_STRIP_ALPHA 0x40000U -#define PNG_INVERT_ALPHA 0x80000U -#define PNG_USER_TRANSFORM 0x100000U -#define PNG_RGB_TO_GRAY_ERR 0x200000U -#define PNG_RGB_TO_GRAY_WARN 0x400000U -#define PNG_RGB_TO_GRAY 0x600000U /* two bits, RGB_TO_GRAY_ERR|WARN */ -#define PNG_ENCODE_ALPHA 0x800000U /* Added to libpng-1.5.4 */ -#define PNG_ADD_ALPHA 0x1000000U /* Added to libpng-1.2.7 */ -#define PNG_EXPAND_tRNS 0x2000000U /* Added to libpng-1.2.9 */ -#define PNG_SCALE_16_TO_8 0x4000000U /* Added to libpng-1.5.4 */ - /* 0x8000000U unused */ - /* 0x10000000U unused */ - /* 0x20000000U unused */ - /* 0x40000000U unused */ -/* Flags for png_create_struct */ -#define PNG_STRUCT_PNG 0x0001U -#define PNG_STRUCT_INFO 0x0002U - -/* Flags for the png_ptr->flags rather than declaring a byte for each one */ -#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001U -#define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002U /* Added to libpng-1.6.0 */ - /* 0x0004U unused */ -#define PNG_FLAG_ZSTREAM_ENDED 0x0008U /* Added to libpng-1.6.0 */ - /* 0x0010U unused */ - /* 0x0020U unused */ -#define PNG_FLAG_ROW_INIT 0x0040U -#define PNG_FLAG_FILLER_AFTER 0x0080U -#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100U -#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200U -#define PNG_FLAG_CRC_CRITICAL_USE 0x0400U -#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800U -#define PNG_FLAG_ASSUME_sRGB 0x1000U /* Added to libpng-1.5.4 */ -#define PNG_FLAG_OPTIMIZE_ALPHA 0x2000U /* Added to libpng-1.5.4 */ -#define PNG_FLAG_DETECT_UNINITIALIZED 0x4000U /* Added to libpng-1.5.4 */ -/* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000U */ -/* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000U */ -#define PNG_FLAG_LIBRARY_MISMATCH 0x20000U -#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000U -#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000U -#define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000U /* Added to libpng-1.4.0 */ -#define PNG_FLAG_APP_WARNINGS_WARN 0x200000U /* Added to libpng-1.6.0 */ -#define PNG_FLAG_APP_ERRORS_WARN 0x400000U /* Added to libpng-1.6.0 */ - /* 0x800000U unused */ - /* 0x1000000U unused */ - /* 0x2000000U unused */ - /* 0x4000000U unused */ - /* 0x8000000U unused */ - /* 0x10000000U unused */ - /* 0x20000000U unused */ - /* 0x40000000U unused */ - -#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ - PNG_FLAG_CRC_ANCILLARY_NOWARN) - -#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ - PNG_FLAG_CRC_CRITICAL_IGNORE) - -#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ - PNG_FLAG_CRC_CRITICAL_MASK) - -/* Save typing and make code easier to understand */ - -#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ - abs((int)((c1).green) - (int)((c2).green)) + \ - abs((int)((c1).blue) - (int)((c2).blue))) - -/* Added to libpng-1.6.0: scale a 16-bit value in the range 0..65535 to 0..255 - * by dividing by 257 *with rounding*. This macro is exact for the given range. - * See the discourse in pngrtran.c png_do_scale_16_to_8. The values in the - * macro were established by experiment (modifying the added value). The macro - * has a second variant that takes a value already scaled by 255 and divides by - * 65535 - this has a maximum error of .502. Over the range 0..65535*65535 it - * only gives off-by-one errors and only for 0.5% (1 in 200) of the values. - */ -#define PNG_DIV65535(v24) (((v24) + 32895) >> 16) -#define PNG_DIV257(v16) PNG_DIV65535((png_uint_32)(v16) * 255) - -/* Added to libpng-1.2.6 JB */ -#define PNG_ROWBYTES(pixel_bits, width) \ - ((pixel_bits) >= 8 ? \ - ((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \ - (( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) ) - -/* This returns the number of trailing bits in the last byte of a row, 0 if the - * last byte is completely full of pixels. It is, in principle, (pixel_bits x - * width) % 8, but that would overflow for large 'width'. The second macro is - * the same except that it returns the number of unused bits in the last byte; - * (8-TRAILBITS), but 0 when TRAILBITS is 0. - * - * NOTE: these macros are intended to be self-evidently correct and never - * overflow on the assumption that pixel_bits is in the range 0..255. The - * arguments are evaluated only once and they can be signed (e.g. as a result of - * the integral promotions). The result of the expression always has type - * (png_uint_32), however the compiler always knows it is in the range 0..7. - */ -#define PNG_TRAILBITS(pixel_bits, width) \ - (((pixel_bits) * ((width) % (png_uint_32)8)) % 8) - -#define PNG_PADBITS(pixel_bits, width) \ - ((8 - PNG_TRAILBITS(pixel_bits, width)) % 8) - -/* PNG_OUT_OF_RANGE returns true if value is outside the range - * ideal-delta..ideal+delta. Each argument is evaluated twice. - * "ideal" and "delta" should be constants, normally simple - * integers, "value" a variable. Added to libpng-1.2.6 JB - */ -#define PNG_OUT_OF_RANGE(value, ideal, delta) \ - ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) - -/* Conversions between fixed and floating point, only defined if - * required (to make sure the code doesn't accidentally use float - * when it is supposedly disabled.) - */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -/* The floating point conversion can't overflow, though it can and - * does lose accuracy relative to the original fixed point value. - * In practice this doesn't matter because png_fixed_point only - * stores numbers with very low precision. The png_ptr and s - * arguments are unused by default but are there in case error - * checking becomes a requirement. - */ -#define png_float(png_ptr, fixed, s) (.00001 * (fixed)) - -/* The fixed point conversion performs range checking and evaluates - * its argument multiple times, so must be used with care. The - * range checking uses the PNG specification values for a signed - * 32-bit fixed point value except that the values are deliberately - * rounded-to-zero to an integral value - 21474 (21474.83 is roughly - * (2^31-1) * 100000). 's' is a string that describes the value being - * converted. - * - * NOTE: this macro will raise a png_error if the range check fails, - * therefore it is normally only appropriate to use this on values - * that come from API calls or other sources where an out of range - * error indicates a programming error, not a data error! - * - * NOTE: by default this is off - the macro is not used - because the - * function call saves a lot of code. - */ -#ifdef PNG_FIXED_POINT_MACRO_SUPPORTED -#define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\ - ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0)) -#endif -/* else the corresponding function is defined below, inside the scope of the - * cplusplus test. - */ -#endif - -/* Constants for known chunk types. If you need to add a chunk, define the name - * here. For historical reasons these constants have the form png_; i.e. - * the prefix is lower case. Please use decimal values as the parameters to - * match the ISO PNG specification and to avoid relying on the C locale - * interpretation of character values. - * - * Prior to 1.5.6 these constants were strings, as of 1.5.6 png_uint_32 values - * are computed and a new macro (PNG_STRING_FROM_CHUNK) added to allow a string - * to be generated if required. - * - * PNG_32b correctly produces a value shifted by up to 24 bits, even on - * architectures where (int) is only 16 bits. - */ -#define PNG_32b(b,s) ((png_uint_32)(b) << (s)) -#define PNG_U32(b1,b2,b3,b4) \ - (PNG_32b(b1,24) | PNG_32b(b2,16) | PNG_32b(b3,8) | PNG_32b(b4,0)) - -/* Constants for known chunk types. - * - * MAINTAINERS: If you need to add a chunk, define the name here. - * For historical reasons these constants have the form png_; i.e. - * the prefix is lower case. Please use decimal values as the parameters to - * match the ISO PNG specification and to avoid relying on the C locale - * interpretation of character values. Please keep the list sorted. - * - * Notice that PNG_U32 is used to define a 32-bit value for the 4 byte chunk - * type. In fact the specification does not express chunk types this way, - * however using a 32-bit value means that the chunk type can be read from the - * stream using exactly the same code as used for a 32-bit unsigned value and - * can be examined far more efficiently (using one arithmetic compare). - * - * Prior to 1.5.6 the chunk type constants were expressed as C strings. The - * libpng API still uses strings for 'unknown' chunks and a macro, - * PNG_STRING_FROM_CHUNK, allows a string to be generated if required. Notice - * that for portable code numeric values must still be used; the string "IHDR" - * is not portable and neither is PNG_U32('I', 'H', 'D', 'R'). - * - * In 1.7.0 the definitions will be made public in png.h to avoid having to - * duplicate the same definitions in application code. - */ -#define png_IDAT PNG_U32( 73, 68, 65, 84) -#define png_IEND PNG_U32( 73, 69, 78, 68) -#define png_IHDR PNG_U32( 73, 72, 68, 82) -#define png_PLTE PNG_U32( 80, 76, 84, 69) -#define png_bKGD PNG_U32( 98, 75, 71, 68) -#define png_cHRM PNG_U32( 99, 72, 82, 77) -#define png_eXIf PNG_U32(101, 88, 73, 102) /* registered July 2017 */ -#define png_fRAc PNG_U32(102, 82, 65, 99) /* registered, not defined */ -#define png_gAMA PNG_U32(103, 65, 77, 65) -#define png_gIFg PNG_U32(103, 73, 70, 103) -#define png_gIFt PNG_U32(103, 73, 70, 116) /* deprecated */ -#define png_gIFx PNG_U32(103, 73, 70, 120) -#define png_hIST PNG_U32(104, 73, 83, 84) -#define png_iCCP PNG_U32(105, 67, 67, 80) -#define png_iTXt PNG_U32(105, 84, 88, 116) -#define png_oFFs PNG_U32(111, 70, 70, 115) -#define png_pCAL PNG_U32(112, 67, 65, 76) -#define png_pHYs PNG_U32(112, 72, 89, 115) -#define png_sBIT PNG_U32(115, 66, 73, 84) -#define png_sCAL PNG_U32(115, 67, 65, 76) -#define png_sPLT PNG_U32(115, 80, 76, 84) -#define png_sRGB PNG_U32(115, 82, 71, 66) -#define png_sTER PNG_U32(115, 84, 69, 82) -#define png_tEXt PNG_U32(116, 69, 88, 116) -#define png_tIME PNG_U32(116, 73, 77, 69) -#define png_tRNS PNG_U32(116, 82, 78, 83) -#define png_zTXt PNG_U32(122, 84, 88, 116) - -/* The following will work on (signed char*) strings, whereas the get_uint_32 - * macro will fail on top-bit-set values because of the sign extension. - */ -#define PNG_CHUNK_FROM_STRING(s)\ - PNG_U32(0xff & (s)[0], 0xff & (s)[1], 0xff & (s)[2], 0xff & (s)[3]) - -/* This uses (char), not (png_byte) to avoid warnings on systems where (char) is - * signed and the argument is a (char[]) This macro will fail miserably on - * systems where (char) is more than 8 bits. - */ -#define PNG_STRING_FROM_CHUNK(s,c)\ - (void)(((char*)(s))[0]=(char)(((c)>>24) & 0xff), \ - ((char*)(s))[1]=(char)(((c)>>16) & 0xff),\ - ((char*)(s))[2]=(char)(((c)>>8) & 0xff), \ - ((char*)(s))[3]=(char)((c & 0xff))) - -/* Do the same but terminate with a null character. */ -#define PNG_CSTRING_FROM_CHUNK(s,c)\ - (void)(PNG_STRING_FROM_CHUNK(s,c), ((char*)(s))[4] = 0) - -/* Test on flag values as defined in the spec (section 5.4): */ -#define PNG_CHUNK_ANCILLARY(c) (1 & ((c) >> 29)) -#define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLARY(c)) -#define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21)) -#define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13)) -#define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5)) - -/* Gamma values (new at libpng-1.5.4): */ -#define PNG_GAMMA_MAC_OLD 151724 /* Assume '1.8' is really 2.2/1.45! */ -#define PNG_GAMMA_MAC_INVERSE 65909 -#define PNG_GAMMA_sRGB_INVERSE 45455 - -/* Almost everything below is C specific; the #defines above can be used in - * non-C code (so long as it is C-preprocessed) the rest of this stuff cannot. - */ -#ifndef PNG_VERSION_INFO_ONLY - -#include "pngstruct.h" -#include "pnginfo.h" - -/* Validate the include paths - the include path used to generate pnglibconf.h - * must match that used in the build, or we must be using pnglibconf.h.prebuilt: - */ -#if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM -# error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ - "-I (include path) error: see the notes in pngpriv.h" - /* This means that when pnglibconf.h was built the copy of zlib.h that it - * used is not the same as the one being used here. Because the build of - * libpng makes decisions to use inflateInit2 and inflateReset2 based on the - * zlib version number and because this affects handling of certain broken - * PNG files the -I directives must match. - * - * The most likely explanation is that you passed a -I in CFLAGS. This will - * not work; all the preprocessor directories and in particular all the -I - * directives must be in CPPFLAGS. - */ -#endif - -/* This is used for 16-bit gamma tables -- only the top level pointers are - * const; this could be changed: - */ -typedef const png_uint_16p * png_const_uint_16pp; - -/* Added to libpng-1.5.7: sRGB conversion tables */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_table, [256]); - /* Convert from an sRGB encoded value 0..255 to a 16-bit linear value, - * 0..65535. This table gives the closest 16-bit answers (no errors). - */ -#endif - -PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_base, [512]); -PNG_INTERNAL_DATA(const png_byte, png_sRGB_delta, [512]); - -#define PNG_sRGB_FROM_LINEAR(linear) \ - ((png_byte)(0xff & ((png_sRGB_base[(linear)>>15] \ - + ((((linear) & 0x7fff)*png_sRGB_delta[(linear)>>15])>>12)) >> 8))) - /* Given a value 'linear' in the range 0..255*65535 calculate the 8-bit sRGB - * encoded value with maximum error 0.646365. Note that the input is not a - * 16-bit value; it has been multiplied by 255! */ -#endif /* SIMPLIFIED_READ/WRITE */ - - -/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Internal functions; these are not exported from a DLL however because they - * are used within several of the C source files they have to be C extern. - * - * All of these functions must be declared with PNG_INTERNAL_FUNCTION. - */ - -/* Zlib support */ -#define PNG_UNEXPECTED_ZLIB_RETURN (-7) -PNG_INTERNAL_FUNCTION(void, png_zstream_error,(png_structrp png_ptr, int ret), - PNG_EMPTY); - /* Used by the zlib handling functions to ensure that z_stream::msg is always - * set before they return. - */ - -#ifdef PNG_WRITE_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_free_buffer_list,(png_structrp png_ptr, - png_compression_bufferp *list),PNG_EMPTY); - /* Free the buffer list used by the compressed write code. */ -#endif - -#if defined(PNG_FLOATING_POINT_SUPPORTED) && \ - !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \ - (defined(PNG_gAMA_SUPPORTED) || defined(PNG_cHRM_SUPPORTED) || \ - defined(PNG_sCAL_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \ - (defined(PNG_sCAL_SUPPORTED) && \ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)) -PNG_INTERNAL_FUNCTION(png_fixed_point,png_fixed,(png_const_structrp png_ptr, - double fp, png_const_charp text),PNG_EMPTY); -#endif - -/* Check the user version string for compatibility, returns false if the version - * numbers aren't compatible. - */ -PNG_INTERNAL_FUNCTION(int,png_user_version_check,(png_structrp png_ptr, - png_const_charp user_png_ver),PNG_EMPTY); - -/* Internal base allocator - no messages, NULL on failure to allocate. This - * does, however, call the application provided allocator and that could call - * png_error (although that would be a bug in the application implementation.) - */ -PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_base,(png_const_structrp png_ptr, - png_alloc_size_t size),PNG_ALLOCATED); - -#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\ - defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) -/* Internal array allocator, outputs no error or warning messages on failure, - * just returns NULL. - */ -PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_array,(png_const_structrp png_ptr, - int nelements, size_t element_size),PNG_ALLOCATED); - -/* The same but an existing array is extended by add_elements. This function - * also memsets the new elements to 0 and copies the old elements. The old - * array is not freed or altered. - */ -PNG_INTERNAL_FUNCTION(png_voidp,png_realloc_array,(png_const_structrp png_ptr, - png_const_voidp array, int old_elements, int add_elements, - size_t element_size),PNG_ALLOCATED); -#endif /* text, sPLT or unknown chunks */ - -/* Magic to create a struct when there is no struct to call the user supplied - * memory allocators. Because error handling has not been set up the memory - * handlers can't safely call png_error, but this is an obscure and undocumented - * restriction so libpng has to assume that the 'free' handler, at least, might - * call png_error. - */ -PNG_INTERNAL_FUNCTION(png_structp,png_create_png_struct, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn, - png_free_ptr free_fn),PNG_ALLOCATED); - -/* Free memory from internal libpng struct */ -PNG_INTERNAL_FUNCTION(void,png_destroy_png_struct,(png_structrp png_ptr), - PNG_EMPTY); - -/* Free an allocated jmp_buf (always succeeds) */ -PNG_INTERNAL_FUNCTION(void,png_free_jmpbuf,(png_structrp png_ptr),PNG_EMPTY); - -/* Function to allocate memory for zlib. PNGAPI is disallowed. */ -PNG_INTERNAL_FUNCTION(voidpf,png_zalloc,(voidpf png_ptr, uInt items, uInt size), - PNG_ALLOCATED); - -/* Function to free memory for zlib. PNGAPI is disallowed. */ -PNG_INTERNAL_FUNCTION(void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY); - -/* Next four functions are used internally as callbacks. PNGCBAPI is required - * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to - * PNGCBAPI at 1.5.0 - */ - -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr, - png_bytep data, png_size_t length),PNG_EMPTY); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr, - png_bytep buffer, png_size_t length),PNG_EMPTY); -#endif - -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr, - png_bytep data, png_size_t length),PNG_EMPTY); - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -# ifdef PNG_STDIO_SUPPORTED -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_flush,(png_structp png_ptr), - PNG_EMPTY); -# endif -#endif - -/* Reset the CRC variable */ -PNG_INTERNAL_FUNCTION(void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY); - -/* Write the "data" buffer to whatever output you are using */ -PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr, - png_const_bytep data, png_size_t length),PNG_EMPTY); - -/* Read and check the PNG file signature */ -PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); - -/* Read the chunk header (length + type name) */ -PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr), - PNG_EMPTY); - -/* Read data from whatever input you are using into the "data" buffer */ -PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data, - png_size_t length),PNG_EMPTY); - -/* Read bytes into buf, and update png_ptr->crc */ -PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf, - png_uint_32 length),PNG_EMPTY); - -/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ -PNG_INTERNAL_FUNCTION(int,png_crc_finish,(png_structrp png_ptr, - png_uint_32 skip),PNG_EMPTY); - -/* Read the CRC from the file and compare it to the libpng calculated CRC */ -PNG_INTERNAL_FUNCTION(int,png_crc_error,(png_structrp png_ptr),PNG_EMPTY); - -/* Calculate the CRC over a section of data. Note that we are only - * passing a maximum of 64K on systems that have this as a memory limit, - * since this is the maximum buffer size we can specify. - */ -PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr, - png_const_bytep ptr, png_size_t length),PNG_EMPTY); - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY); -#endif - -/* Write various chunks */ - -/* Write the IHDR chunk, and update the png_struct with the necessary - * information. - */ -PNG_INTERNAL_FUNCTION(void,png_write_IHDR,(png_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, - int compression_method, int filter_method, int interlace_method),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_write_PLTE,(png_structrp png_ptr, - png_const_colorp palette, png_uint_32 num_pal),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_compress_IDAT,(png_structrp png_ptr, - png_const_bytep row_data, png_alloc_size_t row_data_length, int flush), - PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_write_IEND,(png_structrp png_ptr),PNG_EMPTY); - -#ifdef PNG_WRITE_gAMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_gAMA_fixed,(png_structrp png_ptr, - png_fixed_point file_gamma),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_sBIT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sBIT,(png_structrp png_ptr, - png_const_color_8p sbit, int color_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_cHRM_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_cHRM_fixed,(png_structrp png_ptr, - const png_xy *xy), PNG_EMPTY); - /* The xy value must have been previously validated */ -#endif - -#ifdef PNG_WRITE_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr, - int intent),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_eXIf_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_eXIf,(png_structrp png_ptr, - png_bytep exif, int num_exif),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_iCCP,(png_structrp png_ptr, - png_const_charp name, png_const_bytep profile), PNG_EMPTY); - /* The profile must have been previously validated for correctness, the - * length comes from the first four bytes. Only the base, deflate, - * compression is supported. - */ -#endif - -#ifdef PNG_WRITE_sPLT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sPLT,(png_structrp png_ptr, - png_const_sPLT_tp palette),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_tRNS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_tRNS,(png_structrp png_ptr, - png_const_bytep trans, png_const_color_16p values, int number, - int color_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_bKGD_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_bKGD,(png_structrp png_ptr, - png_const_color_16p values, int color_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_hIST_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_hIST,(png_structrp png_ptr, - png_const_uint_16p hist, int num_hist),PNG_EMPTY); -#endif - -/* Chunks that have keywords */ -#ifdef PNG_WRITE_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr, - png_const_charp key, png_const_charp text, png_size_t text_len),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_zTXt,(png_structrp png_ptr, png_const_charp - key, png_const_charp text, int compression),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_iTXt,(png_structrp png_ptr, - int compression, png_const_charp key, png_const_charp lang, - png_const_charp lang_key, png_const_charp text),PNG_EMPTY); -#endif - -#ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ -PNG_INTERNAL_FUNCTION(int,png_set_text_2,(png_const_structrp png_ptr, - png_inforp info_ptr, png_const_textp text_ptr, int num_text),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_oFFs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_oFFs,(png_structrp png_ptr, - png_int_32 x_offset, png_int_32 y_offset, int unit_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_pCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_pCAL,(png_structrp png_ptr, - png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, - png_const_charp units, png_charpp params),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_pHYs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_pHYs,(png_structrp png_ptr, - png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, - int unit_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_tIME_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_tIME,(png_structrp png_ptr, - png_const_timep mod_time),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_sCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sCAL_s,(png_structrp png_ptr, - int unit, png_const_charp width, png_const_charp height),PNG_EMPTY); -#endif - -/* Called when finished processing a row of data */ -PNG_INTERNAL_FUNCTION(void,png_write_finish_row,(png_structrp png_ptr), - PNG_EMPTY); - -/* Internal use only. Called before first row of data */ -PNG_INTERNAL_FUNCTION(void,png_write_start_row,(png_structrp png_ptr), - PNG_EMPTY); - -/* Combine a row of data, dealing with alpha, etc. if requested. 'row' is an - * array of png_ptr->width pixels. If the image is not interlaced or this - * is the final pass this just does a memcpy, otherwise the "display" flag - * is used to determine whether to copy pixels that are not in the current pass. - * - * Because 'png_do_read_interlace' (below) replicates pixels this allows this - * function to achieve the documented 'blocky' appearance during interlaced read - * if display is 1 and the 'sparkle' appearance, where existing pixels in 'row' - * are not changed if they are not in the current pass, when display is 0. - * - * 'display' must be 0 or 1, otherwise the memcpy will be done regardless. - * - * The API always reads from the png_struct row buffer and always assumes that - * it is full width (png_do_read_interlace has already been called.) - * - * This function is only ever used to write to row buffers provided by the - * caller of the relevant libpng API and the row must have already been - * transformed by the read transformations. - * - * The PNG_USE_COMPILE_TIME_MASKS option causes generation of pre-computed - * bitmasks for use within the code, otherwise runtime generated masks are used. - * The default is compile time masks. - */ -#ifndef PNG_USE_COMPILE_TIME_MASKS -# define PNG_USE_COMPILE_TIME_MASKS 1 -#endif -PNG_INTERNAL_FUNCTION(void,png_combine_row,(png_const_structrp png_ptr, - png_bytep row, int display),PNG_EMPTY); - -#ifdef PNG_READ_INTERLACING_SUPPORTED -/* Expand an interlaced row: the 'row_info' describes the pass data that has - * been read in and must correspond to the pixels in 'row', the pixels are - * expanded (moved apart) in 'row' to match the final layout, when doing this - * the pixels are *replicated* to the intervening space. This is essential for - * the correct operation of png_combine_row, above. - */ -PNG_INTERNAL_FUNCTION(void,png_do_read_interlace,(png_row_infop row_info, - png_bytep row, int pass, png_uint_32 transformations),PNG_EMPTY); -#endif - -/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED -/* Grab pixels out of a row for an interlaced pass */ -PNG_INTERNAL_FUNCTION(void,png_do_write_interlace,(png_row_infop row_info, - png_bytep row, int pass),PNG_EMPTY); -#endif - -/* Unfilter a row: check the filter value before calling this, there is no point - * calling it for PNG_FILTER_VALUE_NONE. - */ -PNG_INTERNAL_FUNCTION(void,png_read_filter_row,(png_structrp pp, png_row_infop - row_info, png_bytep row, png_const_bytep prev_row, int filter),PNG_EMPTY); - -#if PNG_ARM_NEON_OPT > 0 -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_neon,(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -#endif - -#if PNG_MIPS_MSA_OPT > 0 -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_msa,(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_msa,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_msa,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_msa,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_msa,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_msa,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_msa,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -#endif - -#if PNG_POWERPC_VSX_OPT > 0 -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_vsx,(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_vsx,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_vsx,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_vsx,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_vsx,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_vsx,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_vsx,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -#endif - -#if PNG_INTEL_SSE_IMPLEMENTATION > 0 -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_sse2,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_sse2,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_sse2,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_sse2,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_sse2,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_sse2,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -#endif - -/* Choose the best filter to use and filter the row data */ -PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, - png_row_infop row_info),PNG_EMPTY); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_read_IDAT_data,(png_structrp png_ptr, - png_bytep output, png_alloc_size_t avail_out),PNG_EMPTY); - /* Read 'avail_out' bytes of data from the IDAT stream. If the output buffer - * is NULL the function checks, instead, for the end of the stream. In this - * case a benign error will be issued if the stream end is not found or if - * extra data has to be consumed. - */ -PNG_INTERNAL_FUNCTION(void,png_read_finish_IDAT,(png_structrp png_ptr), - PNG_EMPTY); - /* This cleans up when the IDAT LZ stream does not end when the last image - * byte is read; there is still some pending input. - */ - -PNG_INTERNAL_FUNCTION(void,png_read_finish_row,(png_structrp png_ptr), - PNG_EMPTY); - /* Finish a row while reading, dealing with interlacing passes, etc. */ -#endif /* SEQUENTIAL_READ */ - -/* Initialize the row buffers, etc. */ -PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY); - -#if ZLIB_VERNUM >= 0x1240 -PNG_INTERNAL_FUNCTION(int,png_zlib_inflate,(png_structrp png_ptr, int flush), - PNG_EMPTY); -# define PNG_INFLATE(pp, flush) png_zlib_inflate(pp, flush) -#else /* Zlib < 1.2.4 */ -# define PNG_INFLATE(pp, flush) inflate(&(pp)->zstream, flush) -#endif /* Zlib < 1.2.4 */ - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* Optional call to update the users info structure */ -PNG_INTERNAL_FUNCTION(void,png_read_transform_info,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -#endif - -/* Shared transform functions, defined in pngtran.c */ -#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ - defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_strip_channel,(png_row_infop row_info, - png_bytep row, int at_start),PNG_EMPTY); -#endif - -#ifdef PNG_16BIT_SUPPORTED -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_swap,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ - defined(PNG_WRITE_PACKSWAP_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_packswap,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_invert,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_bgr,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -/* The following decodes the appropriate chunks, and does error correction, - * then calls the appropriate callback for the chunk if it is valid. - */ - -/* Decode the IHDR chunk */ -PNG_INTERNAL_FUNCTION(void,png_handle_IHDR,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_handle_PLTE,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_handle_IEND,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); - -#ifdef PNG_READ_bKGD_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_bKGD,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_cHRM,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_eXIf_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_eXIf,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_gAMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_gAMA,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_hIST_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_hIST,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_iCCP,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif /* READ_iCCP */ - -#ifdef PNG_READ_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_iTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_oFFs,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_pCAL,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_pHYs,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sBIT,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sCAL,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_sPLT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sPLT,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif /* READ_sPLT */ - -#ifdef PNG_READ_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sRGB,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_tEXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_tIME_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_tIME,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_tRNS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_tRNS,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_const_structrp png_ptr, - const png_uint_32 chunk_name),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_check_chunk_length,(png_const_structrp png_ptr, - const png_uint_32 chunk_length),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY); - /* This is the function that gets called for unknown chunks. The 'keep' - * argument is either non-zero for a known chunk that has been set to be - * handled as unknown or zero for an unknown chunk. By default the function - * just skips the chunk or errors out if it is critical. - */ - -#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) ||\ - defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) -PNG_INTERNAL_FUNCTION(int,png_chunk_unknown_handling, - (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY); - /* Exactly as the API png_handle_as_unknown() except that the argument is a - * 32-bit chunk name, not a string. - */ -#endif /* READ_UNKNOWN_CHUNKS || HANDLE_AS_UNKNOWN */ - -/* Handle the transformations for reading and writing */ -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_read_transformations,(png_structrp png_ptr, - png_row_infop row_info),PNG_EMPTY); -#endif -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_write_transformations,(png_structrp png_ptr, - png_row_infop row_info),PNG_EMPTY); -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_init_read_transformations,(png_structrp png_ptr), - PNG_EMPTY); -#endif - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_read_chunk,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_sig,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr, - png_bytep buffer, png_size_t buffer_length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr, - png_bytep buffer, png_size_t buffer_length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_handle_unknown,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_have_info,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_have_end,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_have_row,(png_structrp png_ptr, - png_bytep row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_end,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_process_some_data,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_push_finish_row,(png_structrp png_ptr), - PNG_EMPTY); -# ifdef PNG_READ_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_handle_tEXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_tEXt,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -# endif -# ifdef PNG_READ_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_handle_zTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_zTXt,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -# endif -# ifdef PNG_READ_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_handle_iTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_iTXt,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -# endif - -#endif /* PROGRESSIVE_READ */ - -/* Added at libpng version 1.6.0 */ -#ifdef PNG_GAMMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_colorspace_set_gamma,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_fixed_point gAMA), PNG_EMPTY); - /* Set the colorspace gamma with a value provided by the application or by - * the gAMA chunk on read. The value will override anything set by an ICC - * profile. - */ - -PNG_INTERNAL_FUNCTION(void,png_colorspace_sync_info,(png_const_structrp png_ptr, - png_inforp info_ptr), PNG_EMPTY); - /* Synchronize the info 'valid' flags with the colorspace */ - -PNG_INTERNAL_FUNCTION(void,png_colorspace_sync,(png_const_structrp png_ptr, - png_inforp info_ptr), PNG_EMPTY); - /* Copy the png_struct colorspace to the info_struct and call the above to - * synchronize the flags. Checks for NULL info_ptr and does nothing. - */ -#endif - -/* Added at libpng version 1.4.0 */ -#ifdef PNG_COLORSPACE_SUPPORTED -/* These internal functions are for maintaining the colorspace structure within - * a png_info or png_struct (or, indeed, both). - */ -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_chromaticities, - (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_xy *xy, - int preferred), PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_endpoints, - (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_XYZ *XYZ, - int preferred), PNG_EMPTY); - -#ifdef PNG_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_sRGB,(png_const_structrp png_ptr, - png_colorspacerp colorspace, int intent), PNG_EMPTY); - /* This does set the colorspace gAMA and cHRM values too, but doesn't set the - * flags to write them, if it returns false there was a problem and an error - * message has already been output (but the colorspace may still need to be - * synced to record the invalid flag). - */ -#endif /* sRGB */ - -#ifdef PNG_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_ICC,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length, png_const_bytep profile, int color_type), - PNG_EMPTY); - /* The 'name' is used for information only */ - -/* Routines for checking parts of an ICC profile. */ -#ifdef PNG_READ_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(int,png_icc_check_length,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length), PNG_EMPTY); -#endif /* READ_iCCP */ -PNG_INTERNAL_FUNCTION(int,png_icc_check_header,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length, - png_const_bytep profile /* first 132 bytes only */, int color_type), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(int,png_icc_check_tag_table,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length, - png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY); -#ifdef PNG_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_icc_set_sRGB,( - png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_bytep profile, uLong adler), PNG_EMPTY); - /* 'adler' is the Adler32 checksum of the uncompressed profile data. It may - * be zero to indicate that it is not available. It is used, if provided, - * as a fast check on the profile when checking to see if it is sRGB. - */ -#endif -#endif /* iCCP */ - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_colorspace_set_rgb_coefficients, - (png_structrp png_ptr), PNG_EMPTY); - /* Set the rgb_to_gray coefficients from the colorspace Y values */ -#endif /* READ_RGB_TO_GRAY */ -#endif /* COLORSPACE */ - -/* Added at libpng version 1.4.0 */ -PNG_INTERNAL_FUNCTION(void,png_check_IHDR,(png_const_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type),PNG_EMPTY); - -/* Added at libpng version 1.5.10 */ -#if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ - defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_check_palette_indexes, - (png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY); -#endif - -#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_fixed_error,(png_const_structrp png_ptr, - png_const_charp name),PNG_NORETURN); -#endif - -/* Puts 'string' into 'buffer' at buffer[pos], taking care never to overwrite - * the end. Always leaves the buffer nul terminated. Never errors out (and - * there is no error code.) - */ -PNG_INTERNAL_FUNCTION(size_t,png_safecat,(png_charp buffer, size_t bufsize, - size_t pos, png_const_charp string),PNG_EMPTY); - -/* Various internal functions to handle formatted warning messages, currently - * only implemented for warnings. - */ -#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED) -/* Utility to dump an unsigned value into a buffer, given a start pointer and - * and end pointer (which should point just *beyond* the end of the buffer!) - * Returns the pointer to the start of the formatted string. This utility only - * does unsigned values. - */ -PNG_INTERNAL_FUNCTION(png_charp,png_format_number,(png_const_charp start, - png_charp end, int format, png_alloc_size_t number),PNG_EMPTY); - -/* Convenience macro that takes an array: */ -#define PNG_FORMAT_NUMBER(buffer,format,number) \ - png_format_number(buffer, buffer + (sizeof buffer), format, number) - -/* Suggested size for a number buffer (enough for 64 bits and a sign!) */ -#define PNG_NUMBER_BUFFER_SIZE 24 - -/* These are the integer formats currently supported, the name is formed from - * the standard printf(3) format string. - */ -#define PNG_NUMBER_FORMAT_u 1 /* chose unsigned API! */ -#define PNG_NUMBER_FORMAT_02u 2 -#define PNG_NUMBER_FORMAT_d 1 /* chose signed API! */ -#define PNG_NUMBER_FORMAT_02d 2 -#define PNG_NUMBER_FORMAT_x 3 -#define PNG_NUMBER_FORMAT_02x 4 -#define PNG_NUMBER_FORMAT_fixed 5 /* choose the signed API */ -#endif - -#ifdef PNG_WARNINGS_SUPPORTED -/* New defines and members adding in libpng-1.5.4 */ -# define PNG_WARNING_PARAMETER_SIZE 32 -# define PNG_WARNING_PARAMETER_COUNT 8 /* Maximum 9; see pngerror.c */ - -/* An l-value of this type has to be passed to the APIs below to cache the - * values of the parameters to a formatted warning message. - */ -typedef char png_warning_parameters[PNG_WARNING_PARAMETER_COUNT][ - PNG_WARNING_PARAMETER_SIZE]; - -PNG_INTERNAL_FUNCTION(void,png_warning_parameter,(png_warning_parameters p, - int number, png_const_charp string),PNG_EMPTY); - /* Parameters are limited in size to PNG_WARNING_PARAMETER_SIZE characters, - * including the trailing '\0'. - */ -PNG_INTERNAL_FUNCTION(void,png_warning_parameter_unsigned, - (png_warning_parameters p, int number, int format, png_alloc_size_t value), - PNG_EMPTY); - /* Use png_alloc_size_t because it is an unsigned type as big as any we - * need to output. Use the following for a signed value. - */ -PNG_INTERNAL_FUNCTION(void,png_warning_parameter_signed, - (png_warning_parameters p, int number, int format, png_int_32 value), - PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_formatted_warning,(png_const_structrp png_ptr, - png_warning_parameters p, png_const_charp message),PNG_EMPTY); - /* 'message' follows the X/Open approach of using @1, @2 to insert - * parameters previously supplied using the above functions. Errors in - * specifying the parameters will simply result in garbage substitutions. - */ -#endif - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -/* Application errors (new in 1.6); use these functions (declared below) for - * errors in the parameters or order of API function calls on read. The - * 'warning' should be used for an error that can be handled completely; the - * 'error' for one which can be handled safely but which may lose application - * information or settings. - * - * By default these both result in a png_error call prior to release, while in a - * released version the 'warning' is just a warning. However if the application - * explicitly disables benign errors (explicitly permitting the code to lose - * information) they both turn into warnings. - * - * If benign errors aren't supported they end up as the corresponding base call - * (png_warning or png_error.) - */ -PNG_INTERNAL_FUNCTION(void,png_app_warning,(png_const_structrp png_ptr, - png_const_charp message),PNG_EMPTY); - /* The application provided invalid parameters to an API function or called - * an API function at the wrong time, libpng can completely recover. - */ - -PNG_INTERNAL_FUNCTION(void,png_app_error,(png_const_structrp png_ptr, - png_const_charp message),PNG_EMPTY); - /* As above but libpng will ignore the call, or attempt some other partial - * recovery from the error. - */ -#else -# define png_app_warning(pp,s) png_warning(pp,s) -# define png_app_error(pp,s) png_error(pp,s) -#endif - -PNG_INTERNAL_FUNCTION(void,png_chunk_report,(png_const_structrp png_ptr, - png_const_charp message, int error),PNG_EMPTY); - /* Report a recoverable issue in chunk data. On read this is used to report - * a problem found while reading a particular chunk and the - * png_chunk_benign_error or png_chunk_warning function is used as - * appropriate. On write this is used to report an error that comes from - * data set via an application call to a png_set_ API and png_app_error or - * png_app_warning is used as appropriate. - * - * The 'error' parameter must have one of the following values: - */ -#define PNG_CHUNK_WARNING 0 /* never an error */ -#define PNG_CHUNK_WRITE_ERROR 1 /* an error only on write */ -#define PNG_CHUNK_ERROR 2 /* always an error */ - -/* ASCII to FP interfaces, currently only implemented if sCAL - * support is required. - */ -#if defined(PNG_sCAL_SUPPORTED) -/* MAX_DIGITS is actually the maximum number of characters in an sCAL - * width or height, derived from the precision (number of significant - * digits - a build time settable option) and assumptions about the - * maximum ridiculous exponent. - */ -#define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1/*.*/+1/*E*/+10/*exponent*/) - -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_ascii_from_fp,(png_const_structrp png_ptr, - png_charp ascii, png_size_t size, double fp, unsigned int precision), - PNG_EMPTY); -#endif /* FLOATING_POINT */ - -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr, - png_charp ascii, png_size_t size, png_fixed_point fp),PNG_EMPTY); -#endif /* FIXED_POINT */ -#endif /* sCAL */ - -#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED) -/* An internal API to validate the format of a floating point number. - * The result is the index of the next character. If the number is - * not valid it will be the index of a character in the supposed number. - * - * The format of a number is defined in the PNG extensions specification - * and this API is strictly conformant to that spec, not anyone elses! - * - * The format as a regular expression is: - * - * [+-]?[0-9]+.?([Ee][+-]?[0-9]+)? - * - * or: - * - * [+-]?.[0-9]+(.[0-9]+)?([Ee][+-]?[0-9]+)? - * - * The complexity is that either integer or fraction must be present and the - * fraction is permitted to have no digits only if the integer is present. - * - * NOTE: The dangling E problem. - * There is a PNG valid floating point number in the following: - * - * PNG floating point numbers are not greedy. - * - * Working this out requires *TWO* character lookahead (because of the - * sign), the parser does not do this - it will fail at the 'r' - this - * doesn't matter for PNG sCAL chunk values, but it requires more care - * if the value were ever to be embedded in something more complex. Use - * ANSI-C strtod if you need the lookahead. - */ -/* State table for the parser. */ -#define PNG_FP_INTEGER 0 /* before or in integer */ -#define PNG_FP_FRACTION 1 /* before or in fraction */ -#define PNG_FP_EXPONENT 2 /* before or in exponent */ -#define PNG_FP_STATE 3 /* mask for the above */ -#define PNG_FP_SAW_SIGN 4 /* Saw +/- in current state */ -#define PNG_FP_SAW_DIGIT 8 /* Saw a digit in current state */ -#define PNG_FP_SAW_DOT 16 /* Saw a dot in current state */ -#define PNG_FP_SAW_E 32 /* Saw an E (or e) in current state */ -#define PNG_FP_SAW_ANY 60 /* Saw any of the above 4 */ - -/* These three values don't affect the parser. They are set but not used. - */ -#define PNG_FP_WAS_VALID 64 /* Preceding substring is a valid fp number */ -#define PNG_FP_NEGATIVE 128 /* A negative number, including "-0" */ -#define PNG_FP_NONZERO 256 /* A non-zero value */ -#define PNG_FP_STICKY 448 /* The above three flags */ - -/* This is available for the caller to store in 'state' if required. Do not - * call the parser after setting it (the parser sometimes clears it.) - */ -#define PNG_FP_INVALID 512 /* Available for callers as a distinct value */ - -/* Result codes for the parser (boolean - true meants ok, false means - * not ok yet.) - */ -#define PNG_FP_MAYBE 0 /* The number may be valid in the future */ -#define PNG_FP_OK 1 /* The number is valid */ - -/* Tests on the sticky non-zero and negative flags. To pass these checks - * the state must also indicate that the whole number is valid - this is - * achieved by testing PNG_FP_SAW_DIGIT (see the implementation for why this - * is equivalent to PNG_FP_OK above.) - */ -#define PNG_FP_NZ_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NEGATIVE | PNG_FP_NONZERO) - /* NZ_MASK: the string is valid and a non-zero negative value */ -#define PNG_FP_Z_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NONZERO) - /* Z MASK: the string is valid and a non-zero value. */ - /* PNG_FP_SAW_DIGIT: the string is valid. */ -#define PNG_FP_IS_ZERO(state) (((state) & PNG_FP_Z_MASK) == PNG_FP_SAW_DIGIT) -#define PNG_FP_IS_POSITIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_Z_MASK) -#define PNG_FP_IS_NEGATIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_NZ_MASK) - -/* The actual parser. This can be called repeatedly. It updates - * the index into the string and the state variable (which must - * be initialized to 0). It returns a result code, as above. There - * is no point calling the parser any more if it fails to advance to - * the end of the string - it is stuck on an invalid character (or - * terminated by '\0'). - * - * Note that the pointer will consume an E or even an E+ and then leave - * a 'maybe' state even though a preceding integer.fraction is valid. - * The PNG_FP_WAS_VALID flag indicates that a preceding substring was - * a valid number. It's possible to recover from this by calling - * the parser again (from the start, with state 0) but with a string - * that omits the last character (i.e. set the size to the index of - * the problem character.) This has not been tested within libpng. - */ -PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string, - png_size_t size, int *statep, png_size_tp whereami),PNG_EMPTY); - -/* This is the same but it checks a complete string and returns true - * only if it just contains a floating point number. As of 1.5.4 this - * function also returns the state at the end of parsing the number if - * it was valid (otherwise it returns 0.) This can be used for testing - * for negative or zero values using the sticky flag. - */ -PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string, - png_size_t size),PNG_EMPTY); -#endif /* pCAL || sCAL */ - -#if defined(PNG_GAMMA_SUPPORTED) ||\ - defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED) -/* Added at libpng version 1.5.0 */ -/* This is a utility to provide a*times/div (rounded) and indicate - * if there is an overflow. The result is a boolean - false (0) - * for overflow, true (1) if no overflow, in which case *res - * holds the result. - */ -PNG_INTERNAL_FUNCTION(int,png_muldiv,(png_fixed_point_p res, png_fixed_point a, - png_int_32 multiplied_by, png_int_32 divided_by),PNG_EMPTY); -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED) -/* Same deal, but issue a warning on overflow and return 0. */ -PNG_INTERNAL_FUNCTION(png_fixed_point,png_muldiv_warn, - (png_const_structrp png_ptr, png_fixed_point a, png_int_32 multiplied_by, - png_int_32 divided_by),PNG_EMPTY); -#endif - -#ifdef PNG_GAMMA_SUPPORTED -/* Calculate a reciprocal - used for gamma values. This returns - * 0 if the argument is 0 in order to maintain an undefined value; - * there are no warnings. - */ -PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal,(png_fixed_point a), - PNG_EMPTY); - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* The same but gives a reciprocal of the product of two fixed point - * values. Accuracy is suitable for gamma calculations but this is - * not exact - use png_muldiv for that. Only required at present on read. - */ -PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal2,(png_fixed_point a, - png_fixed_point b),PNG_EMPTY); -#endif - -/* Return true if the gamma value is significantly different from 1.0 */ -PNG_INTERNAL_FUNCTION(int,png_gamma_significant,(png_fixed_point gamma_value), - PNG_EMPTY); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Internal fixed point gamma correction. These APIs are called as - * required to convert single values - they don't need to be fast, - * they are not used when processing image pixel values. - * - * While the input is an 'unsigned' value it must actually be the - * correct bit value - 0..255 or 0..65535 as required. - */ -PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_correct,(png_structrp png_ptr, - unsigned int value, png_fixed_point gamma_value),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_16bit_correct,(unsigned int value, - png_fixed_point gamma_value),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(png_byte,png_gamma_8bit_correct,(unsigned int value, - png_fixed_point gamma_value),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_destroy_gamma_table,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_build_gamma_table,(png_structrp png_ptr, - int bit_depth),PNG_EMPTY); -#endif - -/* SIMPLIFIED READ/WRITE SUPPORT */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -/* The internal structure that png_image::opaque points to. */ -typedef struct png_control -{ - png_structp png_ptr; - png_infop info_ptr; - png_voidp error_buf; /* Always a jmp_buf at present. */ - - png_const_bytep memory; /* Memory buffer. */ - png_size_t size; /* Size of the memory buffer. */ - - unsigned int for_write :1; /* Otherwise it is a read structure */ - unsigned int owned_file :1; /* We own the file in io_ptr */ -} png_control; - -/* Return the pointer to the jmp_buf from a png_control: necessary because C - * does not reveal the type of the elements of jmp_buf. - */ -#ifdef __cplusplus -# define png_control_jmp_buf(pc) (((jmp_buf*)((pc)->error_buf))[0]) -#else -# define png_control_jmp_buf(pc) ((pc)->error_buf) -#endif - -/* Utility to safely execute a piece of libpng code catching and logging any - * errors that might occur. Returns true on success, false on failure (either - * of the function or as a result of a png_error.) - */ -PNG_INTERNAL_CALLBACK(void,png_safe_error,(png_structp png_ptr, - png_const_charp error_message),PNG_NORETURN); - -#ifdef PNG_WARNINGS_SUPPORTED -PNG_INTERNAL_CALLBACK(void,png_safe_warning,(png_structp png_ptr, - png_const_charp warning_message),PNG_EMPTY); -#else -# define png_safe_warning 0/*dummy argument*/ -#endif - -PNG_INTERNAL_FUNCTION(int,png_safe_execute,(png_imagep image, - int (*function)(png_voidp), png_voidp arg),PNG_EMPTY); - -/* Utility to log an error; this also cleans up the png_image; the function - * always returns 0 (false). - */ -PNG_INTERNAL_FUNCTION(int,png_image_error,(png_imagep image, - png_const_charp error_message),PNG_EMPTY); - -#ifndef PNG_SIMPLIFIED_READ_SUPPORTED -/* png_image_free is used by the write code but not exported */ -PNG_INTERNAL_FUNCTION(void, png_image_free, (png_imagep image), PNG_EMPTY); -#endif /* !SIMPLIFIED_READ */ - -#endif /* SIMPLIFIED READ/WRITE */ - -/* These are initialization functions for hardware specific PNG filter - * optimizations; list these here then select the appropriate one at compile - * time using the macro PNG_FILTER_OPTIMIZATIONS. If the macro is not defined - * the generic code is used. - */ -#ifdef PNG_FILTER_OPTIMIZATIONS -PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr, - unsigned int bpp), PNG_EMPTY); - /* Just declare the optimization that will be used */ -#else - /* List *all* the possible optimizations here - this branch is required if - * the builder of libpng passes the definition of PNG_FILTER_OPTIMIZATIONS in - * CFLAGS in place of CPPFLAGS *and* uses symbol prefixing. - */ -# if PNG_ARM_NEON_OPT > 0 -PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon, - (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); -#endif - -#if PNG_MIPS_MSA_OPT > 0 -PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_msa, - (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); -#endif - -# if PNG_INTEL_SSE_IMPLEMENTATION > 0 -PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_sse2, - (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); -# endif -#endif - -PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, - png_const_charp key, png_bytep new_key), PNG_EMPTY); - -/* Maintainer: Put new private prototypes here ^ */ - -#include "pngdebug.h" - -#ifdef __cplusplus -} -#endif - -#endif /* PNG_VERSION_INFO_ONLY */ -#endif /* PNGPRIV_H */ diff --git a/src/png/libpng/pngread.c b/src/png/libpng/pngread.c deleted file mode 100644 index da32e9ad9..000000000 --- a/src/png/libpng/pngread.c +++ /dev/null @@ -1,4219 +0,0 @@ - -/* pngread.c - read a PNG file - * - * Last changed in libpng 1.6.33 [September 28, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file contains routines that an application calls directly to - * read a PNG file or stream. - */ - -#include "pngpriv.h" -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) && defined(PNG_STDIO_SUPPORTED) -# include -#endif - -#ifdef PNG_READ_SUPPORTED - -/* Create a PNG structure for reading, and allocate any memory needed. */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_read_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED) -{ -#ifndef PNG_USER_MEM_SUPPORTED - png_structp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, NULL, NULL, NULL); -#else - return png_create_read_struct_2(user_png_ver, error_ptr, error_fn, - warn_fn, NULL, NULL, NULL); -} - -/* Alternate create PNG structure for reading, and allocate any memory - * needed. - */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_read_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) -{ - png_structp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); -#endif /* USER_MEM */ - - if (png_ptr != NULL) - { - png_ptr->mode = PNG_IS_READ_STRUCT; - - /* Added in libpng-1.6.0; this can be used to detect a read structure if - * required (it will be zero in a write structure.) - */ -# ifdef PNG_SEQUENTIAL_READ_SUPPORTED - png_ptr->IDAT_read_size = PNG_IDAT_READ_SIZE; -# endif - -# ifdef PNG_BENIGN_READ_ERRORS_SUPPORTED - png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN; - - /* In stable builds only warn if an application error can be completely - * handled. - */ -# if PNG_RELEASE_BUILD - png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN; -# endif -# endif - - /* TODO: delay this, it can be done in png_init_io (if the app doesn't - * do it itself) avoiding setting the default function if it is not - * required. - */ - png_set_read_fn(png_ptr, NULL, NULL); - } - - return png_ptr; -} - - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the information before the actual image data. This has been - * changed in v0.90 to allow reading a file that already has the magic - * bytes read from the stream. You can tell libpng how many bytes have - * been read from the beginning of the stream (up to the maximum of 8) - * via png_set_sig_bytes(), and we will only check the remaining bytes - * here. The application can then have access to the signature bytes we - * read if it is determined that this isn't a valid PNG file. - */ -void PNGAPI -png_read_info(png_structrp png_ptr, png_inforp info_ptr) -{ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int keep; -#endif - - png_debug(1, "in png_read_info"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* Read and check the PNG file signature. */ - png_read_sig(png_ptr, info_ptr); - - for (;;) - { - png_uint_32 length = png_read_chunk_header(png_ptr); - png_uint_32 chunk_name = png_ptr->chunk_name; - - /* IDAT logic needs to happen here to simplify getting the two flags - * right. - */ - if (chunk_name == png_IDAT) - { - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "Missing IHDR before IDAT"); - - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - (png_ptr->mode & PNG_HAVE_PLTE) == 0) - png_chunk_error(png_ptr, "Missing PLTE before IDAT"); - - else if ((png_ptr->mode & PNG_AFTER_IDAT) != 0) - png_chunk_benign_error(png_ptr, "Too many IDATs found"); - - png_ptr->mode |= PNG_HAVE_IDAT; - } - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; - png_ptr->mode |= PNG_AFTER_IDAT; - } - - /* This should be a binary subdivision search or a hash for - * matching the chunk name rather than a linear search. - */ - if (chunk_name == png_IHDR) - png_handle_IHDR(png_ptr, info_ptr, length); - - else if (chunk_name == png_IEND) - png_handle_IEND(png_ptr, info_ptr, length); - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) - { - png_handle_unknown(png_ptr, info_ptr, length, keep); - - if (chunk_name == png_PLTE) - png_ptr->mode |= PNG_HAVE_PLTE; - - else if (chunk_name == png_IDAT) - { - png_ptr->idat_size = 0; /* It has been consumed */ - break; - } - } -#endif - else if (chunk_name == png_PLTE) - png_handle_PLTE(png_ptr, info_ptr, length); - - else if (chunk_name == png_IDAT) - { - png_ptr->idat_size = length; - break; - } - -#ifdef PNG_READ_bKGD_SUPPORTED - else if (chunk_name == png_bKGD) - png_handle_bKGD(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED - else if (chunk_name == png_cHRM) - png_handle_cHRM(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_eXIf_SUPPORTED - else if (chunk_name == png_eXIf) - png_handle_eXIf(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_gAMA_SUPPORTED - else if (chunk_name == png_gAMA) - png_handle_gAMA(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_hIST_SUPPORTED - else if (chunk_name == png_hIST) - png_handle_hIST(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED - else if (chunk_name == png_oFFs) - png_handle_oFFs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED - else if (chunk_name == png_pCAL) - png_handle_pCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED - else if (chunk_name == png_sCAL) - png_handle_sCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED - else if (chunk_name == png_pHYs) - png_handle_pHYs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED - else if (chunk_name == png_sBIT) - png_handle_sBIT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sRGB_SUPPORTED - else if (chunk_name == png_sRGB) - png_handle_sRGB(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iCCP_SUPPORTED - else if (chunk_name == png_iCCP) - png_handle_iCCP(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sPLT_SUPPORTED - else if (chunk_name == png_sPLT) - png_handle_sPLT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED - else if (chunk_name == png_tEXt) - png_handle_tEXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tIME_SUPPORTED - else if (chunk_name == png_tIME) - png_handle_tIME(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tRNS_SUPPORTED - else if (chunk_name == png_tRNS) - png_handle_tRNS(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED - else if (chunk_name == png_zTXt) - png_handle_zTXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iTXt_SUPPORTED - else if (chunk_name == png_iTXt) - png_handle_iTXt(png_ptr, info_ptr, length); -#endif - - else - png_handle_unknown(png_ptr, info_ptr, length, - PNG_HANDLE_CHUNK_AS_DEFAULT); - } -} -#endif /* SEQUENTIAL_READ */ - -/* Optional call to update the users info_ptr structure */ -void PNGAPI -png_read_update_info(png_structrp png_ptr, png_inforp info_ptr) -{ - png_debug(1, "in png_read_update_info"); - - if (png_ptr != NULL) - { - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - { - png_read_start_row(png_ptr); - -# ifdef PNG_READ_TRANSFORMS_SUPPORTED - png_read_transform_info(png_ptr, info_ptr); -# else - PNG_UNUSED(info_ptr) -# endif - } - - /* New in 1.6.0 this avoids the bug of doing the initializations twice */ - else - png_app_error(png_ptr, - "png_read_update_info/png_start_read_image: duplicate call"); - } -} - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Initialize palette, background, etc, after transformations - * are set, but before any reading takes place. This allows - * the user to obtain a gamma-corrected palette, for example. - * If the user doesn't call this, we will do it ourselves. - */ -void PNGAPI -png_start_read_image(png_structrp png_ptr) -{ - png_debug(1, "in png_start_read_image"); - - if (png_ptr != NULL) - { - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - png_read_start_row(png_ptr); - - /* New in 1.6.0 this avoids the bug of doing the initializations twice */ - else - png_app_error(png_ptr, - "png_start_read_image/png_read_update_info: duplicate call"); - } -} -#endif /* SEQUENTIAL_READ */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -#ifdef PNG_MNG_FEATURES_SUPPORTED -/* Undoes intrapixel differencing, - * NOTE: this is apparently only supported in the 'sequential' reader. - */ -static void -png_do_read_intrapixel(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_read_intrapixel"); - - if ( - (row_info->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - int bytes_per_pixel; - png_uint_32 row_width = row_info->width; - - if (row_info->bit_depth == 8) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 3; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 4; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - *(rp) = (png_byte)((256 + *rp + *(rp + 1)) & 0xff); - *(rp+2) = (png_byte)((256 + *(rp + 2) + *(rp + 1)) & 0xff); - } - } - else if (row_info->bit_depth == 16) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 6; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 8; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - png_uint_32 s0 = (png_uint_32)(*(rp ) << 8) | *(rp + 1); - png_uint_32 s1 = (png_uint_32)(*(rp + 2) << 8) | *(rp + 3); - png_uint_32 s2 = (png_uint_32)(*(rp + 4) << 8) | *(rp + 5); - png_uint_32 red = (s0 + s1 + 65536) & 0xffff; - png_uint_32 blue = (s2 + s1 + 65536) & 0xffff; - *(rp ) = (png_byte)((red >> 8) & 0xff); - *(rp + 1) = (png_byte)(red & 0xff); - *(rp + 4) = (png_byte)((blue >> 8) & 0xff); - *(rp + 5) = (png_byte)(blue & 0xff); - } - } - } -} -#endif /* MNG_FEATURES */ - -void PNGAPI -png_read_row(png_structrp png_ptr, png_bytep row, png_bytep dsp_row) -{ - png_row_info row_info; - - if (png_ptr == NULL) - return; - - png_debug2(1, "in png_read_row (row %lu, pass %d)", - (unsigned long)png_ptr->row_number, png_ptr->pass); - - /* png_read_start_row sets the information (in particular iwidth) for this - * interlace pass. - */ - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - png_read_start_row(png_ptr); - - /* 1.5.6: row_info moved out of png_struct to a local here. */ - row_info.width = png_ptr->iwidth; /* NOTE: width of current interlaced row */ - row_info.color_type = png_ptr->color_type; - row_info.bit_depth = png_ptr->bit_depth; - row_info.channels = png_ptr->channels; - row_info.pixel_depth = png_ptr->pixel_depth; - row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width); - -#ifdef PNG_WARNINGS_SUPPORTED - if (png_ptr->row_number == 0 && png_ptr->pass == 0) - { - /* Check for transforms that have been set but were defined out */ -#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED) - if ((png_ptr->transformations & PNG_INVERT_MONO) != 0) - png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED) - if ((png_ptr->transformations & PNG_FILLER) != 0) - png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \ - !defined(PNG_READ_PACKSWAP_SUPPORTED) - if ((png_ptr->transformations & PNG_PACKSWAP) != 0) - png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED) - if ((png_ptr->transformations & PNG_PACK) != 0) - png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) - if ((png_ptr->transformations & PNG_SHIFT) != 0) - png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED) - if ((png_ptr->transformations & PNG_BGR) != 0) - png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED) - if ((png_ptr->transformations & PNG_SWAP_BYTES) != 0) - png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined"); -#endif - } -#endif /* WARNINGS */ - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* If interlaced and we do not need a new row, combine row and return. - * Notice that the pixels we have from previous rows have been transformed - * already; we can only combine like with like (transformed or - * untransformed) and, because of the libpng API for interlaced images, this - * means we must transform before de-interlacing. - */ - if (png_ptr->interlaced != 0 && - (png_ptr->transformations & PNG_INTERLACE) != 0) - { - switch (png_ptr->pass) - { - case 0: - if (png_ptr->row_number & 0x07) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - png_read_finish_row(png_ptr); - return; - } - break; - - case 1: - if ((png_ptr->row_number & 0x07) || png_ptr->width < 5) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 2: - if ((png_ptr->row_number & 0x07) != 4) - { - if (dsp_row != NULL && (png_ptr->row_number & 4)) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 3: - if ((png_ptr->row_number & 3) || png_ptr->width < 3) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 4: - if ((png_ptr->row_number & 3) != 2) - { - if (dsp_row != NULL && (png_ptr->row_number & 2)) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 5: - if ((png_ptr->row_number & 1) || png_ptr->width < 2) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - default: - case 6: - if ((png_ptr->row_number & 1) == 0) - { - png_read_finish_row(png_ptr); - return; - } - break; - } - } -#endif - - if ((png_ptr->mode & PNG_HAVE_IDAT) == 0) - png_error(png_ptr, "Invalid attempt to read row data"); - - /* Fill the row with IDAT data: */ - png_ptr->row_buf[0]=255; /* to force error if no data was found */ - png_read_IDAT_data(png_ptr, png_ptr->row_buf, row_info.rowbytes + 1); - - if (png_ptr->row_buf[0] > PNG_FILTER_VALUE_NONE) - { - if (png_ptr->row_buf[0] < PNG_FILTER_VALUE_LAST) - png_read_filter_row(png_ptr, &row_info, png_ptr->row_buf + 1, - png_ptr->prev_row + 1, png_ptr->row_buf[0]); - else - png_error(png_ptr, "bad adaptive filter value"); - } - - /* libpng 1.5.6: the following line was copying png_ptr->rowbytes before - * 1.5.6, while the buffer really is this big in current versions of libpng - * it may not be in the future, so this was changed just to copy the - * interlaced count: - */ - memcpy(png_ptr->prev_row, png_ptr->row_buf, row_info.rowbytes + 1); - -#ifdef PNG_MNG_FEATURES_SUPPORTED - if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 && - (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING)) - { - /* Intrapixel differencing */ - png_do_read_intrapixel(&row_info, png_ptr->row_buf + 1); - } -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - if (png_ptr->transformations) - png_do_read_transformations(png_ptr, &row_info); -#endif - - /* The transformed pixel depth should match the depth now in row_info. */ - if (png_ptr->transformed_pixel_depth == 0) - { - png_ptr->transformed_pixel_depth = row_info.pixel_depth; - if (row_info.pixel_depth > png_ptr->maximum_pixel_depth) - png_error(png_ptr, "sequential row overflow"); - } - - else if (png_ptr->transformed_pixel_depth != row_info.pixel_depth) - png_error(png_ptr, "internal sequential row size calculation error"); - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Expand interlaced rows to full size */ - if (png_ptr->interlaced != 0 && - (png_ptr->transformations & PNG_INTERLACE) != 0) - { - if (png_ptr->pass < 6) - png_do_read_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass, - png_ptr->transformations); - - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - if (row != NULL) - png_combine_row(png_ptr, row, 0/*row*/); - } - - else -#endif - { - if (row != NULL) - png_combine_row(png_ptr, row, -1/*ignored*/); - - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, -1/*ignored*/); - } - png_read_finish_row(png_ptr); - - if (png_ptr->read_row_fn != NULL) - (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); - -} -#endif /* SEQUENTIAL_READ */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read one or more rows of image data. If the image is interlaced, - * and png_set_interlace_handling() has been called, the rows need to - * contain the contents of the rows from the previous pass. If the - * image has alpha or transparency, and png_handle_alpha()[*] has been - * called, the rows contents must be initialized to the contents of the - * screen. - * - * "row" holds the actual image, and pixels are placed in it - * as they arrive. If the image is displayed after each pass, it will - * appear to "sparkle" in. "display_row" can be used to display a - * "chunky" progressive image, with finer detail added as it becomes - * available. If you do not want this "chunky" display, you may pass - * NULL for display_row. If you do not want the sparkle display, and - * you have not called png_handle_alpha(), you may pass NULL for rows. - * If you have called png_handle_alpha(), and the image has either an - * alpha channel or a transparency chunk, you must provide a buffer for - * rows. In this case, you do not have to provide a display_row buffer - * also, but you may. If the image is not interlaced, or if you have - * not called png_set_interlace_handling(), the display_row buffer will - * be ignored, so pass NULL to it. - * - * [*] png_handle_alpha() does not exist yet, as of this version of libpng - */ - -void PNGAPI -png_read_rows(png_structrp png_ptr, png_bytepp row, - png_bytepp display_row, png_uint_32 num_rows) -{ - png_uint_32 i; - png_bytepp rp; - png_bytepp dp; - - png_debug(1, "in png_read_rows"); - - if (png_ptr == NULL) - return; - - rp = row; - dp = display_row; - if (rp != NULL && dp != NULL) - for (i = 0; i < num_rows; i++) - { - png_bytep rptr = *rp++; - png_bytep dptr = *dp++; - - png_read_row(png_ptr, rptr, dptr); - } - - else if (rp != NULL) - for (i = 0; i < num_rows; i++) - { - png_bytep rptr = *rp; - png_read_row(png_ptr, rptr, NULL); - rp++; - } - - else if (dp != NULL) - for (i = 0; i < num_rows; i++) - { - png_bytep dptr = *dp; - png_read_row(png_ptr, NULL, dptr); - dp++; - } -} -#endif /* SEQUENTIAL_READ */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the entire image. If the image has an alpha channel or a tRNS - * chunk, and you have called png_handle_alpha()[*], you will need to - * initialize the image to the current image that PNG will be overlaying. - * We set the num_rows again here, in case it was incorrectly set in - * png_read_start_row() by a call to png_read_update_info() or - * png_start_read_image() if png_set_interlace_handling() wasn't called - * prior to either of these functions like it should have been. You can - * only call this function once. If you desire to have an image for - * each pass of a interlaced image, use png_read_rows() instead. - * - * [*] png_handle_alpha() does not exist yet, as of this version of libpng - */ -void PNGAPI -png_read_image(png_structrp png_ptr, png_bytepp image) -{ - png_uint_32 i, image_height; - int pass, j; - png_bytepp rp; - - png_debug(1, "in png_read_image"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_READ_INTERLACING_SUPPORTED - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - { - pass = png_set_interlace_handling(png_ptr); - /* And make sure transforms are initialized. */ - png_start_read_image(png_ptr); - } - else - { - if (png_ptr->interlaced != 0 && - (png_ptr->transformations & PNG_INTERLACE) == 0) - { - /* Caller called png_start_read_image or png_read_update_info without - * first turning on the PNG_INTERLACE transform. We can fix this here, - * but the caller should do it! - */ - png_warning(png_ptr, "Interlace handling should be turned on when " - "using png_read_image"); - /* Make sure this is set correctly */ - png_ptr->num_rows = png_ptr->height; - } - - /* Obtain the pass number, which also turns on the PNG_INTERLACE flag in - * the above error case. - */ - pass = png_set_interlace_handling(png_ptr); - } -#else - if (png_ptr->interlaced) - png_error(png_ptr, - "Cannot read interlaced image -- interlace handler disabled"); - - pass = 1; -#endif - - image_height=png_ptr->height; - - for (j = 0; j < pass; j++) - { - rp = image; - for (i = 0; i < image_height; i++) - { - png_read_row(png_ptr, *rp, NULL); - rp++; - } - } -} -#endif /* SEQUENTIAL_READ */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the end of the PNG file. Will not read past the end of the - * file, will verify the end is accurate, and will read any comments - * or time information at the end of the file, if info is not NULL. - */ -void PNGAPI -png_read_end(png_structrp png_ptr, png_inforp info_ptr) -{ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int keep; -#endif - - png_debug(1, "in png_read_end"); - - if (png_ptr == NULL) - return; - - /* If png_read_end is called in the middle of reading the rows there may - * still be pending IDAT data and an owned zstream. Deal with this here. - */ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - if (png_chunk_unknown_handling(png_ptr, png_IDAT) == 0) -#endif - png_read_finish_IDAT(png_ptr); - -#ifdef PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Report invalid palette index; added at libng-1.5.10 */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - png_ptr->num_palette_max > png_ptr->num_palette) - png_benign_error(png_ptr, "Read palette index exceeding num_palette"); -#endif - - do - { - png_uint_32 length = png_read_chunk_header(png_ptr); - png_uint_32 chunk_name = png_ptr->chunk_name; - - if (chunk_name != png_IDAT) - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; - - if (chunk_name == png_IEND) - png_handle_IEND(png_ptr, info_ptr, length); - - else if (chunk_name == png_IHDR) - png_handle_IHDR(png_ptr, info_ptr, length); - - else if (info_ptr == NULL) - png_crc_finish(png_ptr, length); - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) - { - if (chunk_name == png_IDAT) - { - if ((length > 0 && !(png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)) - || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT) != 0) - png_benign_error(png_ptr, ".Too many IDATs found"); - } - png_handle_unknown(png_ptr, info_ptr, length, keep); - if (chunk_name == png_PLTE) - png_ptr->mode |= PNG_HAVE_PLTE; - } -#endif - - else if (chunk_name == png_IDAT) - { - /* Zero length IDATs are legal after the last IDAT has been - * read, but not after other chunks have been read. 1.6 does not - * always read all the deflate data; specifically it cannot be relied - * upon to read the Adler32 at the end. If it doesn't ignore IDAT - * chunks which are longer than zero as well: - */ - if ((length > 0 && !(png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)) - || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT) != 0) - png_benign_error(png_ptr, "..Too many IDATs found"); - - png_crc_finish(png_ptr, length); - } - else if (chunk_name == png_PLTE) - png_handle_PLTE(png_ptr, info_ptr, length); - -#ifdef PNG_READ_bKGD_SUPPORTED - else if (chunk_name == png_bKGD) - png_handle_bKGD(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED - else if (chunk_name == png_cHRM) - png_handle_cHRM(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_eXIf_SUPPORTED - else if (chunk_name == png_eXIf) - png_handle_eXIf(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_gAMA_SUPPORTED - else if (chunk_name == png_gAMA) - png_handle_gAMA(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_hIST_SUPPORTED - else if (chunk_name == png_hIST) - png_handle_hIST(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED - else if (chunk_name == png_oFFs) - png_handle_oFFs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED - else if (chunk_name == png_pCAL) - png_handle_pCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED - else if (chunk_name == png_sCAL) - png_handle_sCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED - else if (chunk_name == png_pHYs) - png_handle_pHYs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED - else if (chunk_name == png_sBIT) - png_handle_sBIT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sRGB_SUPPORTED - else if (chunk_name == png_sRGB) - png_handle_sRGB(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iCCP_SUPPORTED - else if (chunk_name == png_iCCP) - png_handle_iCCP(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sPLT_SUPPORTED - else if (chunk_name == png_sPLT) - png_handle_sPLT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED - else if (chunk_name == png_tEXt) - png_handle_tEXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tIME_SUPPORTED - else if (chunk_name == png_tIME) - png_handle_tIME(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tRNS_SUPPORTED - else if (chunk_name == png_tRNS) - png_handle_tRNS(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED - else if (chunk_name == png_zTXt) - png_handle_zTXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iTXt_SUPPORTED - else if (chunk_name == png_iTXt) - png_handle_iTXt(png_ptr, info_ptr, length); -#endif - - else - png_handle_unknown(png_ptr, info_ptr, length, - PNG_HANDLE_CHUNK_AS_DEFAULT); - } while ((png_ptr->mode & PNG_HAVE_IEND) == 0); -} -#endif /* SEQUENTIAL_READ */ - -/* Free all memory used in the read struct */ -static void -png_read_destroy(png_structrp png_ptr) -{ - png_debug(1, "in png_read_destroy"); - -#ifdef PNG_READ_GAMMA_SUPPORTED - png_destroy_gamma_table(png_ptr); -#endif - - png_free(png_ptr, png_ptr->big_row_buf); - png_ptr->big_row_buf = NULL; - png_free(png_ptr, png_ptr->big_prev_row); - png_ptr->big_prev_row = NULL; - png_free(png_ptr, png_ptr->read_buffer); - png_ptr->read_buffer = NULL; - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - png_free(png_ptr, png_ptr->palette_lookup); - png_ptr->palette_lookup = NULL; - png_free(png_ptr, png_ptr->quantize_index); - png_ptr->quantize_index = NULL; -#endif - - if ((png_ptr->free_me & PNG_FREE_PLTE) != 0) - { - png_zfree(png_ptr, png_ptr->palette); - png_ptr->palette = NULL; - } - png_ptr->free_me &= ~PNG_FREE_PLTE; - -#if defined(PNG_tRNS_SUPPORTED) || \ - defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - if ((png_ptr->free_me & PNG_FREE_TRNS) != 0) - { - png_free(png_ptr, png_ptr->trans_alpha); - png_ptr->trans_alpha = NULL; - } - png_ptr->free_me &= ~PNG_FREE_TRNS; -#endif - - inflateEnd(&png_ptr->zstream); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_free(png_ptr, png_ptr->save_buffer); - png_ptr->save_buffer = NULL; -#endif - -#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) && \ - defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) - png_free(png_ptr, png_ptr->unknown_chunk.data); - png_ptr->unknown_chunk.data = NULL; -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - png_free(png_ptr, png_ptr->chunk_list); - png_ptr->chunk_list = NULL; -#endif - - /* NOTE: the 'setjmp' buffer may still be allocated and the memory and error - * callbacks are still set at this point. They are required to complete the - * destruction of the png_struct itself. - */ -} - -/* Free all memory used by the read */ -void PNGAPI -png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, - png_infopp end_info_ptr_ptr) -{ - png_structrp png_ptr = NULL; - - png_debug(1, "in png_destroy_read_struct"); - - if (png_ptr_ptr != NULL) - png_ptr = *png_ptr_ptr; - - if (png_ptr == NULL) - return; - - /* libpng 1.6.0: use the API to destroy info structs to ensure consistent - * behavior. Prior to 1.6.0 libpng did extra 'info' destruction in this API. - * The extra was, apparently, unnecessary yet this hides memory leak bugs. - */ - png_destroy_info_struct(png_ptr, end_info_ptr_ptr); - png_destroy_info_struct(png_ptr, info_ptr_ptr); - - *png_ptr_ptr = NULL; - png_read_destroy(png_ptr); - png_destroy_png_struct(png_ptr); -} - -void PNGAPI -png_set_read_status_fn(png_structrp png_ptr, png_read_status_ptr read_row_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->read_row_fn = read_row_fn; -} - - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -#ifdef PNG_INFO_IMAGE_SUPPORTED -void PNGAPI -png_read_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, voidp params) -{ - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* png_read_info() gives us all of the information from the - * PNG file before the first IDAT (image data chunk). - */ - png_read_info(png_ptr, info_ptr); - if (info_ptr->height > PNG_UINT_32_MAX/(sizeof (png_bytep))) - png_error(png_ptr, "Image is too high to process with png_read_png()"); - - /* -------------- image transformations start here ------------------- */ - /* libpng 1.6.10: add code to cause a png_app_error if a selected TRANSFORM - * is not implemented. This will only happen in de-configured (non-default) - * libpng builds. The results can be unexpected - png_read_png may return - * short or mal-formed rows because the transform is skipped. - */ - - /* Tell libpng to strip 16-bit/color files down to 8 bits per color. - */ - if ((transforms & PNG_TRANSFORM_SCALE_16) != 0) - /* Added at libpng-1.5.4. "strip_16" produces the same result that it - * did in earlier versions, while "scale_16" is now more accurate. - */ -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_set_scale_16(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SCALE_16 not supported"); -#endif - - /* If both SCALE and STRIP are required pngrtran will effectively cancel the - * latter by doing SCALE first. This is ok and allows apps not to check for - * which is supported to get the right answer. - */ - if ((transforms & PNG_TRANSFORM_STRIP_16) != 0) -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - png_set_strip_16(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_STRIP_16 not supported"); -#endif - - /* Strip alpha bytes from the input data without combining with - * the background (not recommended). - */ - if ((transforms & PNG_TRANSFORM_STRIP_ALPHA) != 0) -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - png_set_strip_alpha(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_STRIP_ALPHA not supported"); -#endif - - /* Extract multiple pixels with bit depths of 1, 2, or 4 from a single - * byte into separate bytes (useful for paletted and grayscale images). - */ - if ((transforms & PNG_TRANSFORM_PACKING) != 0) -#ifdef PNG_READ_PACK_SUPPORTED - png_set_packing(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_PACKING not supported"); -#endif - - /* Change the order of packed pixels to least significant bit first - * (not useful if you are using png_set_packing). - */ - if ((transforms & PNG_TRANSFORM_PACKSWAP) != 0) -#ifdef PNG_READ_PACKSWAP_SUPPORTED - png_set_packswap(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_PACKSWAP not supported"); -#endif - - /* Expand paletted colors into true RGB triplets - * Expand grayscale images to full 8 bits from 1, 2, or 4 bits/pixel - * Expand paletted or RGB images with transparency to full alpha - * channels so the data will be available as RGBA quartets. - */ - if ((transforms & PNG_TRANSFORM_EXPAND) != 0) -#ifdef PNG_READ_EXPAND_SUPPORTED - png_set_expand(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_EXPAND not supported"); -#endif - - /* We don't handle background color or gamma transformation or quantizing. - */ - - /* Invert monochrome files to have 0 as white and 1 as black - */ - if ((transforms & PNG_TRANSFORM_INVERT_MONO) != 0) -#ifdef PNG_READ_INVERT_SUPPORTED - png_set_invert_mono(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_MONO not supported"); -#endif - - /* If you want to shift the pixel values from the range [0,255] or - * [0,65535] to the original [0,7] or [0,31], or whatever range the - * colors were originally in: - */ - if ((transforms & PNG_TRANSFORM_SHIFT) != 0) -#ifdef PNG_READ_SHIFT_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sBIT) != 0) - png_set_shift(png_ptr, &info_ptr->sig_bit); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SHIFT not supported"); -#endif - - /* Flip the RGB pixels to BGR (or RGBA to BGRA) */ - if ((transforms & PNG_TRANSFORM_BGR) != 0) -#ifdef PNG_READ_BGR_SUPPORTED - png_set_bgr(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_BGR not supported"); -#endif - - /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */ - if ((transforms & PNG_TRANSFORM_SWAP_ALPHA) != 0) -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED - png_set_swap_alpha(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ALPHA not supported"); -#endif - - /* Swap bytes of 16-bit files to least significant byte first */ - if ((transforms & PNG_TRANSFORM_SWAP_ENDIAN) != 0) -#ifdef PNG_READ_SWAP_SUPPORTED - png_set_swap(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ENDIAN not supported"); -#endif - -/* Added at libpng-1.2.41 */ - /* Invert the alpha channel from opacity to transparency */ - if ((transforms & PNG_TRANSFORM_INVERT_ALPHA) != 0) -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - png_set_invert_alpha(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_ALPHA not supported"); -#endif - -/* Added at libpng-1.2.41 */ - /* Expand grayscale image to RGB */ - if ((transforms & PNG_TRANSFORM_GRAY_TO_RGB) != 0) -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - png_set_gray_to_rgb(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_GRAY_TO_RGB not supported"); -#endif - -/* Added at libpng-1.5.4 */ - if ((transforms & PNG_TRANSFORM_EXPAND_16) != 0) -#ifdef PNG_READ_EXPAND_16_SUPPORTED - png_set_expand_16(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_EXPAND_16 not supported"); -#endif - - /* We don't handle adding filler bytes */ - - /* We use png_read_image and rely on that for interlace handling, but we also - * call png_read_update_info therefore must turn on interlace handling now: - */ - (void)png_set_interlace_handling(png_ptr); - - /* Optional call to gamma correct and add the background to the palette - * and update info structure. REQUIRED if you are expecting libpng to - * update the palette for you (i.e., you selected such a transform above). - */ - png_read_update_info(png_ptr, info_ptr); - - /* -------------- image transformations end here ------------------- */ - - png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0); - if (info_ptr->row_pointers == NULL) - { - png_uint_32 iptr; - - info_ptr->row_pointers = png_voidcast(png_bytepp, png_malloc(png_ptr, - info_ptr->height * (sizeof (png_bytep)))); - - for (iptr=0; iptrheight; iptr++) - info_ptr->row_pointers[iptr] = NULL; - - info_ptr->free_me |= PNG_FREE_ROWS; - - for (iptr = 0; iptr < info_ptr->height; iptr++) - info_ptr->row_pointers[iptr] = png_voidcast(png_bytep, - png_malloc(png_ptr, info_ptr->rowbytes)); - } - - png_read_image(png_ptr, info_ptr->row_pointers); - info_ptr->valid |= PNG_INFO_IDAT; - - /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */ - png_read_end(png_ptr, info_ptr); - - PNG_UNUSED(params) -} -#endif /* INFO_IMAGE */ -#endif /* SEQUENTIAL_READ */ - -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -/* SIMPLIFIED READ - * - * This code currently relies on the sequential reader, though it could easily - * be made to work with the progressive one. - */ -/* Arguments to png_image_finish_read: */ - -/* Encoding of PNG data (used by the color-map code) */ -# define P_NOTSET 0 /* File encoding not yet known */ -# define P_sRGB 1 /* 8-bit encoded to sRGB gamma */ -# define P_LINEAR 2 /* 16-bit linear: not encoded, NOT pre-multiplied! */ -# define P_FILE 3 /* 8-bit encoded to file gamma, not sRGB or linear */ -# define P_LINEAR8 4 /* 8-bit linear: only from a file value */ - -/* Color-map processing: after libpng has run on the PNG image further - * processing may be needed to convert the data to color-map indices. - */ -#define PNG_CMAP_NONE 0 -#define PNG_CMAP_GA 1 /* Process GA data to a color-map with alpha */ -#define PNG_CMAP_TRANS 2 /* Process GA data to a background index */ -#define PNG_CMAP_RGB 3 /* Process RGB data */ -#define PNG_CMAP_RGB_ALPHA 4 /* Process RGBA data */ - -/* The following document where the background is for each processing case. */ -#define PNG_CMAP_NONE_BACKGROUND 256 -#define PNG_CMAP_GA_BACKGROUND 231 -#define PNG_CMAP_TRANS_BACKGROUND 254 -#define PNG_CMAP_RGB_BACKGROUND 256 -#define PNG_CMAP_RGB_ALPHA_BACKGROUND 216 - -typedef struct -{ - /* Arguments: */ - png_imagep image; - png_voidp buffer; - png_int_32 row_stride; - png_voidp colormap; - png_const_colorp background; - /* Local variables: */ - png_voidp local_row; - png_voidp first_row; - ptrdiff_t row_bytes; /* step between rows */ - int file_encoding; /* E_ values above */ - png_fixed_point gamma_to_linear; /* For P_FILE, reciprocal of gamma */ - int colormap_processing; /* PNG_CMAP_ values above */ -} png_image_read_control; - -/* Do all the *safe* initialization - 'safe' means that png_error won't be - * called, so setting up the jmp_buf is not required. This means that anything - * called from here must *not* call png_malloc - it has to call png_malloc_warn - * instead so that control is returned safely back to this routine. - */ -static int -png_image_read_init(png_imagep image) -{ - if (image->opaque == NULL) - { - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, image, - png_safe_error, png_safe_warning); - - /* And set the rest of the structure to NULL to ensure that the various - * fields are consistent. - */ - memset(image, 0, (sizeof *image)); - image->version = PNG_IMAGE_VERSION; - - if (png_ptr != NULL) - { - png_infop info_ptr = png_create_info_struct(png_ptr); - - if (info_ptr != NULL) - { - png_controlp control = png_voidcast(png_controlp, - png_malloc_warn(png_ptr, (sizeof *control))); - - if (control != NULL) - { - memset(control, 0, (sizeof *control)); - - control->png_ptr = png_ptr; - control->info_ptr = info_ptr; - control->for_write = 0; - - image->opaque = control; - return 1; - } - - /* Error clean up */ - png_destroy_info_struct(png_ptr, &info_ptr); - } - - png_destroy_read_struct(&png_ptr, NULL, NULL); - } - - return png_image_error(image, "png_image_read: out of memory"); - } - - return png_image_error(image, "png_image_read: opaque pointer not NULL"); -} - -/* Utility to find the base format of a PNG file from a png_struct. */ -static png_uint_32 -png_image_format(png_structrp png_ptr) -{ - png_uint_32 format = 0; - - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - format |= PNG_FORMAT_FLAG_COLOR; - - if ((png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0) - format |= PNG_FORMAT_FLAG_ALPHA; - - /* Use png_ptr here, not info_ptr, because by examination png_handle_tRNS - * sets the png_struct fields; that's all we are interested in here. The - * precise interaction with an app call to png_set_tRNS and PNG file reading - * is unclear. - */ - else if (png_ptr->num_trans > 0) - format |= PNG_FORMAT_FLAG_ALPHA; - - if (png_ptr->bit_depth == 16) - format |= PNG_FORMAT_FLAG_LINEAR; - - if ((png_ptr->color_type & PNG_COLOR_MASK_PALETTE) != 0) - format |= PNG_FORMAT_FLAG_COLORMAP; - - return format; -} - -/* Is the given gamma significantly different from sRGB? The test is the same - * one used in pngrtran.c when deciding whether to do gamma correction. The - * arithmetic optimizes the division by using the fact that the inverse of the - * file sRGB gamma is 2.2 - */ -static int -png_gamma_not_sRGB(png_fixed_point g) -{ - if (g < PNG_FP_1) - { - /* An uninitialized gamma is assumed to be sRGB for the simplified API. */ - if (g == 0) - return 0; - - return png_gamma_significant((g * 11 + 2)/5 /* i.e. *2.2, rounded */); - } - - return 1; -} - -/* Do the main body of a 'png_image_begin_read' function; read the PNG file - * header and fill in all the information. This is executed in a safe context, - * unlike the init routine above. - */ -static int -png_image_read_header(png_voidp argument) -{ - png_imagep image = png_voidcast(png_imagep, argument); - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED - png_set_benign_errors(png_ptr, 1/*warn*/); -#endif - png_read_info(png_ptr, info_ptr); - - /* Do this the fast way; just read directly out of png_struct. */ - image->width = png_ptr->width; - image->height = png_ptr->height; - - { - png_uint_32 format = png_image_format(png_ptr); - - image->format = format; - -#ifdef PNG_COLORSPACE_SUPPORTED - /* Does the colorspace match sRGB? If there is no color endpoint - * (colorant) information assume yes, otherwise require the - * 'ENDPOINTS_MATCHP_sRGB' colorspace flag to have been set. If the - * colorspace has been determined to be invalid ignore it. - */ - if ((format & PNG_FORMAT_FLAG_COLOR) != 0 && ((png_ptr->colorspace.flags - & (PNG_COLORSPACE_HAVE_ENDPOINTS|PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB| - PNG_COLORSPACE_INVALID)) == PNG_COLORSPACE_HAVE_ENDPOINTS)) - image->flags |= PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB; -#endif - } - - /* We need the maximum number of entries regardless of the format the - * application sets here. - */ - { - png_uint_32 cmap_entries; - - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_GRAY: - cmap_entries = 1U << png_ptr->bit_depth; - break; - - case PNG_COLOR_TYPE_PALETTE: - cmap_entries = (png_uint_32)png_ptr->num_palette; - break; - - default: - cmap_entries = 256; - break; - } - - if (cmap_entries > 256) - cmap_entries = 256; - - image->colormap_entries = cmap_entries; - } - - return 1; -} - -#ifdef PNG_STDIO_SUPPORTED -int PNGAPI -png_image_begin_read_from_stdio(png_imagep image, FILE* file) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file != NULL) - { - if (png_image_read_init(image) != 0) - { - /* This is slightly evil, but png_init_io doesn't do anything other - * than this and we haven't changed the standard IO functions so - * this saves a 'safe' function. - */ - image->opaque->png_ptr->io_ptr = file; - return png_safe_execute(image, png_image_read_header, image); - } - } - - else - return png_image_error(image, - "png_image_begin_read_from_stdio: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_begin_read_from_stdio: incorrect PNG_IMAGE_VERSION"); - - return 0; -} - -int PNGAPI -png_image_begin_read_from_file(png_imagep image, const char *file_name) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file_name != NULL) - { - FILE *fp = fopen(file_name, "rb"); - - if (fp != NULL) - { - if (png_image_read_init(image) != 0) - { - image->opaque->png_ptr->io_ptr = fp; - image->opaque->owned_file = 1; - return png_safe_execute(image, png_image_read_header, image); - } - - /* Clean up: just the opened file. */ - (void)fclose(fp); - } - - else - return png_image_error(image, strerror(errno)); - } - - else - return png_image_error(image, - "png_image_begin_read_from_file: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_begin_read_from_file: incorrect PNG_IMAGE_VERSION"); - - return 0; -} -#endif /* STDIO */ - -static void PNGCBAPI -png_image_memory_read(png_structp png_ptr, png_bytep out, png_size_t need) -{ - if (png_ptr != NULL) - { - png_imagep image = png_voidcast(png_imagep, png_ptr->io_ptr); - if (image != NULL) - { - png_controlp cp = image->opaque; - if (cp != NULL) - { - png_const_bytep memory = cp->memory; - png_size_t size = cp->size; - - if (memory != NULL && size >= need) - { - memcpy(out, memory, need); - cp->memory = memory + need; - cp->size = size - need; - return; - } - - png_error(png_ptr, "read beyond end of data"); - } - } - - png_error(png_ptr, "invalid memory read"); - } -} - -int PNGAPI png_image_begin_read_from_memory(png_imagep image, - png_const_voidp memory, png_size_t size) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (memory != NULL && size > 0) - { - if (png_image_read_init(image) != 0) - { - /* Now set the IO functions to read from the memory buffer and - * store it into io_ptr. Again do this in-place to avoid calling a - * libpng function that requires error handling. - */ - image->opaque->memory = png_voidcast(png_const_bytep, memory); - image->opaque->size = size; - image->opaque->png_ptr->io_ptr = image; - image->opaque->png_ptr->read_data_fn = png_image_memory_read; - - return png_safe_execute(image, png_image_read_header, image); - } - } - - else - return png_image_error(image, - "png_image_begin_read_from_memory: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_begin_read_from_memory: incorrect PNG_IMAGE_VERSION"); - - return 0; -} - -/* Utility function to skip chunks that are not used by the simplified image - * read functions and an appropriate macro to call it. - */ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -static void -png_image_skip_unused_chunks(png_structrp png_ptr) -{ - /* Prepare the reader to ignore all recognized chunks whose data will not - * be used, i.e., all chunks recognized by libpng except for those - * involved in basic image reading: - * - * IHDR, PLTE, IDAT, IEND - * - * Or image data handling: - * - * tRNS, bKGD, gAMA, cHRM, sRGB, [iCCP] and sBIT. - * - * This provides a small performance improvement and eliminates any - * potential vulnerability to security problems in the unused chunks. - * - * At present the iCCP chunk data isn't used, so iCCP chunk can be ignored - * too. This allows the simplified API to be compiled without iCCP support, - * however if the support is there the chunk is still checked to detect - * errors (which are unfortunately quite common.) - */ - { - static PNG_CONST png_byte chunks_to_process[] = { - 98, 75, 71, 68, '\0', /* bKGD */ - 99, 72, 82, 77, '\0', /* cHRM */ - 103, 65, 77, 65, '\0', /* gAMA */ -# ifdef PNG_READ_iCCP_SUPPORTED - 105, 67, 67, 80, '\0', /* iCCP */ -# endif - 115, 66, 73, 84, '\0', /* sBIT */ - 115, 82, 71, 66, '\0', /* sRGB */ - }; - - /* Ignore unknown chunks and all other chunks except for the - * IHDR, PLTE, tRNS, IDAT, and IEND chunks. - */ - png_set_keep_unknown_chunks(png_ptr, PNG_HANDLE_CHUNK_NEVER, - NULL, -1); - - /* But do not ignore image data handling chunks */ - png_set_keep_unknown_chunks(png_ptr, PNG_HANDLE_CHUNK_AS_DEFAULT, - chunks_to_process, (int)/*SAFE*/(sizeof chunks_to_process)/5); - } -} - -# define PNG_SKIP_CHUNKS(p) png_image_skip_unused_chunks(p) -#else -# define PNG_SKIP_CHUNKS(p) ((void)0) -#endif /* HANDLE_AS_UNKNOWN */ - -/* The following macro gives the exact rounded answer for all values in the - * range 0..255 (it actually divides by 51.2, but the rounding still generates - * the correct numbers 0..5 - */ -#define PNG_DIV51(v8) (((v8) * 5 + 130) >> 8) - -/* Utility functions to make particular color-maps */ -static void -set_file_encoding(png_image_read_control *display) -{ - png_fixed_point g = display->image->opaque->png_ptr->colorspace.gamma; - if (png_gamma_significant(g) != 0) - { - if (png_gamma_not_sRGB(g) != 0) - { - display->file_encoding = P_FILE; - display->gamma_to_linear = png_reciprocal(g); - } - - else - display->file_encoding = P_sRGB; - } - - else - display->file_encoding = P_LINEAR8; -} - -static unsigned int -decode_gamma(png_image_read_control *display, png_uint_32 value, int encoding) -{ - if (encoding == P_FILE) /* double check */ - encoding = display->file_encoding; - - if (encoding == P_NOTSET) /* must be the file encoding */ - { - set_file_encoding(display); - encoding = display->file_encoding; - } - - switch (encoding) - { - case P_FILE: - value = png_gamma_16bit_correct(value*257, display->gamma_to_linear); - break; - - case P_sRGB: - value = png_sRGB_table[value]; - break; - - case P_LINEAR: - break; - - case P_LINEAR8: - value *= 257; - break; - -#ifdef __GNUC__ - default: - png_error(display->image->opaque->png_ptr, - "unexpected encoding (internal error)"); -#endif - } - - return value; -} - -static png_uint_32 -png_colormap_compose(png_image_read_control *display, - png_uint_32 foreground, int foreground_encoding, png_uint_32 alpha, - png_uint_32 background, int encoding) -{ - /* The file value is composed on the background, the background has the given - * encoding and so does the result, the file is encoded with P_FILE and the - * file and alpha are 8-bit values. The (output) encoding will always be - * P_LINEAR or P_sRGB. - */ - png_uint_32 f = decode_gamma(display, foreground, foreground_encoding); - png_uint_32 b = decode_gamma(display, background, encoding); - - /* The alpha is always an 8-bit value (it comes from the palette), the value - * scaled by 255 is what PNG_sRGB_FROM_LINEAR requires. - */ - f = f * alpha + b * (255-alpha); - - if (encoding == P_LINEAR) - { - /* Scale to 65535; divide by 255, approximately (in fact this is extremely - * accurate, it divides by 255.00000005937181414556, with no overflow.) - */ - f *= 257; /* Now scaled by 65535 */ - f += f >> 16; - f = (f+32768) >> 16; - } - - else /* P_sRGB */ - f = PNG_sRGB_FROM_LINEAR(f); - - return f; -} - -/* NOTE: P_LINEAR values to this routine must be 16-bit, but P_FILE values must - * be 8-bit. - */ -static void -png_create_colormap_entry(png_image_read_control *display, - png_uint_32 ip, png_uint_32 red, png_uint_32 green, png_uint_32 blue, - png_uint_32 alpha, int encoding) -{ - png_imagep image = display->image; - const int output_encoding = (image->format & PNG_FORMAT_FLAG_LINEAR) != 0 ? - P_LINEAR : P_sRGB; - const int convert_to_Y = (image->format & PNG_FORMAT_FLAG_COLOR) == 0 && - (red != green || green != blue); - - if (ip > 255) - png_error(image->opaque->png_ptr, "color-map index out of range"); - - /* Update the cache with whether the file gamma is significantly different - * from sRGB. - */ - if (encoding == P_FILE) - { - if (display->file_encoding == P_NOTSET) - set_file_encoding(display); - - /* Note that the cached value may be P_FILE too, but if it is then the - * gamma_to_linear member has been set. - */ - encoding = display->file_encoding; - } - - if (encoding == P_FILE) - { - png_fixed_point g = display->gamma_to_linear; - - red = png_gamma_16bit_correct(red*257, g); - green = png_gamma_16bit_correct(green*257, g); - blue = png_gamma_16bit_correct(blue*257, g); - - if (convert_to_Y != 0 || output_encoding == P_LINEAR) - { - alpha *= 257; - encoding = P_LINEAR; - } - - else - { - red = PNG_sRGB_FROM_LINEAR(red * 255); - green = PNG_sRGB_FROM_LINEAR(green * 255); - blue = PNG_sRGB_FROM_LINEAR(blue * 255); - encoding = P_sRGB; - } - } - - else if (encoding == P_LINEAR8) - { - /* This encoding occurs quite frequently in test cases because PngSuite - * includes a gAMA 1.0 chunk with most images. - */ - red *= 257; - green *= 257; - blue *= 257; - alpha *= 257; - encoding = P_LINEAR; - } - - else if (encoding == P_sRGB && - (convert_to_Y != 0 || output_encoding == P_LINEAR)) - { - /* The values are 8-bit sRGB values, but must be converted to 16-bit - * linear. - */ - red = png_sRGB_table[red]; - green = png_sRGB_table[green]; - blue = png_sRGB_table[blue]; - alpha *= 257; - encoding = P_LINEAR; - } - - /* This is set if the color isn't gray but the output is. */ - if (encoding == P_LINEAR) - { - if (convert_to_Y != 0) - { - /* NOTE: these values are copied from png_do_rgb_to_gray */ - png_uint_32 y = (png_uint_32)6968 * red + (png_uint_32)23434 * green + - (png_uint_32)2366 * blue; - - if (output_encoding == P_LINEAR) - y = (y + 16384) >> 15; - - else - { - /* y is scaled by 32768, we need it scaled by 255: */ - y = (y + 128) >> 8; - y *= 255; - y = PNG_sRGB_FROM_LINEAR((y + 64) >> 7); - alpha = PNG_DIV257(alpha); - encoding = P_sRGB; - } - - blue = red = green = y; - } - - else if (output_encoding == P_sRGB) - { - red = PNG_sRGB_FROM_LINEAR(red * 255); - green = PNG_sRGB_FROM_LINEAR(green * 255); - blue = PNG_sRGB_FROM_LINEAR(blue * 255); - alpha = PNG_DIV257(alpha); - encoding = P_sRGB; - } - } - - if (encoding != output_encoding) - png_error(image->opaque->png_ptr, "bad encoding (internal error)"); - - /* Store the value. */ - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - const int afirst = (image->format & PNG_FORMAT_FLAG_AFIRST) != 0 && - (image->format & PNG_FORMAT_FLAG_ALPHA) != 0; -# else -# define afirst 0 -# endif -# ifdef PNG_FORMAT_BGR_SUPPORTED - const int bgr = (image->format & PNG_FORMAT_FLAG_BGR) != 0 ? 2 : 0; -# else -# define bgr 0 -# endif - - if (output_encoding == P_LINEAR) - { - png_uint_16p entry = png_voidcast(png_uint_16p, display->colormap); - - entry += ip * PNG_IMAGE_SAMPLE_CHANNELS(image->format); - - /* The linear 16-bit values must be pre-multiplied by the alpha channel - * value, if less than 65535 (this is, effectively, composite on black - * if the alpha channel is removed.) - */ - switch (PNG_IMAGE_SAMPLE_CHANNELS(image->format)) - { - case 4: - entry[afirst ? 0 : 3] = (png_uint_16)alpha; - /* FALLTHROUGH */ - - case 3: - if (alpha < 65535) - { - if (alpha > 0) - { - blue = (blue * alpha + 32767U)/65535U; - green = (green * alpha + 32767U)/65535U; - red = (red * alpha + 32767U)/65535U; - } - - else - red = green = blue = 0; - } - entry[afirst + (2 ^ bgr)] = (png_uint_16)blue; - entry[afirst + 1] = (png_uint_16)green; - entry[afirst + bgr] = (png_uint_16)red; - break; - - case 2: - entry[1 ^ afirst] = (png_uint_16)alpha; - /* FALLTHROUGH */ - - case 1: - if (alpha < 65535) - { - if (alpha > 0) - green = (green * alpha + 32767U)/65535U; - - else - green = 0; - } - entry[afirst] = (png_uint_16)green; - break; - - default: - break; - } - } - - else /* output encoding is P_sRGB */ - { - png_bytep entry = png_voidcast(png_bytep, display->colormap); - - entry += ip * PNG_IMAGE_SAMPLE_CHANNELS(image->format); - - switch (PNG_IMAGE_SAMPLE_CHANNELS(image->format)) - { - case 4: - entry[afirst ? 0 : 3] = (png_byte)alpha; - /* FALLTHROUGH */ - case 3: - entry[afirst + (2 ^ bgr)] = (png_byte)blue; - entry[afirst + 1] = (png_byte)green; - entry[afirst + bgr] = (png_byte)red; - break; - - case 2: - entry[1 ^ afirst] = (png_byte)alpha; - /* FALLTHROUGH */ - case 1: - entry[afirst] = (png_byte)green; - break; - - default: - break; - } - } - -# ifdef afirst -# undef afirst -# endif -# ifdef bgr -# undef bgr -# endif - } -} - -static int -make_gray_file_colormap(png_image_read_control *display) -{ - unsigned int i; - - for (i=0; i<256; ++i) - png_create_colormap_entry(display, i, i, i, i, 255, P_FILE); - - return (int)i; -} - -static int -make_gray_colormap(png_image_read_control *display) -{ - unsigned int i; - - for (i=0; i<256; ++i) - png_create_colormap_entry(display, i, i, i, i, 255, P_sRGB); - - return (int)i; -} -#define PNG_GRAY_COLORMAP_ENTRIES 256 - -static int -make_ga_colormap(png_image_read_control *display) -{ - unsigned int i, a; - - /* Alpha is retained, the output will be a color-map with entries - * selected by six levels of alpha. One transparent entry, 6 gray - * levels for all the intermediate alpha values, leaving 230 entries - * for the opaque grays. The color-map entries are the six values - * [0..5]*51, the GA processing uses PNG_DIV51(value) to find the - * relevant entry. - * - * if (alpha > 229) // opaque - * { - * // The 231 entries are selected to make the math below work: - * base = 0; - * entry = (231 * gray + 128) >> 8; - * } - * else if (alpha < 26) // transparent - * { - * base = 231; - * entry = 0; - * } - * else // partially opaque - * { - * base = 226 + 6 * PNG_DIV51(alpha); - * entry = PNG_DIV51(gray); - * } - */ - i = 0; - while (i < 231) - { - unsigned int gray = (i * 256 + 115) / 231; - png_create_colormap_entry(display, i++, gray, gray, gray, 255, P_sRGB); - } - - /* 255 is used here for the component values for consistency with the code - * that undoes premultiplication in pngwrite.c. - */ - png_create_colormap_entry(display, i++, 255, 255, 255, 0, P_sRGB); - - for (a=1; a<5; ++a) - { - unsigned int g; - - for (g=0; g<6; ++g) - png_create_colormap_entry(display, i++, g*51, g*51, g*51, a*51, - P_sRGB); - } - - return (int)i; -} - -#define PNG_GA_COLORMAP_ENTRIES 256 - -static int -make_rgb_colormap(png_image_read_control *display) -{ - unsigned int i, r; - - /* Build a 6x6x6 opaque RGB cube */ - for (i=r=0; r<6; ++r) - { - unsigned int g; - - for (g=0; g<6; ++g) - { - unsigned int b; - - for (b=0; b<6; ++b) - png_create_colormap_entry(display, i++, r*51, g*51, b*51, 255, - P_sRGB); - } - } - - return (int)i; -} - -#define PNG_RGB_COLORMAP_ENTRIES 216 - -/* Return a palette index to the above palette given three 8-bit sRGB values. */ -#define PNG_RGB_INDEX(r,g,b) \ - ((png_byte)(6 * (6 * PNG_DIV51(r) + PNG_DIV51(g)) + PNG_DIV51(b))) - -static int -png_image_read_colormap(png_voidp argument) -{ - png_image_read_control *display = - png_voidcast(png_image_read_control*, argument); - const png_imagep image = display->image; - - const png_structrp png_ptr = image->opaque->png_ptr; - const png_uint_32 output_format = image->format; - const int output_encoding = (output_format & PNG_FORMAT_FLAG_LINEAR) != 0 ? - P_LINEAR : P_sRGB; - - unsigned int cmap_entries; - unsigned int output_processing; /* Output processing option */ - unsigned int data_encoding = P_NOTSET; /* Encoding libpng must produce */ - - /* Background information; the background color and the index of this color - * in the color-map if it exists (else 256). - */ - unsigned int background_index = 256; - png_uint_32 back_r, back_g, back_b; - - /* Flags to accumulate things that need to be done to the input. */ - int expand_tRNS = 0; - - /* Exclude the NYI feature of compositing onto a color-mapped buffer; it is - * very difficult to do, the results look awful, and it is difficult to see - * what possible use it is because the application can't control the - * color-map. - */ - if (((png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0 || - png_ptr->num_trans > 0) /* alpha in input */ && - ((output_format & PNG_FORMAT_FLAG_ALPHA) == 0) /* no alpha in output */) - { - if (output_encoding == P_LINEAR) /* compose on black */ - back_b = back_g = back_r = 0; - - else if (display->background == NULL /* no way to remove it */) - png_error(png_ptr, - "background color must be supplied to remove alpha/transparency"); - - /* Get a copy of the background color (this avoids repeating the checks - * below.) The encoding is 8-bit sRGB or 16-bit linear, depending on the - * output format. - */ - else - { - back_g = display->background->green; - if ((output_format & PNG_FORMAT_FLAG_COLOR) != 0) - { - back_r = display->background->red; - back_b = display->background->blue; - } - else - back_b = back_r = back_g; - } - } - - else if (output_encoding == P_LINEAR) - back_b = back_r = back_g = 65535; - - else - back_b = back_r = back_g = 255; - - /* Default the input file gamma if required - this is necessary because - * libpng assumes that if no gamma information is present the data is in the - * output format, but the simplified API deduces the gamma from the input - * format. - */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) == 0) - { - /* Do this directly, not using the png_colorspace functions, to ensure - * that it happens even if the colorspace is invalid (though probably if - * it is the setting will be ignored) Note that the same thing can be - * achieved at the application interface with png_set_gAMA. - */ - if (png_ptr->bit_depth == 16 && - (image->flags & PNG_IMAGE_FLAG_16BIT_sRGB) == 0) - png_ptr->colorspace.gamma = PNG_GAMMA_LINEAR; - - else - png_ptr->colorspace.gamma = PNG_GAMMA_sRGB_INVERSE; - - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - } - - /* Decide what to do based on the PNG color type of the input data. The - * utility function png_create_colormap_entry deals with most aspects of the - * output transformations; this code works out how to produce bytes of - * color-map entries from the original format. - */ - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_GRAY: - if (png_ptr->bit_depth <= 8) - { - /* There at most 256 colors in the output, regardless of - * transparency. - */ - unsigned int step, i, val, trans = 256/*ignore*/, back_alpha = 0; - - cmap_entries = 1U << png_ptr->bit_depth; - if (cmap_entries > image->colormap_entries) - png_error(png_ptr, "gray[8] color-map: too few entries"); - - step = 255 / (cmap_entries - 1); - output_processing = PNG_CMAP_NONE; - - /* If there is a tRNS chunk then this either selects a transparent - * value or, if the output has no alpha, the background color. - */ - if (png_ptr->num_trans > 0) - { - trans = png_ptr->trans_color.gray; - - if ((output_format & PNG_FORMAT_FLAG_ALPHA) == 0) - back_alpha = output_encoding == P_LINEAR ? 65535 : 255; - } - - /* png_create_colormap_entry just takes an RGBA and writes the - * corresponding color-map entry using the format from 'image', - * including the required conversion to sRGB or linear as - * appropriate. The input values are always either sRGB (if the - * gamma correction flag is 0) or 0..255 scaled file encoded values - * (if the function must gamma correct them). - */ - for (i=val=0; ibit_depth < 8) - png_set_packing(png_ptr); - } - - else /* bit depth is 16 */ - { - /* The 16-bit input values can be converted directly to 8-bit gamma - * encoded values; however, if a tRNS chunk is present 257 color-map - * entries are required. This means that the extra entry requires - * special processing; add an alpha channel, sacrifice gray level - * 254 and convert transparent (alpha==0) entries to that. - * - * Use libpng to chop the data to 8 bits. Convert it to sRGB at the - * same time to minimize quality loss. If a tRNS chunk is present - * this means libpng must handle it too; otherwise it is impossible - * to do the exact match on the 16-bit value. - * - * If the output has no alpha channel *and* the background color is - * gray then it is possible to let libpng handle the substitution by - * ensuring that the corresponding gray level matches the background - * color exactly. - */ - data_encoding = P_sRGB; - - if (PNG_GRAY_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "gray[16] color-map: too few entries"); - - cmap_entries = (unsigned int)make_gray_colormap(display); - - if (png_ptr->num_trans > 0) - { - unsigned int back_alpha; - - if ((output_format & PNG_FORMAT_FLAG_ALPHA) != 0) - back_alpha = 0; - - else - { - if (back_r == back_g && back_g == back_b) - { - /* Background is gray; no special processing will be - * required. - */ - png_color_16 c; - png_uint_32 gray = back_g; - - if (output_encoding == P_LINEAR) - { - gray = PNG_sRGB_FROM_LINEAR(gray * 255); - - /* And make sure the corresponding palette entry - * matches. - */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 65535, P_LINEAR); - } - - /* The background passed to libpng, however, must be the - * sRGB value. - */ - c.index = 0; /*unused*/ - c.gray = c.red = c.green = c.blue = (png_uint_16)gray; - - /* NOTE: does this work without expanding tRNS to alpha? - * It should be the color->gray case below apparently - * doesn't. - */ - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - - output_processing = PNG_CMAP_NONE; - break; - } -#ifdef __COVERITY__ - /* Coverity claims that output_encoding cannot be 2 (P_LINEAR) - * here. - */ - back_alpha = 255; -#else - back_alpha = output_encoding == P_LINEAR ? 65535 : 255; -#endif - } - - /* output_processing means that the libpng-processed row will be - * 8-bit GA and it has to be processing to single byte color-map - * values. Entry 254 is replaced by either a completely - * transparent entry or by the background color at full - * precision (and the background color is not a simple gray - * level in this case.) - */ - expand_tRNS = 1; - output_processing = PNG_CMAP_TRANS; - background_index = 254; - - /* And set (overwrite) color-map entry 254 to the actual - * background color at full precision. - */ - png_create_colormap_entry(display, 254, back_r, back_g, back_b, - back_alpha, output_encoding); - } - - else - output_processing = PNG_CMAP_NONE; - } - break; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - /* 8-bit or 16-bit PNG with two channels - gray and alpha. A minimum - * of 65536 combinations. If, however, the alpha channel is to be - * removed there are only 256 possibilities if the background is gray. - * (Otherwise there is a subset of the 65536 possibilities defined by - * the triangle between black, white and the background color.) - * - * Reduce 16-bit files to 8-bit and sRGB encode the result. No need to - * worry about tRNS matching - tRNS is ignored if there is an alpha - * channel. - */ - data_encoding = P_sRGB; - - if ((output_format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - if (PNG_GA_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "gray+alpha color-map: too few entries"); - - cmap_entries = (unsigned int)make_ga_colormap(display); - - background_index = PNG_CMAP_GA_BACKGROUND; - output_processing = PNG_CMAP_GA; - } - - else /* alpha is removed */ - { - /* Alpha must be removed as the PNG data is processed when the - * background is a color because the G and A channels are - * independent and the vector addition (non-parallel vectors) is a - * 2-D problem. - * - * This can be reduced to the same algorithm as above by making a - * colormap containing gray levels (for the opaque grays), a - * background entry (for a transparent pixel) and a set of four six - * level color values, one set for each intermediate alpha value. - * See the comments in make_ga_colormap for how this works in the - * per-pixel processing. - * - * If the background is gray, however, we only need a 256 entry gray - * level color map. It is sufficient to make the entry generated - * for the background color be exactly the color specified. - */ - if ((output_format & PNG_FORMAT_FLAG_COLOR) == 0 || - (back_r == back_g && back_g == back_b)) - { - /* Background is gray; no special processing will be required. */ - png_color_16 c; - png_uint_32 gray = back_g; - - if (PNG_GRAY_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "gray-alpha color-map: too few entries"); - - cmap_entries = (unsigned int)make_gray_colormap(display); - - if (output_encoding == P_LINEAR) - { - gray = PNG_sRGB_FROM_LINEAR(gray * 255); - - /* And make sure the corresponding palette entry matches. */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 65535, P_LINEAR); - } - - /* The background passed to libpng, however, must be the sRGB - * value. - */ - c.index = 0; /*unused*/ - c.gray = c.red = c.green = c.blue = (png_uint_16)gray; - - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - - output_processing = PNG_CMAP_NONE; - } - - else - { - png_uint_32 i, a; - - /* This is the same as png_make_ga_colormap, above, except that - * the entries are all opaque. - */ - if (PNG_GA_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "ga-alpha color-map: too few entries"); - - i = 0; - while (i < 231) - { - png_uint_32 gray = (i * 256 + 115) / 231; - png_create_colormap_entry(display, i++, gray, gray, gray, - 255, P_sRGB); - } - - /* NOTE: this preserves the full precision of the application - * background color. - */ - background_index = i; - png_create_colormap_entry(display, i++, back_r, back_g, back_b, -#ifdef __COVERITY__ - /* Coverity claims that output_encoding - * cannot be 2 (P_LINEAR) here. - */ 255U, -#else - output_encoding == P_LINEAR ? 65535U : 255U, -#endif - output_encoding); - - /* For non-opaque input composite on the sRGB background - this - * requires inverting the encoding for each component. The input - * is still converted to the sRGB encoding because this is a - * reasonable approximate to the logarithmic curve of human - * visual sensitivity, at least over the narrow range which PNG - * represents. Consequently 'G' is always sRGB encoded, while - * 'A' is linear. We need the linear background colors. - */ - if (output_encoding == P_sRGB) /* else already linear */ - { - /* This may produce a value not exactly matching the - * background, but that's ok because these numbers are only - * used when alpha != 0 - */ - back_r = png_sRGB_table[back_r]; - back_g = png_sRGB_table[back_g]; - back_b = png_sRGB_table[back_b]; - } - - for (a=1; a<5; ++a) - { - unsigned int g; - - /* PNG_sRGB_FROM_LINEAR expects a 16-bit linear value scaled - * by an 8-bit alpha value (0..255). - */ - png_uint_32 alpha = 51 * a; - png_uint_32 back_rx = (255-alpha) * back_r; - png_uint_32 back_gx = (255-alpha) * back_g; - png_uint_32 back_bx = (255-alpha) * back_b; - - for (g=0; g<6; ++g) - { - png_uint_32 gray = png_sRGB_table[g*51] * alpha; - - png_create_colormap_entry(display, i++, - PNG_sRGB_FROM_LINEAR(gray + back_rx), - PNG_sRGB_FROM_LINEAR(gray + back_gx), - PNG_sRGB_FROM_LINEAR(gray + back_bx), 255, P_sRGB); - } - } - - cmap_entries = i; - output_processing = PNG_CMAP_GA; - } - } - break; - - case PNG_COLOR_TYPE_RGB: - case PNG_COLOR_TYPE_RGB_ALPHA: - /* Exclude the case where the output is gray; we can always handle this - * with the cases above. - */ - if ((output_format & PNG_FORMAT_FLAG_COLOR) == 0) - { - /* The color-map will be grayscale, so we may as well convert the - * input RGB values to a simple grayscale and use the grayscale - * code above. - * - * NOTE: calling this apparently damages the recognition of the - * transparent color in background color handling; call - * png_set_tRNS_to_alpha before png_set_background_fixed. - */ - png_set_rgb_to_gray_fixed(png_ptr, PNG_ERROR_ACTION_NONE, -1, - -1); - data_encoding = P_sRGB; - - /* The output will now be one or two 8-bit gray or gray+alpha - * channels. The more complex case arises when the input has alpha. - */ - if ((png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) && - (output_format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - /* Both input and output have an alpha channel, so no background - * processing is required; just map the GA bytes to the right - * color-map entry. - */ - expand_tRNS = 1; - - if (PNG_GA_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "rgb[ga] color-map: too few entries"); - - cmap_entries = (unsigned int)make_ga_colormap(display); - background_index = PNG_CMAP_GA_BACKGROUND; - output_processing = PNG_CMAP_GA; - } - - else - { - /* Either the input or the output has no alpha channel, so there - * will be no non-opaque pixels in the color-map; it will just be - * grayscale. - */ - if (PNG_GRAY_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "rgb[gray] color-map: too few entries"); - - /* Ideally this code would use libpng to do the gamma correction, - * but if an input alpha channel is to be removed we will hit the - * libpng bug in gamma+compose+rgb-to-gray (the double gamma - * correction bug). Fix this by dropping the gamma correction in - * this case and doing it in the palette; this will result in - * duplicate palette entries, but that's better than the - * alternative of double gamma correction. - */ - if ((png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) && - png_gamma_not_sRGB(png_ptr->colorspace.gamma) != 0) - { - cmap_entries = (unsigned int)make_gray_file_colormap(display); - data_encoding = P_FILE; - } - - else - cmap_entries = (unsigned int)make_gray_colormap(display); - - /* But if the input has alpha or transparency it must be removed - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) - { - png_color_16 c; - png_uint_32 gray = back_g; - - /* We need to ensure that the application background exists in - * the colormap and that completely transparent pixels map to - * it. Achieve this simply by ensuring that the entry - * selected for the background really is the background color. - */ - if (data_encoding == P_FILE) /* from the fixup above */ - { - /* The app supplied a gray which is in output_encoding, we - * need to convert it to a value of the input (P_FILE) - * encoding then set this palette entry to the required - * output encoding. - */ - if (output_encoding == P_sRGB) - gray = png_sRGB_table[gray]; /* now P_LINEAR */ - - gray = PNG_DIV257(png_gamma_16bit_correct(gray, - png_ptr->colorspace.gamma)); /* now P_FILE */ - - /* And make sure the corresponding palette entry contains - * exactly the required sRGB value. - */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 0/*unused*/, output_encoding); - } - - else if (output_encoding == P_LINEAR) - { - gray = PNG_sRGB_FROM_LINEAR(gray * 255); - - /* And make sure the corresponding palette entry matches. - */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 0/*unused*/, P_LINEAR); - } - - /* The background passed to libpng, however, must be the - * output (normally sRGB) value. - */ - c.index = 0; /*unused*/ - c.gray = c.red = c.green = c.blue = (png_uint_16)gray; - - /* NOTE: the following is apparently a bug in libpng. Without - * it the transparent color recognition in - * png_set_background_fixed seems to go wrong. - */ - expand_tRNS = 1; - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - } - - output_processing = PNG_CMAP_NONE; - } - } - - else /* output is color */ - { - /* We could use png_quantize here so long as there is no transparent - * color or alpha; png_quantize ignores alpha. Easier overall just - * to do it once and using PNG_DIV51 on the 6x6x6 reduced RGB cube. - * Consequently we always want libpng to produce sRGB data. - */ - data_encoding = P_sRGB; - - /* Is there any transparency or alpha? */ - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) - { - /* Is there alpha in the output too? If so all four channels are - * processed into a special RGB cube with alpha support. - */ - if ((output_format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - png_uint_32 r; - - if (PNG_RGB_COLORMAP_ENTRIES+1+27 > image->colormap_entries) - png_error(png_ptr, "rgb+alpha color-map: too few entries"); - - cmap_entries = (unsigned int)make_rgb_colormap(display); - - /* Add a transparent entry. */ - png_create_colormap_entry(display, cmap_entries, 255, 255, - 255, 0, P_sRGB); - - /* This is stored as the background index for the processing - * algorithm. - */ - background_index = cmap_entries++; - - /* Add 27 r,g,b entries each with alpha 0.5. */ - for (r=0; r<256; r = (r << 1) | 0x7f) - { - png_uint_32 g; - - for (g=0; g<256; g = (g << 1) | 0x7f) - { - png_uint_32 b; - - /* This generates components with the values 0, 127 and - * 255 - */ - for (b=0; b<256; b = (b << 1) | 0x7f) - png_create_colormap_entry(display, cmap_entries++, - r, g, b, 128, P_sRGB); - } - } - - expand_tRNS = 1; - output_processing = PNG_CMAP_RGB_ALPHA; - } - - else - { - /* Alpha/transparency must be removed. The background must - * exist in the color map (achieved by setting adding it after - * the 666 color-map). If the standard processing code will - * pick up this entry automatically that's all that is - * required; libpng can be called to do the background - * processing. - */ - unsigned int sample_size = - PNG_IMAGE_SAMPLE_SIZE(output_format); - png_uint_32 r, g, b; /* sRGB background */ - - if (PNG_RGB_COLORMAP_ENTRIES+1+27 > image->colormap_entries) - png_error(png_ptr, "rgb-alpha color-map: too few entries"); - - cmap_entries = (unsigned int)make_rgb_colormap(display); - - png_create_colormap_entry(display, cmap_entries, back_r, - back_g, back_b, 0/*unused*/, output_encoding); - - if (output_encoding == P_LINEAR) - { - r = PNG_sRGB_FROM_LINEAR(back_r * 255); - g = PNG_sRGB_FROM_LINEAR(back_g * 255); - b = PNG_sRGB_FROM_LINEAR(back_b * 255); - } - - else - { - r = back_r; - g = back_g; - b = back_g; - } - - /* Compare the newly-created color-map entry with the one the - * PNG_CMAP_RGB algorithm will use. If the two entries don't - * match, add the new one and set this as the background - * index. - */ - if (memcmp((png_const_bytep)display->colormap + - sample_size * cmap_entries, - (png_const_bytep)display->colormap + - sample_size * PNG_RGB_INDEX(r,g,b), - sample_size) != 0) - { - /* The background color must be added. */ - background_index = cmap_entries++; - - /* Add 27 r,g,b entries each with created by composing with - * the background at alpha 0.5. - */ - for (r=0; r<256; r = (r << 1) | 0x7f) - { - for (g=0; g<256; g = (g << 1) | 0x7f) - { - /* This generates components with the values 0, 127 - * and 255 - */ - for (b=0; b<256; b = (b << 1) | 0x7f) - png_create_colormap_entry(display, cmap_entries++, - png_colormap_compose(display, r, P_sRGB, 128, - back_r, output_encoding), - png_colormap_compose(display, g, P_sRGB, 128, - back_g, output_encoding), - png_colormap_compose(display, b, P_sRGB, 128, - back_b, output_encoding), - 0/*unused*/, output_encoding); - } - } - - expand_tRNS = 1; - output_processing = PNG_CMAP_RGB_ALPHA; - } - - else /* background color is in the standard color-map */ - { - png_color_16 c; - - c.index = 0; /*unused*/ - c.red = (png_uint_16)back_r; - c.gray = c.green = (png_uint_16)back_g; - c.blue = (png_uint_16)back_b; - - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - - output_processing = PNG_CMAP_RGB; - } - } - } - - else /* no alpha or transparency in the input */ - { - /* Alpha in the output is irrelevant, simply map the opaque input - * pixels to the 6x6x6 color-map. - */ - if (PNG_RGB_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "rgb color-map: too few entries"); - - cmap_entries = (unsigned int)make_rgb_colormap(display); - output_processing = PNG_CMAP_RGB; - } - } - break; - - case PNG_COLOR_TYPE_PALETTE: - /* It's already got a color-map. It may be necessary to eliminate the - * tRNS entries though. - */ - { - unsigned int num_trans = png_ptr->num_trans; - png_const_bytep trans = num_trans > 0 ? png_ptr->trans_alpha : NULL; - png_const_colorp colormap = png_ptr->palette; - const int do_background = trans != NULL && - (output_format & PNG_FORMAT_FLAG_ALPHA) == 0; - unsigned int i; - - /* Just in case: */ - if (trans == NULL) - num_trans = 0; - - output_processing = PNG_CMAP_NONE; - data_encoding = P_FILE; /* Don't change from color-map indices */ - cmap_entries = (unsigned int)png_ptr->num_palette; - if (cmap_entries > 256) - cmap_entries = 256; - - if (cmap_entries > (unsigned int)image->colormap_entries) - png_error(png_ptr, "palette color-map: too few entries"); - - for (i=0; i < cmap_entries; ++i) - { - if (do_background != 0 && i < num_trans && trans[i] < 255) - { - if (trans[i] == 0) - png_create_colormap_entry(display, i, back_r, back_g, - back_b, 0, output_encoding); - - else - { - /* Must compose the PNG file color in the color-map entry - * on the sRGB color in 'back'. - */ - png_create_colormap_entry(display, i, - png_colormap_compose(display, colormap[i].red, - P_FILE, trans[i], back_r, output_encoding), - png_colormap_compose(display, colormap[i].green, - P_FILE, trans[i], back_g, output_encoding), - png_colormap_compose(display, colormap[i].blue, - P_FILE, trans[i], back_b, output_encoding), - output_encoding == P_LINEAR ? trans[i] * 257U : - trans[i], - output_encoding); - } - } - - else - png_create_colormap_entry(display, i, colormap[i].red, - colormap[i].green, colormap[i].blue, - i < num_trans ? trans[i] : 255U, P_FILE/*8-bit*/); - } - - /* The PNG data may have indices packed in fewer than 8 bits, it - * must be expanded if so. - */ - if (png_ptr->bit_depth < 8) - png_set_packing(png_ptr); - } - break; - - default: - png_error(png_ptr, "invalid PNG color type"); - /*NOT REACHED*/ - } - - /* Now deal with the output processing */ - if (expand_tRNS != 0 && png_ptr->num_trans > 0 && - (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) == 0) - png_set_tRNS_to_alpha(png_ptr); - - switch (data_encoding) - { - case P_sRGB: - /* Change to 8-bit sRGB */ - png_set_alpha_mode_fixed(png_ptr, PNG_ALPHA_PNG, PNG_GAMMA_sRGB); - /* FALLTHROUGH */ - - case P_FILE: - if (png_ptr->bit_depth > 8) - png_set_scale_16(png_ptr); - break; - -#ifdef __GNUC__ - default: - png_error(png_ptr, "bad data option (internal error)"); -#endif - } - - if (cmap_entries > 256 || cmap_entries > image->colormap_entries) - png_error(png_ptr, "color map overflow (BAD internal error)"); - - image->colormap_entries = cmap_entries; - - /* Double check using the recorded background index */ - switch (output_processing) - { - case PNG_CMAP_NONE: - if (background_index != PNG_CMAP_NONE_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_GA: - if (background_index != PNG_CMAP_GA_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_TRANS: - if (background_index >= cmap_entries || - background_index != PNG_CMAP_TRANS_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_RGB: - if (background_index != PNG_CMAP_RGB_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_RGB_ALPHA: - if (background_index != PNG_CMAP_RGB_ALPHA_BACKGROUND) - goto bad_background; - break; - - default: - png_error(png_ptr, "bad processing option (internal error)"); - - bad_background: - png_error(png_ptr, "bad background index (internal error)"); - } - - display->colormap_processing = (int)output_processing; - - return 1/*ok*/; -} - -/* The final part of the color-map read called from png_image_finish_read. */ -static int -png_image_read_and_map(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - int passes; - - /* Called when the libpng data must be transformed into the color-mapped - * form. There is a local row buffer in display->local and this routine must - * do the interlace handling. - */ - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - int proc = display->colormap_processing; - png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t step_row = display->row_bytes; - int pass; - - for (pass = 0; pass < passes; ++pass) - { - unsigned int startx, stepx, stepy; - png_uint_32 y; - - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass); - stepx = PNG_PASS_COL_OFFSET(pass); - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = stepy = 1; - } - - for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; - png_const_bytep end_row = outrow + width; - - /* Read read the libpng data into the temporary buffer. */ - png_read_row(png_ptr, inrow, NULL); - - /* Now process the row according to the processing option, note - * that the caller verifies that the format of the libpng output - * data is as required. - */ - outrow += startx; - switch (proc) - { - case PNG_CMAP_GA: - for (; outrow < end_row; outrow += stepx) - { - /* The data is always in the PNG order */ - unsigned int gray = *inrow++; - unsigned int alpha = *inrow++; - unsigned int entry; - - /* NOTE: this code is copied as a comment in - * make_ga_colormap above. Please update the - * comment if you change this code! - */ - if (alpha > 229) /* opaque */ - { - entry = (231 * gray + 128) >> 8; - } - else if (alpha < 26) /* transparent */ - { - entry = 231; - } - else /* partially opaque */ - { - entry = 226 + 6 * PNG_DIV51(alpha) + PNG_DIV51(gray); - } - - *outrow = (png_byte)entry; - } - break; - - case PNG_CMAP_TRANS: - for (; outrow < end_row; outrow += stepx) - { - png_byte gray = *inrow++; - png_byte alpha = *inrow++; - - if (alpha == 0) - *outrow = PNG_CMAP_TRANS_BACKGROUND; - - else if (gray != PNG_CMAP_TRANS_BACKGROUND) - *outrow = gray; - - else - *outrow = (png_byte)(PNG_CMAP_TRANS_BACKGROUND+1); - } - break; - - case PNG_CMAP_RGB: - for (; outrow < end_row; outrow += stepx) - { - *outrow = PNG_RGB_INDEX(inrow[0], inrow[1], inrow[2]); - inrow += 3; - } - break; - - case PNG_CMAP_RGB_ALPHA: - for (; outrow < end_row; outrow += stepx) - { - unsigned int alpha = inrow[3]; - - /* Because the alpha entries only hold alpha==0.5 values - * split the processing at alpha==0.25 (64) and 0.75 - * (196). - */ - - if (alpha >= 196) - *outrow = PNG_RGB_INDEX(inrow[0], inrow[1], - inrow[2]); - - else if (alpha < 64) - *outrow = PNG_CMAP_RGB_ALPHA_BACKGROUND; - - else - { - /* Likewise there are three entries for each of r, g - * and b. We could select the entry by popcount on - * the top two bits on those architectures that - * support it, this is what the code below does, - * crudely. - */ - unsigned int back_i = PNG_CMAP_RGB_ALPHA_BACKGROUND+1; - - /* Here are how the values map: - * - * 0x00 .. 0x3f -> 0 - * 0x40 .. 0xbf -> 1 - * 0xc0 .. 0xff -> 2 - * - * So, as above with the explicit alpha checks, the - * breakpoints are at 64 and 196. - */ - if (inrow[0] & 0x80) back_i += 9; /* red */ - if (inrow[0] & 0x40) back_i += 9; - if (inrow[0] & 0x80) back_i += 3; /* green */ - if (inrow[0] & 0x40) back_i += 3; - if (inrow[0] & 0x80) back_i += 1; /* blue */ - if (inrow[0] & 0x40) back_i += 1; - - *outrow = (png_byte)back_i; - } - - inrow += 4; - } - break; - - default: - break; - } - } - } - } - - return 1; -} - -static int -png_image_read_colormapped(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_controlp control = image->opaque; - png_structrp png_ptr = control->png_ptr; - png_inforp info_ptr = control->info_ptr; - - int passes = 0; /* As a flag */ - - PNG_SKIP_CHUNKS(png_ptr); - - /* Update the 'info' structure and make sure the result is as required; first - * make sure to turn on the interlace handling if it will be required - * (because it can't be turned on *after* the call to png_read_update_info!) - */ - if (display->colormap_processing == PNG_CMAP_NONE) - passes = png_set_interlace_handling(png_ptr); - - png_read_update_info(png_ptr, info_ptr); - - /* The expected output can be deduced from the colormap_processing option. */ - switch (display->colormap_processing) - { - case PNG_CMAP_NONE: - /* Output must be one channel and one byte per pixel, the output - * encoding can be anything. - */ - if ((info_ptr->color_type == PNG_COLOR_TYPE_PALETTE || - info_ptr->color_type == PNG_COLOR_TYPE_GRAY) && - info_ptr->bit_depth == 8) - break; - - goto bad_output; - - case PNG_CMAP_TRANS: - case PNG_CMAP_GA: - /* Output must be two channels and the 'G' one must be sRGB, the latter - * can be checked with an exact number because it should have been set - * to this number above! - */ - if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && - info_ptr->bit_depth == 8 && - png_ptr->screen_gamma == PNG_GAMMA_sRGB && - image->colormap_entries == 256) - break; - - goto bad_output; - - case PNG_CMAP_RGB: - /* Output must be 8-bit sRGB encoded RGB */ - if (info_ptr->color_type == PNG_COLOR_TYPE_RGB && - info_ptr->bit_depth == 8 && - png_ptr->screen_gamma == PNG_GAMMA_sRGB && - image->colormap_entries == 216) - break; - - goto bad_output; - - case PNG_CMAP_RGB_ALPHA: - /* Output must be 8-bit sRGB encoded RGBA */ - if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA && - info_ptr->bit_depth == 8 && - png_ptr->screen_gamma == PNG_GAMMA_sRGB && - image->colormap_entries == 244 /* 216 + 1 + 27 */) - break; - - goto bad_output; - - default: - bad_output: - png_error(png_ptr, "bad color-map processing (internal error)"); - } - - /* Now read the rows. Do this here if it is possible to read directly into - * the output buffer, otherwise allocate a local row buffer of the maximum - * size libpng requires and call the relevant processing routine safely. - */ - { - png_voidp first_row = display->buffer; - ptrdiff_t row_bytes = display->row_stride; - - /* The following expression is designed to work correctly whether it gives - * a signed or an unsigned result. - */ - if (row_bytes < 0) - { - char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_bytes); - first_row = png_voidcast(png_voidp, ptr); - } - - display->first_row = first_row; - display->row_bytes = row_bytes; - } - - if (passes == 0) - { - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_and_map, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - - else - { - png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes; - - while (--passes >= 0) - { - png_uint_32 y = image->height; - png_bytep row = png_voidcast(png_bytep, display->first_row); - - for (; y > 0; --y) - { - png_read_row(png_ptr, row, NULL); - row += row_bytes; - } - } - - return 1; - } -} - -/* Just the row reading part of png_image_read. */ -static int -png_image_read_composite(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - int passes; - - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - ptrdiff_t step_row = display->row_bytes; - unsigned int channels = - (image->format & PNG_FORMAT_FLAG_COLOR) != 0 ? 3 : 1; - int pass; - - for (pass = 0; pass < passes; ++pass) - { - unsigned int startx, stepx, stepy; - png_uint_32 y; - - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass) * channels; - stepx = PNG_PASS_COL_OFFSET(pass) * channels; - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = channels; - stepy = 1; - } - - for (; ylocal_row); - png_bytep outrow; - png_const_bytep end_row; - - /* Read the row, which is packed: */ - png_read_row(png_ptr, inrow, NULL); - - outrow = png_voidcast(png_bytep, display->first_row); - outrow += y * step_row; - end_row = outrow + width * channels; - - /* Now do the composition on each pixel in this row. */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_byte alpha = inrow[channels]; - - if (alpha > 0) /* else no change to the output */ - { - unsigned int c; - - for (c=0; cimage; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - png_uint_32 height = image->height; - png_uint_32 width = image->width; - int pass, passes; - - /* Double check the convoluted logic below. We expect to get here with - * libpng doing rgb to gray and gamma correction but background processing - * left to the png_image_read_background function. The rows libpng produce - * might be 8 or 16-bit but should always have two channels; gray plus alpha. - */ - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == 0) - png_error(png_ptr, "lost rgb to gray"); - - if ((png_ptr->transformations & PNG_COMPOSE) != 0) - png_error(png_ptr, "unexpected compose"); - - if (png_get_channels(png_ptr, info_ptr) != 2) - png_error(png_ptr, "lost/gained channels"); - - /* Expect the 8-bit case to always remove the alpha channel */ - if ((image->format & PNG_FORMAT_FLAG_LINEAR) == 0 && - (image->format & PNG_FORMAT_FLAG_ALPHA) != 0) - png_error(png_ptr, "unexpected 8-bit transformation"); - - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - /* Use direct access to info_ptr here because otherwise the simplified API - * would require PNG_EASY_ACCESS_SUPPORTED (just for this.) Note this is - * checking the value after libpng expansions, not the original value in the - * PNG. - */ - switch (info_ptr->bit_depth) - { - case 8: - /* 8-bit sRGB gray values with an alpha channel; the alpha channel is - * to be removed by composing on a background: either the row if - * display->background is NULL or display->background->green if not. - * Unlike the code above ALPHA_OPTIMIZED has *not* been done. - */ - { - png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t step_row = display->row_bytes; - - for (pass = 0; pass < passes; ++pass) - { - png_bytep row = png_voidcast(png_bytep, display->first_row); - unsigned int startx, stepx, stepy; - png_uint_32 y; - - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass); - stepx = PNG_PASS_COL_OFFSET(pass); - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = stepy = 1; - } - - if (display->background == NULL) - { - for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; - png_const_bytep end_row = outrow + width; - - /* Read the row, which is packed: */ - png_read_row(png_ptr, inrow, NULL); - - /* Now do the composition on each pixel in this row. */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_byte alpha = inrow[1]; - - if (alpha > 0) /* else no change to the output */ - { - png_uint_32 component = inrow[0]; - - if (alpha < 255) /* else just use component */ - { - /* Since PNG_OPTIMIZED_ALPHA was not set it is - * necessary to invert the sRGB transfer - * function and multiply the alpha out. - */ - component = png_sRGB_table[component] * alpha; - component += png_sRGB_table[outrow[0]] * - (255-alpha); - component = PNG_sRGB_FROM_LINEAR(component); - } - - outrow[0] = (png_byte)component; - } - - inrow += 2; /* gray and alpha channel */ - } - } - } - - else /* constant background value */ - { - png_byte background8 = display->background->green; - png_uint_16 background = png_sRGB_table[background8]; - - for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; - png_const_bytep end_row = outrow + width; - - /* Read the row, which is packed: */ - png_read_row(png_ptr, inrow, NULL); - - /* Now do the composition on each pixel in this row. */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_byte alpha = inrow[1]; - - if (alpha > 0) /* else use background */ - { - png_uint_32 component = inrow[0]; - - if (alpha < 255) /* else just use component */ - { - component = png_sRGB_table[component] * alpha; - component += background * (255-alpha); - component = PNG_sRGB_FROM_LINEAR(component); - } - - outrow[0] = (png_byte)component; - } - - else - outrow[0] = background8; - - inrow += 2; /* gray and alpha channel */ - } - - row += display->row_bytes; - } - } - } - } - break; - - case 16: - /* 16-bit linear with pre-multiplied alpha; the pre-multiplication must - * still be done and, maybe, the alpha channel removed. This code also - * handles the alpha-first option. - */ - { - png_uint_16p first_row = png_voidcast(png_uint_16p, - display->first_row); - /* The division by two is safe because the caller passed in a - * stride which was multiplied by 2 (below) to get row_bytes. - */ - ptrdiff_t step_row = display->row_bytes / 2; - unsigned int preserve_alpha = (image->format & - PNG_FORMAT_FLAG_ALPHA) != 0; - unsigned int outchannels = 1U+preserve_alpha; - int swap_alpha = 0; - -# ifdef PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED - if (preserve_alpha != 0 && - (image->format & PNG_FORMAT_FLAG_AFIRST) != 0) - swap_alpha = 1; -# endif - - for (pass = 0; pass < passes; ++pass) - { - unsigned int startx, stepx, stepy; - png_uint_32 y; - - /* The 'x' start and step are adjusted to output components here. - */ - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass) * outchannels; - stepx = PNG_PASS_COL_OFFSET(pass) * outchannels; - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = outchannels; - stepy = 1; - } - - for (; ylocal_row), NULL); - inrow = png_voidcast(png_const_uint_16p, display->local_row); - - /* Now do the pre-multiplication on each pixel in this row. - */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_uint_32 component = inrow[0]; - png_uint_16 alpha = inrow[1]; - - if (alpha > 0) /* else 0 */ - { - if (alpha < 65535) /* else just use component */ - { - component *= alpha; - component += 32767; - component /= 65535; - } - } - - else - component = 0; - - outrow[swap_alpha] = (png_uint_16)component; - if (preserve_alpha != 0) - outrow[1 ^ swap_alpha] = alpha; - - inrow += 2; /* components and alpha channel */ - } - } - } - } - break; - -#ifdef __GNUC__ - default: - png_error(png_ptr, "unexpected bit depth"); -#endif - } - - return 1; -} - -/* The guts of png_image_finish_read as a png_safe_execute callback. */ -static int -png_image_read_direct(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - - png_uint_32 format = image->format; - int linear = (format & PNG_FORMAT_FLAG_LINEAR) != 0; - int do_local_compose = 0; - int do_local_background = 0; /* to avoid double gamma correction bug */ - int passes = 0; - - /* Add transforms to ensure the correct output format is produced then check - * that the required implementation support is there. Always expand; always - * need 8 bits minimum, no palette and expanded tRNS. - */ - png_set_expand(png_ptr); - - /* Now check the format to see if it was modified. */ - { - png_uint_32 base_format = png_image_format(png_ptr) & - ~PNG_FORMAT_FLAG_COLORMAP /* removed by png_set_expand */; - png_uint_32 change = format ^ base_format; - png_fixed_point output_gamma; - int mode; /* alpha mode */ - - /* Do this first so that we have a record if rgb to gray is happening. */ - if ((change & PNG_FORMAT_FLAG_COLOR) != 0) - { - /* gray<->color transformation required. */ - if ((format & PNG_FORMAT_FLAG_COLOR) != 0) - png_set_gray_to_rgb(png_ptr); - - else - { - /* libpng can't do both rgb to gray and - * background/pre-multiplication if there is also significant gamma - * correction, because both operations require linear colors and - * the code only supports one transform doing the gamma correction. - * Handle this by doing the pre-multiplication or background - * operation in this code, if necessary. - * - * TODO: fix this by rewriting pngrtran.c (!) - * - * For the moment (given that fixing this in pngrtran.c is an - * enormous change) 'do_local_background' is used to indicate that - * the problem exists. - */ - if ((base_format & PNG_FORMAT_FLAG_ALPHA) != 0) - do_local_background = 1/*maybe*/; - - png_set_rgb_to_gray_fixed(png_ptr, PNG_ERROR_ACTION_NONE, - PNG_RGB_TO_GRAY_DEFAULT, PNG_RGB_TO_GRAY_DEFAULT); - } - - change &= ~PNG_FORMAT_FLAG_COLOR; - } - - /* Set the gamma appropriately, linear for 16-bit input, sRGB otherwise. - */ - { - png_fixed_point input_gamma_default; - - if ((base_format & PNG_FORMAT_FLAG_LINEAR) != 0 && - (image->flags & PNG_IMAGE_FLAG_16BIT_sRGB) == 0) - input_gamma_default = PNG_GAMMA_LINEAR; - else - input_gamma_default = PNG_DEFAULT_sRGB; - - /* Call png_set_alpha_mode to set the default for the input gamma; the - * output gamma is set by a second call below. - */ - png_set_alpha_mode_fixed(png_ptr, PNG_ALPHA_PNG, input_gamma_default); - } - - if (linear != 0) - { - /* If there *is* an alpha channel in the input it must be multiplied - * out; use PNG_ALPHA_STANDARD, otherwise just use PNG_ALPHA_PNG. - */ - if ((base_format & PNG_FORMAT_FLAG_ALPHA) != 0) - mode = PNG_ALPHA_STANDARD; /* associated alpha */ - - else - mode = PNG_ALPHA_PNG; - - output_gamma = PNG_GAMMA_LINEAR; - } - - else - { - mode = PNG_ALPHA_PNG; - output_gamma = PNG_DEFAULT_sRGB; - } - - if ((change & PNG_FORMAT_FLAG_ASSOCIATED_ALPHA) != 0) - { - mode = PNG_ALPHA_OPTIMIZED; - change &= ~PNG_FORMAT_FLAG_ASSOCIATED_ALPHA; - } - - /* If 'do_local_background' is set check for the presence of gamma - * correction; this is part of the work-round for the libpng bug - * described above. - * - * TODO: fix libpng and remove this. - */ - if (do_local_background != 0) - { - png_fixed_point gtest; - - /* This is 'png_gamma_threshold' from pngrtran.c; the test used for - * gamma correction, the screen gamma hasn't been set on png_struct - * yet; it's set below. png_struct::gamma, however, is set to the - * final value. - */ - if (png_muldiv(>est, output_gamma, png_ptr->colorspace.gamma, - PNG_FP_1) != 0 && png_gamma_significant(gtest) == 0) - do_local_background = 0; - - else if (mode == PNG_ALPHA_STANDARD) - { - do_local_background = 2/*required*/; - mode = PNG_ALPHA_PNG; /* prevent libpng doing it */ - } - - /* else leave as 1 for the checks below */ - } - - /* If the bit-depth changes then handle that here. */ - if ((change & PNG_FORMAT_FLAG_LINEAR) != 0) - { - if (linear != 0 /*16-bit output*/) - png_set_expand_16(png_ptr); - - else /* 8-bit output */ - png_set_scale_16(png_ptr); - - change &= ~PNG_FORMAT_FLAG_LINEAR; - } - - /* Now the background/alpha channel changes. */ - if ((change & PNG_FORMAT_FLAG_ALPHA) != 0) - { - /* Removing an alpha channel requires composition for the 8-bit - * formats; for the 16-bit it is already done, above, by the - * pre-multiplication and the channel just needs to be stripped. - */ - if ((base_format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - /* If RGB->gray is happening the alpha channel must be left and the - * operation completed locally. - * - * TODO: fix libpng and remove this. - */ - if (do_local_background != 0) - do_local_background = 2/*required*/; - - /* 16-bit output: just remove the channel */ - else if (linear != 0) /* compose on black (well, pre-multiply) */ - png_set_strip_alpha(png_ptr); - - /* 8-bit output: do an appropriate compose */ - else if (display->background != NULL) - { - png_color_16 c; - - c.index = 0; /*unused*/ - c.red = display->background->red; - c.green = display->background->green; - c.blue = display->background->blue; - c.gray = display->background->green; - - /* This is always an 8-bit sRGB value, using the 'green' channel - * for gray is much better than calculating the luminance here; - * we can get off-by-one errors in that calculation relative to - * the app expectations and that will show up in transparent - * pixels. - */ - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - } - - else /* compose on row: implemented below. */ - { - do_local_compose = 1; - /* This leaves the alpha channel in the output, so it has to be - * removed by the code below. Set the encoding to the 'OPTIMIZE' - * one so the code only has to hack on the pixels that require - * composition. - */ - mode = PNG_ALPHA_OPTIMIZED; - } - } - - else /* output needs an alpha channel */ - { - /* This is tricky because it happens before the swap operation has - * been accomplished; however, the swap does *not* swap the added - * alpha channel (weird API), so it must be added in the correct - * place. - */ - png_uint_32 filler; /* opaque filler */ - int where; - - if (linear != 0) - filler = 65535; - - else - filler = 255; - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED - if ((format & PNG_FORMAT_FLAG_AFIRST) != 0) - { - where = PNG_FILLER_BEFORE; - change &= ~PNG_FORMAT_FLAG_AFIRST; - } - - else -#endif - where = PNG_FILLER_AFTER; - - png_set_add_alpha(png_ptr, filler, where); - } - - /* This stops the (irrelevant) call to swap_alpha below. */ - change &= ~PNG_FORMAT_FLAG_ALPHA; - } - - /* Now set the alpha mode correctly; this is always done, even if there is - * no alpha channel in either the input or the output because it correctly - * sets the output gamma. - */ - png_set_alpha_mode_fixed(png_ptr, mode, output_gamma); - -# ifdef PNG_FORMAT_BGR_SUPPORTED - if ((change & PNG_FORMAT_FLAG_BGR) != 0) - { - /* Check only the output format; PNG is never BGR; don't do this if - * the output is gray, but fix up the 'format' value in that case. - */ - if ((format & PNG_FORMAT_FLAG_COLOR) != 0) - png_set_bgr(png_ptr); - - else - format &= ~PNG_FORMAT_FLAG_BGR; - - change &= ~PNG_FORMAT_FLAG_BGR; - } -# endif - -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if ((change & PNG_FORMAT_FLAG_AFIRST) != 0) - { - /* Only relevant if there is an alpha channel - it's particularly - * important to handle this correctly because do_local_compose may - * be set above and then libpng will keep the alpha channel for this - * code to remove. - */ - if ((format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - /* Disable this if doing a local background, - * TODO: remove this when local background is no longer required. - */ - if (do_local_background != 2) - png_set_swap_alpha(png_ptr); - } - - else - format &= ~PNG_FORMAT_FLAG_AFIRST; - - change &= ~PNG_FORMAT_FLAG_AFIRST; - } -# endif - - /* If the *output* is 16-bit then we need to check for a byte-swap on this - * architecture. - */ - if (linear != 0) - { - PNG_CONST png_uint_16 le = 0x0001; - - if ((*(png_const_bytep) & le) != 0) - png_set_swap(png_ptr); - } - - /* If change is not now 0 some transformation is missing - error out. */ - if (change != 0) - png_error(png_ptr, "png_read_image: unsupported transformation"); - } - - PNG_SKIP_CHUNKS(png_ptr); - - /* Update the 'info' structure and make sure the result is as required; first - * make sure to turn on the interlace handling if it will be required - * (because it can't be turned on *after* the call to png_read_update_info!) - * - * TODO: remove the do_local_background fixup below. - */ - if (do_local_compose == 0 && do_local_background != 2) - passes = png_set_interlace_handling(png_ptr); - - png_read_update_info(png_ptr, info_ptr); - - { - png_uint_32 info_format = 0; - - if ((info_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - info_format |= PNG_FORMAT_FLAG_COLOR; - - if ((info_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0) - { - /* do_local_compose removes this channel below. */ - if (do_local_compose == 0) - { - /* do_local_background does the same if required. */ - if (do_local_background != 2 || - (format & PNG_FORMAT_FLAG_ALPHA) != 0) - info_format |= PNG_FORMAT_FLAG_ALPHA; - } - } - - else if (do_local_compose != 0) /* internal error */ - png_error(png_ptr, "png_image_read: alpha channel lost"); - - if ((format & PNG_FORMAT_FLAG_ASSOCIATED_ALPHA) != 0) { - info_format |= PNG_FORMAT_FLAG_ASSOCIATED_ALPHA; - } - - if (info_ptr->bit_depth == 16) - info_format |= PNG_FORMAT_FLAG_LINEAR; - -#ifdef PNG_FORMAT_BGR_SUPPORTED - if ((png_ptr->transformations & PNG_BGR) != 0) - info_format |= PNG_FORMAT_FLAG_BGR; -#endif - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (do_local_background == 2) - { - if ((format & PNG_FORMAT_FLAG_AFIRST) != 0) - info_format |= PNG_FORMAT_FLAG_AFIRST; - } - - if ((png_ptr->transformations & PNG_SWAP_ALPHA) != 0 || - ((png_ptr->transformations & PNG_ADD_ALPHA) != 0 && - (png_ptr->flags & PNG_FLAG_FILLER_AFTER) == 0)) - { - if (do_local_background == 2) - png_error(png_ptr, "unexpected alpha swap transformation"); - - info_format |= PNG_FORMAT_FLAG_AFIRST; - } -# endif - - /* This is actually an internal error. */ - if (info_format != format) - png_error(png_ptr, "png_read_image: invalid transformations"); - } - - /* Now read the rows. If do_local_compose is set then it is necessary to use - * a local row buffer. The output will be GA, RGBA or BGRA and must be - * converted to G, RGB or BGR as appropriate. The 'local_row' member of the - * display acts as a flag. - */ - { - png_voidp first_row = display->buffer; - ptrdiff_t row_bytes = display->row_stride; - - if (linear != 0) - row_bytes *= 2; - - /* The following expression is designed to work correctly whether it gives - * a signed or an unsigned result. - */ - if (row_bytes < 0) - { - char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_bytes); - first_row = png_voidcast(png_voidp, ptr); - } - - display->first_row = first_row; - display->row_bytes = row_bytes; - } - - if (do_local_compose != 0) - { - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_composite, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - - else if (do_local_background == 2) - { - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_background, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - - else - { - png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes; - - while (--passes >= 0) - { - png_uint_32 y = image->height; - png_bytep row = png_voidcast(png_bytep, display->first_row); - - for (; y > 0; --y) - { - png_read_row(png_ptr, row, NULL); - row += row_bytes; - } - } - - return 1; - } -} - -int PNGAPI -png_image_finish_read(png_imagep image, png_const_colorp background, - void *buffer, png_int_32 row_stride, void *colormap) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - /* Check for row_stride overflow. This check is not performed on the - * original PNG format because it may not occur in the output PNG format - * and libpng deals with the issues of reading the original. - */ - const unsigned int channels = PNG_IMAGE_PIXEL_CHANNELS(image->format); - - /* The following checks just the 'row_stride' calculation to ensure it - * fits in a signed 32-bit value. Because channels/components can be - * either 1 or 2 bytes in size the length of a row can still overflow 32 - * bits; this is just to verify that the 'row_stride' argument can be - * represented. - */ - if (image->width <= 0x7fffffffU/channels) /* no overflow */ - { - png_uint_32 check; - const png_uint_32 png_row_stride = image->width * channels; - - if (row_stride == 0) - row_stride = (png_int_32)/*SAFE*/png_row_stride; - - if (row_stride < 0) - check = (png_uint_32)(-row_stride); - - else - check = (png_uint_32)row_stride; - - /* This verifies 'check', the absolute value of the actual stride - * passed in and detects overflow in the application calculation (i.e. - * if the app did actually pass in a non-zero 'row_stride'. - */ - if (image->opaque != NULL && buffer != NULL && check >= png_row_stride) - { - /* Now check for overflow of the image buffer calculation; this - * limits the whole image size to 32 bits for API compatibility with - * the current, 32-bit, PNG_IMAGE_BUFFER_SIZE macro. - * - * The PNG_IMAGE_BUFFER_SIZE macro is: - * - * (PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)*height*(row_stride)) - * - * And the component size is always 1 or 2, so make sure that the - * number of *bytes* that the application is saying are available - * does actually fit into a 32-bit number. - * - * NOTE: this will be changed in 1.7 because PNG_IMAGE_BUFFER_SIZE - * will be changed to use png_alloc_size_t; bigger images can be - * accomodated on 64-bit systems. - */ - if (image->height <= - 0xffffffffU/PNG_IMAGE_PIXEL_COMPONENT_SIZE(image->format)/check) - { - if ((image->format & PNG_FORMAT_FLAG_COLORMAP) == 0 || - (image->colormap_entries > 0 && colormap != NULL)) - { - int result; - png_image_read_control display; - - memset(&display, 0, (sizeof display)); - display.image = image; - display.buffer = buffer; - display.row_stride = row_stride; - display.colormap = colormap; - display.background = background; - display.local_row = NULL; - - /* Choose the correct 'end' routine; for the color-map case - * all the setup has already been done. - */ - if ((image->format & PNG_FORMAT_FLAG_COLORMAP) != 0) - result = - png_safe_execute(image, - png_image_read_colormap, &display) && - png_safe_execute(image, - png_image_read_colormapped, &display); - - else - result = - png_safe_execute(image, - png_image_read_direct, &display); - - png_image_free(image); - return result; - } - - else - return png_image_error(image, - "png_image_finish_read[color-map]: no color-map"); - } - - else - return png_image_error(image, - "png_image_finish_read: image too large"); - } - - else - return png_image_error(image, - "png_image_finish_read: invalid argument"); - } - - else - return png_image_error(image, - "png_image_finish_read: row_stride too large"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_finish_read: damaged PNG_IMAGE_VERSION"); - - return 0; -} - -#endif /* SIMPLIFIED_READ */ -#endif /* READ */ diff --git a/src/png/libpng/pngrio.c b/src/png/libpng/pngrio.c deleted file mode 100644 index 7e26e855c..000000000 --- a/src/png/libpng/pngrio.c +++ /dev/null @@ -1,120 +0,0 @@ - -/* pngrio.c - functions for data input - * - * Last changed in libpng 1.6.24 [August 4, 2016] - * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all input. Users who need - * special handling are expected to write a function that has the same - * arguments as this and performs a similar function, but that possibly - * has a different input method. Note that you shouldn't change this - * function, but rather write a replacement function and then make - * libpng use it at run time with png_set_read_fn(...). - */ - -#include "pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* Read the data from whatever input you are using. The default routine - * reads from a file pointer. Note that this routine sometimes gets called - * with very small lengths, so you should implement some kind of simple - * buffering if you are using unbuffered reads. This should never be asked - * to read more than 64K on a 16-bit machine. - */ -void /* PRIVATE */ -png_read_data(png_structrp png_ptr, png_bytep data, png_size_t length) -{ - png_debug1(4, "reading %d bytes", (int)length); - - if (png_ptr->read_data_fn != NULL) - (*(png_ptr->read_data_fn))(png_ptr, data, length); - - else - png_error(png_ptr, "Call to NULL read function"); -} - -#ifdef PNG_STDIO_SUPPORTED -/* This is the function that does the actual reading of data. If you are - * not reading from a standard C stream, you should create a replacement - * read_data function and use it at run time with png_set_read_fn(), rather - * than changing the library. - */ -void PNGCBAPI -png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - if (png_ptr == NULL) - return; - - /* fread() returns 0 on error, so it is OK to store this in a png_size_t - * instead of an int, which is what fread() actually returns. - */ - check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr)); - - if (check != length) - png_error(png_ptr, "Read Error"); -} -#endif - -/* This function allows the application to supply a new input function - * for libpng if standard C streams aren't being used. - * - * This function takes as its arguments: - * - * png_ptr - pointer to a png input data structure - * - * io_ptr - pointer to user supplied structure containing info about - * the input functions. May be NULL. - * - * read_data_fn - pointer to a new input function that takes as its - * arguments a pointer to a png_struct, a pointer to - * a location where input data can be stored, and a 32-bit - * unsigned int that is the number of bytes to be read. - * To exit and output any fatal error messages the new write - * function should call png_error(png_ptr, "Error msg"). - * May be NULL, in which case libpng's default function will - * be used. - */ -void PNGAPI -png_set_read_fn(png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr read_data_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->io_ptr = io_ptr; - -#ifdef PNG_STDIO_SUPPORTED - if (read_data_fn != NULL) - png_ptr->read_data_fn = read_data_fn; - - else - png_ptr->read_data_fn = png_default_read_data; -#else - png_ptr->read_data_fn = read_data_fn; -#endif - -#ifdef PNG_WRITE_SUPPORTED - /* It is an error to write to a read device */ - if (png_ptr->write_data_fn != NULL) - { - png_ptr->write_data_fn = NULL; - png_warning(png_ptr, - "Can't set both read_data_fn and write_data_fn in the" - " same structure"); - } -#endif - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_ptr->output_flush_fn = NULL; -#endif -} -#endif /* READ */ diff --git a/src/png/libpng/pngrtran.c b/src/png/libpng/pngrtran.c deleted file mode 100644 index c18965031..000000000 --- a/src/png/libpng/pngrtran.c +++ /dev/null @@ -1,5010 +0,0 @@ - -/* pngrtran.c - transforms the data in a row for PNG readers - * - * Last changed in libpng 1.6.33 [September 28, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file contains functions optionally called by an application - * in order to tell libpng how to handle data when reading a PNG. - * Transformations that are used in both reading and writing are - * in pngtrans.c. - */ - -#include "pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* Set the action on getting a CRC error for an ancillary or critical chunk. */ -void PNGAPI -png_set_crc_action(png_structrp png_ptr, int crit_action, int ancil_action) -{ - png_debug(1, "in png_set_crc_action"); - - if (png_ptr == NULL) - return; - - /* Tell libpng how we react to CRC errors in critical chunks */ - switch (crit_action) - { - case PNG_CRC_NO_CHANGE: /* Leave setting as is */ - break; - - case PNG_CRC_WARN_USE: /* Warn/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE; - break; - - case PNG_CRC_QUIET_USE: /* Quiet/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE | - PNG_FLAG_CRC_CRITICAL_IGNORE; - break; - - case PNG_CRC_WARN_DISCARD: /* Not a valid action for critical data */ - png_warning(png_ptr, - "Can't discard critical data on CRC error"); - /* FALLTHROUGH */ - case PNG_CRC_ERROR_QUIT: /* Error/quit */ - - case PNG_CRC_DEFAULT: - default: - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - break; - } - - /* Tell libpng how we react to CRC errors in ancillary chunks */ - switch (ancil_action) - { - case PNG_CRC_NO_CHANGE: /* Leave setting as is */ - break; - - case PNG_CRC_WARN_USE: /* Warn/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE; - break; - - case PNG_CRC_QUIET_USE: /* Quiet/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE | - PNG_FLAG_CRC_ANCILLARY_NOWARN; - break; - - case PNG_CRC_ERROR_QUIT: /* Error/quit */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN; - break; - - case PNG_CRC_WARN_DISCARD: /* Warn/discard data */ - - case PNG_CRC_DEFAULT: - default: - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - break; - } -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* Is it OK to set a transformation now? Only if png_start_read_image or - * png_read_update_info have not been called. It is not necessary for the IHDR - * to have been read in all cases; the need_IHDR parameter allows for this - * check too. - */ -static int -png_rtran_ok(png_structrp png_ptr, int need_IHDR) -{ - if (png_ptr != NULL) - { - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) != 0) - png_app_error(png_ptr, - "invalid after png_start_read_image or png_read_update_info"); - - else if (need_IHDR && (png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_app_error(png_ptr, "invalid before the PNG header has been read"); - - else - { - /* Turn on failure to initialize correctly for all transforms. */ - png_ptr->flags |= PNG_FLAG_DETECT_UNINITIALIZED; - - return 1; /* Ok */ - } - } - - return 0; /* no png_error possible! */ -} -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* Handle alpha and tRNS via a background color */ -void PNGFAPI -png_set_background_fixed(png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, png_fixed_point background_gamma) -{ - png_debug(1, "in png_set_background_fixed"); - - if (png_rtran_ok(png_ptr, 0) == 0 || background_color == NULL) - return; - - if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN) - { - png_warning(png_ptr, "Application must supply a known background gamma"); - return; - } - - png_ptr->transformations |= PNG_COMPOSE | PNG_STRIP_ALPHA; - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - - png_ptr->background = *background_color; - png_ptr->background_gamma = background_gamma; - png_ptr->background_gamma_type = (png_byte)(background_gamma_code); - if (need_expand != 0) - png_ptr->transformations |= PNG_BACKGROUND_EXPAND; - else - png_ptr->transformations &= ~PNG_BACKGROUND_EXPAND; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_background(png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma) -{ - png_set_background_fixed(png_ptr, background_color, background_gamma_code, - need_expand, png_fixed(png_ptr, background_gamma, "png_set_background")); -} -# endif /* FLOATING_POINT */ -#endif /* READ_BACKGROUND */ - -/* Scale 16-bit depth files to 8-bit depth. If both of these are set then the - * one that pngrtran does first (scale) happens. This is necessary to allow the - * TRANSFORM and API behavior to be somewhat consistent, and it's simpler. - */ -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -void PNGAPI -png_set_scale_16(png_structrp png_ptr) -{ - png_debug(1, "in png_set_scale_16"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= PNG_SCALE_16_TO_8; -} -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -/* Chop 16-bit depth files to 8-bit depth */ -void PNGAPI -png_set_strip_16(png_structrp png_ptr) -{ - png_debug(1, "in png_set_strip_16"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= PNG_16_TO_8; -} -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -void PNGAPI -png_set_strip_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_strip_alpha"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= PNG_STRIP_ALPHA; -} -#endif - -#if defined(PNG_READ_ALPHA_MODE_SUPPORTED) || defined(PNG_READ_GAMMA_SUPPORTED) -static png_fixed_point -translate_gamma_flags(png_structrp png_ptr, png_fixed_point output_gamma, - int is_screen) -{ - /* Check for flag values. The main reason for having the old Mac value as a - * flag is that it is pretty near impossible to work out what the correct - * value is from Apple documentation - a working Mac system is needed to - * discover the value! - */ - if (output_gamma == PNG_DEFAULT_sRGB || - output_gamma == PNG_FP_1 / PNG_DEFAULT_sRGB) - { - /* If there is no sRGB support this just sets the gamma to the standard - * sRGB value. (This is a side effect of using this function!) - */ -# ifdef PNG_READ_sRGB_SUPPORTED - png_ptr->flags |= PNG_FLAG_ASSUME_sRGB; -# else - PNG_UNUSED(png_ptr) -# endif - if (is_screen != 0) - output_gamma = PNG_GAMMA_sRGB; - else - output_gamma = PNG_GAMMA_sRGB_INVERSE; - } - - else if (output_gamma == PNG_GAMMA_MAC_18 || - output_gamma == PNG_FP_1 / PNG_GAMMA_MAC_18) - { - if (is_screen != 0) - output_gamma = PNG_GAMMA_MAC_OLD; - else - output_gamma = PNG_GAMMA_MAC_INVERSE; - } - - return output_gamma; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -static png_fixed_point -convert_gamma_value(png_structrp png_ptr, double output_gamma) -{ - /* The following silently ignores cases where fixed point (times 100,000) - * gamma values are passed to the floating point API. This is safe and it - * means the fixed point constants work just fine with the floating point - * API. The alternative would just lead to undetected errors and spurious - * bug reports. Negative values fail inside the _fixed API unless they - * correspond to the flag values. - */ - if (output_gamma > 0 && output_gamma < 128) - output_gamma *= PNG_FP_1; - - /* This preserves -1 and -2 exactly: */ - output_gamma = floor(output_gamma + .5); - - if (output_gamma > PNG_FP_MAX || output_gamma < PNG_FP_MIN) - png_fixed_error(png_ptr, "gamma value"); - - return (png_fixed_point)output_gamma; -} -# endif -#endif /* READ_ALPHA_MODE || READ_GAMMA */ - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -void PNGFAPI -png_set_alpha_mode_fixed(png_structrp png_ptr, int mode, - png_fixed_point output_gamma) -{ - int compose = 0; - png_fixed_point file_gamma; - - png_debug(1, "in png_set_alpha_mode"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - output_gamma = translate_gamma_flags(png_ptr, output_gamma, 1/*screen*/); - - /* Validate the value to ensure it is in a reasonable range. The value - * is expected to be 1 or greater, but this range test allows for some - * viewing correction values. The intent is to weed out users of this API - * who use the inverse of the gamma value accidentally! Since some of these - * values are reasonable this may have to be changed: - * - * 1.6.x: changed from 0.07..3 to 0.01..100 (to accomodate the optimal 16-bit - * gamma of 36, and its reciprocal.) - */ - if (output_gamma < 1000 || output_gamma > 10000000) - png_error(png_ptr, "output gamma out of expected range"); - - /* The default file gamma is the inverse of the output gamma; the output - * gamma may be changed below so get the file value first: - */ - file_gamma = png_reciprocal(output_gamma); - - /* There are really 8 possibilities here, composed of any combination - * of: - * - * premultiply the color channels - * do not encode non-opaque pixels - * encode the alpha as well as the color channels - * - * The differences disappear if the input/output ('screen') gamma is 1.0, - * because then the encoding is a no-op and there is only the choice of - * premultiplying the color channels or not. - * - * png_set_alpha_mode and png_set_background interact because both use - * png_compose to do the work. Calling both is only useful when - * png_set_alpha_mode is used to set the default mode - PNG_ALPHA_PNG - along - * with a default gamma value. Otherwise PNG_COMPOSE must not be set. - */ - switch (mode) - { - case PNG_ALPHA_PNG: /* default: png standard */ - /* No compose, but it may be set by png_set_background! */ - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - break; - - case PNG_ALPHA_ASSOCIATED: /* color channels premultiplied */ - compose = 1; - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - /* The output is linear: */ - output_gamma = PNG_FP_1; - break; - - case PNG_ALPHA_OPTIMIZED: /* associated, non-opaque pixels linear */ - compose = 1; - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags |= PNG_FLAG_OPTIMIZE_ALPHA; - /* output_gamma records the encoding of opaque pixels! */ - break; - - case PNG_ALPHA_BROKEN: /* associated, non-linear, alpha encoded */ - compose = 1; - png_ptr->transformations |= PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - break; - - default: - png_error(png_ptr, "invalid alpha mode"); - } - - /* Only set the default gamma if the file gamma has not been set (this has - * the side effect that the gamma in a second call to png_set_alpha_mode will - * be ignored.) - */ - if (png_ptr->colorspace.gamma == 0) - { - png_ptr->colorspace.gamma = file_gamma; - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - } - - /* But always set the output gamma: */ - png_ptr->screen_gamma = output_gamma; - - /* Finally, if pre-multiplying, set the background fields to achieve the - * desired result. - */ - if (compose != 0) - { - /* And obtain alpha pre-multiplication by composing on black: */ - memset(&png_ptr->background, 0, (sizeof png_ptr->background)); - png_ptr->background_gamma = png_ptr->colorspace.gamma; /* just in case */ - png_ptr->background_gamma_type = PNG_BACKGROUND_GAMMA_FILE; - png_ptr->transformations &= ~PNG_BACKGROUND_EXPAND; - - if ((png_ptr->transformations & PNG_COMPOSE) != 0) - png_error(png_ptr, - "conflicting calls to set alpha mode and background"); - - png_ptr->transformations |= PNG_COMPOSE; - } -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_alpha_mode(png_structrp png_ptr, int mode, double output_gamma) -{ - png_set_alpha_mode_fixed(png_ptr, mode, convert_gamma_value(png_ptr, - output_gamma)); -} -# endif -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* Dither file to 8-bit. Supply a palette, the current number - * of elements in the palette, the maximum number of elements - * allowed, and a histogram if possible. If the current number - * of colors is greater than the maximum number, the palette will be - * modified to fit in the maximum number. "full_quantize" indicates - * whether we need a quantizing cube set up for RGB images, or if we - * simply are reducing the number of colors in a paletted image. - */ - -typedef struct png_dsort_struct -{ - struct png_dsort_struct * next; - png_byte left; - png_byte right; -} png_dsort; -typedef png_dsort * png_dsortp; -typedef png_dsort * * png_dsortpp; - -void PNGAPI -png_set_quantize(png_structrp png_ptr, png_colorp palette, - int num_palette, int maximum_colors, png_const_uint_16p histogram, - int full_quantize) -{ - png_debug(1, "in png_set_quantize"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= PNG_QUANTIZE; - - if (full_quantize == 0) - { - int i; - - png_ptr->quantize_index = (png_bytep)png_malloc(png_ptr, - (png_alloc_size_t)((png_uint_32)num_palette * (sizeof (png_byte)))); - for (i = 0; i < num_palette; i++) - png_ptr->quantize_index[i] = (png_byte)i; - } - - if (num_palette > maximum_colors) - { - if (histogram != NULL) - { - /* This is easy enough, just throw out the least used colors. - * Perhaps not the best solution, but good enough. - */ - - int i; - - /* Initialize an array to sort colors */ - png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr, - (png_alloc_size_t)((png_uint_32)num_palette * (sizeof (png_byte)))); - - /* Initialize the quantize_sort array */ - for (i = 0; i < num_palette; i++) - png_ptr->quantize_sort[i] = (png_byte)i; - - /* Find the least used palette entries by starting a - * bubble sort, and running it until we have sorted - * out enough colors. Note that we don't care about - * sorting all the colors, just finding which are - * least used. - */ - - for (i = num_palette - 1; i >= maximum_colors; i--) - { - int done; /* To stop early if the list is pre-sorted */ - int j; - - done = 1; - for (j = 0; j < i; j++) - { - if (histogram[png_ptr->quantize_sort[j]] - < histogram[png_ptr->quantize_sort[j + 1]]) - { - png_byte t; - - t = png_ptr->quantize_sort[j]; - png_ptr->quantize_sort[j] = png_ptr->quantize_sort[j + 1]; - png_ptr->quantize_sort[j + 1] = t; - done = 0; - } - } - - if (done != 0) - break; - } - - /* Swap the palette around, and set up a table, if necessary */ - if (full_quantize != 0) - { - int j = num_palette; - - /* Put all the useful colors within the max, but don't - * move the others. - */ - for (i = 0; i < maximum_colors; i++) - { - if ((int)png_ptr->quantize_sort[i] >= maximum_colors) - { - do - j--; - while ((int)png_ptr->quantize_sort[j] >= maximum_colors); - - palette[i] = palette[j]; - } - } - } - else - { - int j = num_palette; - - /* Move all the used colors inside the max limit, and - * develop a translation table. - */ - for (i = 0; i < maximum_colors; i++) - { - /* Only move the colors we need to */ - if ((int)png_ptr->quantize_sort[i] >= maximum_colors) - { - png_color tmp_color; - - do - j--; - while ((int)png_ptr->quantize_sort[j] >= maximum_colors); - - tmp_color = palette[j]; - palette[j] = palette[i]; - palette[i] = tmp_color; - /* Indicate where the color went */ - png_ptr->quantize_index[j] = (png_byte)i; - png_ptr->quantize_index[i] = (png_byte)j; - } - } - - /* Find closest color for those colors we are not using */ - for (i = 0; i < num_palette; i++) - { - if ((int)png_ptr->quantize_index[i] >= maximum_colors) - { - int min_d, k, min_k, d_index; - - /* Find the closest color to one we threw out */ - d_index = png_ptr->quantize_index[i]; - min_d = PNG_COLOR_DIST(palette[d_index], palette[0]); - for (k = 1, min_k = 0; k < maximum_colors; k++) - { - int d; - - d = PNG_COLOR_DIST(palette[d_index], palette[k]); - - if (d < min_d) - { - min_d = d; - min_k = k; - } - } - /* Point to closest color */ - png_ptr->quantize_index[i] = (png_byte)min_k; - } - } - } - png_free(png_ptr, png_ptr->quantize_sort); - png_ptr->quantize_sort = NULL; - } - else - { - /* This is much harder to do simply (and quickly). Perhaps - * we need to go through a median cut routine, but those - * don't always behave themselves with only a few colors - * as input. So we will just find the closest two colors, - * and throw out one of them (chosen somewhat randomly). - * [We don't understand this at all, so if someone wants to - * work on improving it, be our guest - AED, GRP] - */ - int i; - int max_d; - int num_new_palette; - png_dsortp t; - png_dsortpp hash; - - t = NULL; - - /* Initialize palette index arrays */ - png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr, - (png_alloc_size_t)((png_uint_32)num_palette * - (sizeof (png_byte)))); - png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr, - (png_alloc_size_t)((png_uint_32)num_palette * - (sizeof (png_byte)))); - - /* Initialize the sort array */ - for (i = 0; i < num_palette; i++) - { - png_ptr->index_to_palette[i] = (png_byte)i; - png_ptr->palette_to_index[i] = (png_byte)i; - } - - hash = (png_dsortpp)png_calloc(png_ptr, (png_alloc_size_t)(769 * - (sizeof (png_dsortp)))); - - num_new_palette = num_palette; - - /* Initial wild guess at how far apart the farthest pixel - * pair we will be eliminating will be. Larger - * numbers mean more areas will be allocated, Smaller - * numbers run the risk of not saving enough data, and - * having to do this all over again. - * - * I have not done extensive checking on this number. - */ - max_d = 96; - - while (num_new_palette > maximum_colors) - { - for (i = 0; i < num_new_palette - 1; i++) - { - int j; - - for (j = i + 1; j < num_new_palette; j++) - { - int d; - - d = PNG_COLOR_DIST(palette[i], palette[j]); - - if (d <= max_d) - { - - t = (png_dsortp)png_malloc_warn(png_ptr, - (png_alloc_size_t)(sizeof (png_dsort))); - - if (t == NULL) - break; - - t->next = hash[d]; - t->left = (png_byte)i; - t->right = (png_byte)j; - hash[d] = t; - } - } - if (t == NULL) - break; - } - - if (t != NULL) - for (i = 0; i <= max_d; i++) - { - if (hash[i] != NULL) - { - png_dsortp p; - - for (p = hash[i]; p; p = p->next) - { - if ((int)png_ptr->index_to_palette[p->left] - < num_new_palette && - (int)png_ptr->index_to_palette[p->right] - < num_new_palette) - { - int j, next_j; - - if (num_new_palette & 0x01) - { - j = p->left; - next_j = p->right; - } - else - { - j = p->right; - next_j = p->left; - } - - num_new_palette--; - palette[png_ptr->index_to_palette[j]] - = palette[num_new_palette]; - if (full_quantize == 0) - { - int k; - - for (k = 0; k < num_palette; k++) - { - if (png_ptr->quantize_index[k] == - png_ptr->index_to_palette[j]) - png_ptr->quantize_index[k] = - png_ptr->index_to_palette[next_j]; - - if ((int)png_ptr->quantize_index[k] == - num_new_palette) - png_ptr->quantize_index[k] = - png_ptr->index_to_palette[j]; - } - } - - png_ptr->index_to_palette[png_ptr->palette_to_index - [num_new_palette]] = png_ptr->index_to_palette[j]; - - png_ptr->palette_to_index[png_ptr->index_to_palette[j]] - = png_ptr->palette_to_index[num_new_palette]; - - png_ptr->index_to_palette[j] = - (png_byte)num_new_palette; - - png_ptr->palette_to_index[num_new_palette] = - (png_byte)j; - } - if (num_new_palette <= maximum_colors) - break; - } - if (num_new_palette <= maximum_colors) - break; - } - } - - for (i = 0; i < 769; i++) - { - if (hash[i] != NULL) - { - png_dsortp p = hash[i]; - while (p) - { - t = p->next; - png_free(png_ptr, p); - p = t; - } - } - hash[i] = 0; - } - max_d += 96; - } - png_free(png_ptr, hash); - png_free(png_ptr, png_ptr->palette_to_index); - png_free(png_ptr, png_ptr->index_to_palette); - png_ptr->palette_to_index = NULL; - png_ptr->index_to_palette = NULL; - } - num_palette = maximum_colors; - } - if (png_ptr->palette == NULL) - { - png_ptr->palette = palette; - } - png_ptr->num_palette = (png_uint_16)num_palette; - - if (full_quantize != 0) - { - int i; - png_bytep distance; - int total_bits = PNG_QUANTIZE_RED_BITS + PNG_QUANTIZE_GREEN_BITS + - PNG_QUANTIZE_BLUE_BITS; - int num_red = (1 << PNG_QUANTIZE_RED_BITS); - int num_green = (1 << PNG_QUANTIZE_GREEN_BITS); - int num_blue = (1 << PNG_QUANTIZE_BLUE_BITS); - png_size_t num_entries = ((png_size_t)1 << total_bits); - - png_ptr->palette_lookup = (png_bytep)png_calloc(png_ptr, - (png_alloc_size_t)(num_entries * (sizeof (png_byte)))); - - distance = (png_bytep)png_malloc(png_ptr, (png_alloc_size_t)(num_entries * - (sizeof (png_byte)))); - - memset(distance, 0xff, num_entries * (sizeof (png_byte))); - - for (i = 0; i < num_palette; i++) - { - int ir, ig, ib; - int r = (palette[i].red >> (8 - PNG_QUANTIZE_RED_BITS)); - int g = (palette[i].green >> (8 - PNG_QUANTIZE_GREEN_BITS)); - int b = (palette[i].blue >> (8 - PNG_QUANTIZE_BLUE_BITS)); - - for (ir = 0; ir < num_red; ir++) - { - /* int dr = abs(ir - r); */ - int dr = ((ir > r) ? ir - r : r - ir); - int index_r = (ir << (PNG_QUANTIZE_BLUE_BITS + - PNG_QUANTIZE_GREEN_BITS)); - - for (ig = 0; ig < num_green; ig++) - { - /* int dg = abs(ig - g); */ - int dg = ((ig > g) ? ig - g : g - ig); - int dt = dr + dg; - int dm = ((dr > dg) ? dr : dg); - int index_g = index_r | (ig << PNG_QUANTIZE_BLUE_BITS); - - for (ib = 0; ib < num_blue; ib++) - { - int d_index = index_g | ib; - /* int db = abs(ib - b); */ - int db = ((ib > b) ? ib - b : b - ib); - int dmax = ((dm > db) ? dm : db); - int d = dmax + dt + db; - - if (d < (int)distance[d_index]) - { - distance[d_index] = (png_byte)d; - png_ptr->palette_lookup[d_index] = (png_byte)i; - } - } - } - } - } - - png_free(png_ptr, distance); - } -} -#endif /* READ_QUANTIZE */ - -#ifdef PNG_READ_GAMMA_SUPPORTED -void PNGFAPI -png_set_gamma_fixed(png_structrp png_ptr, png_fixed_point scrn_gamma, - png_fixed_point file_gamma) -{ - png_debug(1, "in png_set_gamma_fixed"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - /* New in libpng-1.5.4 - reserve particular negative values as flags. */ - scrn_gamma = translate_gamma_flags(png_ptr, scrn_gamma, 1/*screen*/); - file_gamma = translate_gamma_flags(png_ptr, file_gamma, 0/*file*/); - - /* Checking the gamma values for being >0 was added in 1.5.4 along with the - * premultiplied alpha support; this actually hides an undocumented feature - * of the previous implementation which allowed gamma processing to be - * disabled in background handling. There is no evidence (so far) that this - * was being used; however, png_set_background itself accepted and must still - * accept '0' for the gamma value it takes, because it isn't always used. - * - * Since this is an API change (albeit a very minor one that removes an - * undocumented API feature) the following checks were only enabled in - * libpng-1.6.0. - */ - if (file_gamma <= 0) - png_error(png_ptr, "invalid file gamma in png_set_gamma"); - - if (scrn_gamma <= 0) - png_error(png_ptr, "invalid screen gamma in png_set_gamma"); - - /* Set the gamma values unconditionally - this overrides the value in the PNG - * file if a gAMA chunk was present. png_set_alpha_mode provides a - * different, easier, way to default the file gamma. - */ - png_ptr->colorspace.gamma = file_gamma; - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - png_ptr->screen_gamma = scrn_gamma; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_gamma(png_structrp png_ptr, double scrn_gamma, double file_gamma) -{ - png_set_gamma_fixed(png_ptr, convert_gamma_value(png_ptr, scrn_gamma), - convert_gamma_value(png_ptr, file_gamma)); -} -# endif /* FLOATING_POINT */ -#endif /* READ_GAMMA */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expand paletted images to RGB, expand grayscale images of - * less than 8-bit depth to 8-bit depth, and expand tRNS chunks - * to alpha channels. - */ -void PNGAPI -png_set_expand(png_structrp png_ptr) -{ - png_debug(1, "in png_set_expand"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); -} - -/* GRR 19990627: the following three functions currently are identical - * to png_set_expand(). However, it is entirely reasonable that someone - * might wish to expand an indexed image to RGB but *not* expand a single, - * fully transparent palette entry to a full alpha channel--perhaps instead - * convert tRNS to the grayscale/RGB format (16-bit RGB value), or replace - * the transparent color with a particular RGB value, or drop tRNS entirely. - * IOW, a future version of the library may make the transformations flag - * a bit more fine-grained, with separate bits for each of these three - * functions. - * - * More to the point, these functions make it obvious what libpng will be - * doing, whereas "expand" can (and does) mean any number of things. - * - * GRP 20060307: In libpng-1.2.9, png_set_gray_1_2_4_to_8() was modified - * to expand only the sample depth but not to expand the tRNS to alpha - * and its name was changed to png_set_expand_gray_1_2_4_to_8(). - */ - -/* Expand paletted images to RGB. */ -void PNGAPI -png_set_palette_to_rgb(png_structrp png_ptr) -{ - png_debug(1, "in png_set_palette_to_rgb"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); -} - -/* Expand grayscale images of less than 8-bit depth to 8 bits. */ -void PNGAPI -png_set_expand_gray_1_2_4_to_8(png_structrp png_ptr) -{ - png_debug(1, "in png_set_expand_gray_1_2_4_to_8"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= PNG_EXPAND; -} - -/* Expand tRNS chunks to alpha channels. */ -void PNGAPI -png_set_tRNS_to_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_tRNS_to_alpha"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); -} -#endif /* READ_EXPAND */ - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* Expand to 16-bit channels, expand the tRNS chunk too (because otherwise - * it may not work correctly.) - */ -void PNGAPI -png_set_expand_16(png_structrp png_ptr) -{ - png_debug(1, "in png_set_expand_16"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - png_ptr->transformations |= (PNG_EXPAND_16 | PNG_EXPAND | PNG_EXPAND_tRNS); -} -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -void PNGAPI -png_set_gray_to_rgb(png_structrp png_ptr) -{ - png_debug(1, "in png_set_gray_to_rgb"); - - if (png_rtran_ok(png_ptr, 0) == 0) - return; - - /* Because rgb must be 8 bits or more: */ - png_set_expand_gray_1_2_4_to_8(png_ptr); - png_ptr->transformations |= PNG_GRAY_TO_RGB; -} -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -void PNGFAPI -png_set_rgb_to_gray_fixed(png_structrp png_ptr, int error_action, - png_fixed_point red, png_fixed_point green) -{ - png_debug(1, "in png_set_rgb_to_gray"); - - /* Need the IHDR here because of the check on color_type below. */ - /* TODO: fix this */ - if (png_rtran_ok(png_ptr, 1) == 0) - return; - - switch (error_action) - { - case PNG_ERROR_ACTION_NONE: - png_ptr->transformations |= PNG_RGB_TO_GRAY; - break; - - case PNG_ERROR_ACTION_WARN: - png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN; - break; - - case PNG_ERROR_ACTION_ERROR: - png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR; - break; - - default: - png_error(png_ptr, "invalid error action to rgb_to_gray"); - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -#ifdef PNG_READ_EXPAND_SUPPORTED - png_ptr->transformations |= PNG_EXPAND; -#else - { - /* Make this an error in 1.6 because otherwise the application may assume - * that it just worked and get a memory overwrite. - */ - png_error(png_ptr, - "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED"); - - /* png_ptr->transformations &= ~PNG_RGB_TO_GRAY; */ - } -#endif - { - if (red >= 0 && green >= 0 && red + green <= PNG_FP_1) - { - png_uint_16 red_int, green_int; - - /* NOTE: this calculation does not round, but this behavior is retained - * for consistency; the inaccuracy is very small. The code here always - * overwrites the coefficients, regardless of whether they have been - * defaulted or set already. - */ - red_int = (png_uint_16)(((png_uint_32)red*32768)/100000); - green_int = (png_uint_16)(((png_uint_32)green*32768)/100000); - - png_ptr->rgb_to_gray_red_coeff = red_int; - png_ptr->rgb_to_gray_green_coeff = green_int; - png_ptr->rgb_to_gray_coefficients_set = 1; - } - - else - { - if (red >= 0 && green >= 0) - png_app_warning(png_ptr, - "ignoring out of range rgb_to_gray coefficients"); - - /* Use the defaults, from the cHRM chunk if set, else the historical - * values which are close to the sRGB/HDTV/ITU-Rec 709 values. See - * png_do_rgb_to_gray for more discussion of the values. In this case - * the coefficients are not marked as 'set' and are not overwritten if - * something has already provided a default. - */ - if (png_ptr->rgb_to_gray_red_coeff == 0 && - png_ptr->rgb_to_gray_green_coeff == 0) - { - png_ptr->rgb_to_gray_red_coeff = 6968; - png_ptr->rgb_to_gray_green_coeff = 23434; - /* png_ptr->rgb_to_gray_blue_coeff = 2366; */ - } - } - } -} - -#ifdef PNG_FLOATING_POINT_SUPPORTED -/* Convert a RGB image to a grayscale of the same width. This allows us, - * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image. - */ - -void PNGAPI -png_set_rgb_to_gray(png_structrp png_ptr, int error_action, double red, - double green) -{ - png_set_rgb_to_gray_fixed(png_ptr, error_action, - png_fixed(png_ptr, red, "rgb to gray red coefficient"), - png_fixed(png_ptr, green, "rgb to gray green coefficient")); -} -#endif /* FLOATING POINT */ - -#endif /* RGB_TO_GRAY */ - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -void PNGAPI -png_set_read_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr - read_user_transform_fn) -{ - png_debug(1, "in png_set_read_user_transform_fn"); - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_ptr->transformations |= PNG_USER_TRANSFORM; - png_ptr->read_user_transform_fn = read_user_transform_fn; -#endif -} -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -#ifdef PNG_READ_GAMMA_SUPPORTED -/* In the case of gamma transformations only do transformations on images where - * the [file] gamma and screen_gamma are not close reciprocals, otherwise it - * slows things down slightly, and also needlessly introduces small errors. - */ -static int /* PRIVATE */ -png_gamma_threshold(png_fixed_point screen_gamma, png_fixed_point file_gamma) -{ - /* PNG_GAMMA_THRESHOLD is the threshold for performing gamma - * correction as a difference of the overall transform from 1.0 - * - * We want to compare the threshold with s*f - 1, if we get - * overflow here it is because of wacky gamma values so we - * turn on processing anyway. - */ - png_fixed_point gtest; - return !png_muldiv(>est, screen_gamma, file_gamma, PNG_FP_1) || - png_gamma_significant(gtest); -} -#endif - -/* Initialize everything needed for the read. This includes modifying - * the palette. - */ - -/* For the moment 'png_init_palette_transformations' and - * 'png_init_rgb_transformations' only do some flag canceling optimizations. - * The intent is that these two routines should have palette or rgb operations - * extracted from 'png_init_read_transformations'. - */ -static void /* PRIVATE */ -png_init_palette_transformations(png_structrp png_ptr) -{ - /* Called to handle the (input) palette case. In png_do_read_transformations - * the first step is to expand the palette if requested, so this code must - * take care to only make changes that are invariant with respect to the - * palette expansion, or only do them if there is no expansion. - * - * STRIP_ALPHA has already been handled in the caller (by setting num_trans - * to 0.) - */ - int input_has_alpha = 0; - int input_has_transparency = 0; - - if (png_ptr->num_trans > 0) - { - int i; - - /* Ignore if all the entries are opaque (unlikely!) */ - for (i=0; inum_trans; ++i) - { - if (png_ptr->trans_alpha[i] == 255) - continue; - else if (png_ptr->trans_alpha[i] == 0) - input_has_transparency = 1; - else - { - input_has_transparency = 1; - input_has_alpha = 1; - break; - } - } - } - - /* If no alpha we can optimize. */ - if (input_has_alpha == 0) - { - /* Any alpha means background and associative alpha processing is - * required, however if the alpha is 0 or 1 throughout OPTIMIZE_ALPHA - * and ENCODE_ALPHA are irrelevant. - */ - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - - if (input_has_transparency == 0) - png_ptr->transformations &= ~(PNG_COMPOSE | PNG_BACKGROUND_EXPAND); - } - -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - /* png_set_background handling - deals with the complexity of whether the - * background color is in the file format or the screen format in the case - * where an 'expand' will happen. - */ - - /* The following code cannot be entered in the alpha pre-multiplication case - * because PNG_BACKGROUND_EXPAND is cancelled below. - */ - if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) != 0 && - (png_ptr->transformations & PNG_EXPAND) != 0) - { - { - png_ptr->background.red = - png_ptr->palette[png_ptr->background.index].red; - png_ptr->background.green = - png_ptr->palette[png_ptr->background.index].green; - png_ptr->background.blue = - png_ptr->palette[png_ptr->background.index].blue; - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0) - { - if ((png_ptr->transformations & PNG_EXPAND_tRNS) == 0) - { - /* Invert the alpha channel (in tRNS) unless the pixels are - * going to be expanded, in which case leave it for later - */ - int i, istop = png_ptr->num_trans; - - for (i=0; itrans_alpha[i] = (png_byte)(255 - - png_ptr->trans_alpha[i]); - } - } -#endif /* READ_INVERT_ALPHA */ - } - } /* background expand and (therefore) no alpha association. */ -#endif /* READ_EXPAND && READ_BACKGROUND */ -} - -static void /* PRIVATE */ -png_init_rgb_transformations(png_structrp png_ptr) -{ - /* Added to libpng-1.5.4: check the color type to determine whether there - * is any alpha or transparency in the image and simply cancel the - * background and alpha mode stuff if there isn't. - */ - int input_has_alpha = (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0; - int input_has_transparency = png_ptr->num_trans > 0; - - /* If no alpha we can optimize. */ - if (input_has_alpha == 0) - { - /* Any alpha means background and associative alpha processing is - * required, however if the alpha is 0 or 1 throughout OPTIMIZE_ALPHA - * and ENCODE_ALPHA are irrelevant. - */ -# ifdef PNG_READ_ALPHA_MODE_SUPPORTED - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; -# endif - - if (input_has_transparency == 0) - png_ptr->transformations &= ~(PNG_COMPOSE | PNG_BACKGROUND_EXPAND); - } - -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - /* png_set_background handling - deals with the complexity of whether the - * background color is in the file format or the screen format in the case - * where an 'expand' will happen. - */ - - /* The following code cannot be entered in the alpha pre-multiplication case - * because PNG_BACKGROUND_EXPAND is cancelled below. - */ - if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) != 0 && - (png_ptr->transformations & PNG_EXPAND) != 0 && - (png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) - /* i.e., GRAY or GRAY_ALPHA */ - { - { - /* Expand background and tRNS chunks */ - int gray = png_ptr->background.gray; - int trans_gray = png_ptr->trans_color.gray; - - switch (png_ptr->bit_depth) - { - case 1: - gray *= 0xff; - trans_gray *= 0xff; - break; - - case 2: - gray *= 0x55; - trans_gray *= 0x55; - break; - - case 4: - gray *= 0x11; - trans_gray *= 0x11; - break; - - default: - - case 8: - /* FALLTHROUGH */ /* (Already 8 bits) */ - - case 16: - /* Already a full 16 bits */ - break; - } - - png_ptr->background.red = png_ptr->background.green = - png_ptr->background.blue = (png_uint_16)gray; - - if ((png_ptr->transformations & PNG_EXPAND_tRNS) == 0) - { - png_ptr->trans_color.red = png_ptr->trans_color.green = - png_ptr->trans_color.blue = (png_uint_16)trans_gray; - } - } - } /* background expand and (therefore) no alpha association. */ -#endif /* READ_EXPAND && READ_BACKGROUND */ -} - -void /* PRIVATE */ -png_init_read_transformations(png_structrp png_ptr) -{ - png_debug(1, "in png_init_read_transformations"); - - /* This internal function is called from png_read_start_row in pngrutil.c - * and it is called before the 'rowbytes' calculation is done, so the code - * in here can change or update the transformations flags. - * - * First do updates that do not depend on the details of the PNG image data - * being processed. - */ - -#ifdef PNG_READ_GAMMA_SUPPORTED - /* Prior to 1.5.4 these tests were performed from png_set_gamma, 1.5.4 adds - * png_set_alpha_mode and this is another source for a default file gamma so - * the test needs to be performed later - here. In addition prior to 1.5.4 - * the tests were repeated for the PALETTE color type here - this is no - * longer necessary (and doesn't seem to have been necessary before.) - */ - { - /* The following temporary indicates if overall gamma correction is - * required. - */ - int gamma_correction = 0; - - if (png_ptr->colorspace.gamma != 0) /* has been set */ - { - if (png_ptr->screen_gamma != 0) /* screen set too */ - gamma_correction = png_gamma_threshold(png_ptr->colorspace.gamma, - png_ptr->screen_gamma); - - else - /* Assume the output matches the input; a long time default behavior - * of libpng, although the standard has nothing to say about this. - */ - png_ptr->screen_gamma = png_reciprocal(png_ptr->colorspace.gamma); - } - - else if (png_ptr->screen_gamma != 0) - /* The converse - assume the file matches the screen, note that this - * perhaps undesireable default can (from 1.5.4) be changed by calling - * png_set_alpha_mode (even if the alpha handling mode isn't required - * or isn't changed from the default.) - */ - png_ptr->colorspace.gamma = png_reciprocal(png_ptr->screen_gamma); - - else /* neither are set */ - /* Just in case the following prevents any processing - file and screen - * are both assumed to be linear and there is no way to introduce a - * third gamma value other than png_set_background with 'UNIQUE', and, - * prior to 1.5.4 - */ - png_ptr->screen_gamma = png_ptr->colorspace.gamma = PNG_FP_1; - - /* We have a gamma value now. */ - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - - /* Now turn the gamma transformation on or off as appropriate. Notice - * that PNG_GAMMA just refers to the file->screen correction. Alpha - * composition may independently cause gamma correction because it needs - * linear data (e.g. if the file has a gAMA chunk but the screen gamma - * hasn't been specified.) In any case this flag may get turned off in - * the code immediately below if the transform can be handled outside the - * row loop. - */ - if (gamma_correction != 0) - png_ptr->transformations |= PNG_GAMMA; - - else - png_ptr->transformations &= ~PNG_GAMMA; - } -#endif - - /* Certain transformations have the effect of preventing other - * transformations that happen afterward in png_do_read_transformations; - * resolve the interdependencies here. From the code of - * png_do_read_transformations the order is: - * - * 1) PNG_EXPAND (including PNG_EXPAND_tRNS) - * 2) PNG_STRIP_ALPHA (if no compose) - * 3) PNG_RGB_TO_GRAY - * 4) PNG_GRAY_TO_RGB iff !PNG_BACKGROUND_IS_GRAY - * 5) PNG_COMPOSE - * 6) PNG_GAMMA - * 7) PNG_STRIP_ALPHA (if compose) - * 8) PNG_ENCODE_ALPHA - * 9) PNG_SCALE_16_TO_8 - * 10) PNG_16_TO_8 - * 11) PNG_QUANTIZE (converts to palette) - * 12) PNG_EXPAND_16 - * 13) PNG_GRAY_TO_RGB iff PNG_BACKGROUND_IS_GRAY - * 14) PNG_INVERT_MONO - * 15) PNG_INVERT_ALPHA - * 16) PNG_SHIFT - * 17) PNG_PACK - * 18) PNG_BGR - * 19) PNG_PACKSWAP - * 20) PNG_FILLER (includes PNG_ADD_ALPHA) - * 21) PNG_SWAP_ALPHA - * 22) PNG_SWAP_BYTES - * 23) PNG_USER_TRANSFORM [must be last] - */ -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) != 0 && - (png_ptr->transformations & PNG_COMPOSE) == 0) - { - /* Stripping the alpha channel happens immediately after the 'expand' - * transformations, before all other transformation, so it cancels out - * the alpha handling. It has the side effect negating the effect of - * PNG_EXPAND_tRNS too: - */ - png_ptr->transformations &= ~(PNG_BACKGROUND_EXPAND | PNG_ENCODE_ALPHA | - PNG_EXPAND_tRNS); - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - - /* Kill the tRNS chunk itself too. Prior to 1.5.4 this did not happen - * so transparency information would remain just so long as it wasn't - * expanded. This produces unexpected API changes if the set of things - * that do PNG_EXPAND_tRNS changes (perfectly possible given the - * documentation - which says ask for what you want, accept what you - * get.) This makes the behavior consistent from 1.5.4: - */ - png_ptr->num_trans = 0; - } -#endif /* STRIP_ALPHA supported, no COMPOSE */ - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - /* If the screen gamma is about 1.0 then the OPTIMIZE_ALPHA and ENCODE_ALPHA - * settings will have no effect. - */ - if (png_gamma_significant(png_ptr->screen_gamma) == 0) - { - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - } -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - /* Make sure the coefficients for the rgb to gray conversion are set - * appropriately. - */ - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) != 0) - png_colorspace_set_rgb_coefficients(png_ptr); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - /* Detect gray background and attempt to enable optimization for - * gray --> RGB case. - * - * Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or - * RGB_ALPHA (in which case need_expand is superfluous anyway), the - * background color might actually be gray yet not be flagged as such. - * This is not a problem for the current code, which uses - * PNG_BACKGROUND_IS_GRAY only to decide when to do the - * png_do_gray_to_rgb() transformation. - * - * TODO: this code needs to be revised to avoid the complexity and - * interdependencies. The color type of the background should be recorded in - * png_set_background, along with the bit depth, then the code has a record - * of exactly what color space the background is currently in. - */ - if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) != 0) - { - /* PNG_BACKGROUND_EXPAND: the background is in the file color space, so if - * the file was grayscale the background value is gray. - */ - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) - png_ptr->mode |= PNG_BACKGROUND_IS_GRAY; - } - - else if ((png_ptr->transformations & PNG_COMPOSE) != 0) - { - /* PNG_COMPOSE: png_set_background was called with need_expand false, - * so the color is in the color space of the output or png_set_alpha_mode - * was called and the color is black. Ignore RGB_TO_GRAY because that - * happens before GRAY_TO_RGB. - */ - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) != 0) - { - if (png_ptr->background.red == png_ptr->background.green && - png_ptr->background.red == png_ptr->background.blue) - { - png_ptr->mode |= PNG_BACKGROUND_IS_GRAY; - png_ptr->background.gray = png_ptr->background.red; - } - } - } -#endif /* READ_EXPAND && READ_BACKGROUND */ -#endif /* READ_GRAY_TO_RGB */ - - /* For indexed PNG data (PNG_COLOR_TYPE_PALETTE) many of the transformations - * can be performed directly on the palette, and some (such as rgb to gray) - * can be optimized inside the palette. This is particularly true of the - * composite (background and alpha) stuff, which can be pretty much all done - * in the palette even if the result is expanded to RGB or gray afterward. - * - * NOTE: this is Not Yet Implemented, the code behaves as in 1.5.1 and - * earlier and the palette stuff is actually handled on the first row. This - * leads to the reported bug that the palette returned by png_get_PLTE is not - * updated. - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_init_palette_transformations(png_ptr); - - else - png_init_rgb_transformations(png_ptr); - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \ - defined(PNG_READ_EXPAND_16_SUPPORTED) - if ((png_ptr->transformations & PNG_EXPAND_16) != 0 && - (png_ptr->transformations & PNG_COMPOSE) != 0 && - (png_ptr->transformations & PNG_BACKGROUND_EXPAND) == 0 && - png_ptr->bit_depth != 16) - { - /* TODO: fix this. Because the expand_16 operation is after the compose - * handling the background color must be 8, not 16, bits deep, but the - * application will supply a 16-bit value so reduce it here. - * - * The PNG_BACKGROUND_EXPAND code above does not expand to 16 bits at - * present, so that case is ok (until do_expand_16 is moved.) - * - * NOTE: this discards the low 16 bits of the user supplied background - * color, but until expand_16 works properly there is no choice! - */ -# define CHOP(x) (x)=((png_uint_16)PNG_DIV257(x)) - CHOP(png_ptr->background.red); - CHOP(png_ptr->background.green); - CHOP(png_ptr->background.blue); - CHOP(png_ptr->background.gray); -# undef CHOP - } -#endif /* READ_BACKGROUND && READ_EXPAND_16 */ - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \ - (defined(PNG_READ_SCALE_16_TO_8_SUPPORTED) || \ - defined(PNG_READ_STRIP_16_TO_8_SUPPORTED)) - if ((png_ptr->transformations & (PNG_16_TO_8|PNG_SCALE_16_TO_8)) != 0 && - (png_ptr->transformations & PNG_COMPOSE) != 0 && - (png_ptr->transformations & PNG_BACKGROUND_EXPAND) == 0 && - png_ptr->bit_depth == 16) - { - /* On the other hand, if a 16-bit file is to be reduced to 8-bits per - * component this will also happen after PNG_COMPOSE and so the background - * color must be pre-expanded here. - * - * TODO: fix this too. - */ - png_ptr->background.red = (png_uint_16)(png_ptr->background.red * 257); - png_ptr->background.green = - (png_uint_16)(png_ptr->background.green * 257); - png_ptr->background.blue = (png_uint_16)(png_ptr->background.blue * 257); - png_ptr->background.gray = (png_uint_16)(png_ptr->background.gray * 257); - } -#endif - - /* NOTE: below 'PNG_READ_ALPHA_MODE_SUPPORTED' is presumed to also enable the - * background support (see the comments in scripts/pnglibconf.dfa), this - * allows pre-multiplication of the alpha channel to be implemented as - * compositing on black. This is probably sub-optimal and has been done in - * 1.5.4 betas simply to enable external critique and testing (i.e. to - * implement the new API quickly, without lots of internal changes.) - */ - -#ifdef PNG_READ_GAMMA_SUPPORTED -# ifdef PNG_READ_BACKGROUND_SUPPORTED - /* Includes ALPHA_MODE */ - png_ptr->background_1 = png_ptr->background; -# endif - - /* This needs to change - in the palette image case a whole set of tables are - * built when it would be quicker to just calculate the correct value for - * each palette entry directly. Also, the test is too tricky - why check - * PNG_RGB_TO_GRAY if PNG_GAMMA is not set? The answer seems to be that - * PNG_GAMMA is cancelled even if the gamma is known? The test excludes the - * PNG_COMPOSE case, so apparently if there is no *overall* gamma correction - * the gamma tables will not be built even if composition is required on a - * gamma encoded value. - * - * In 1.5.4 this is addressed below by an additional check on the individual - * file gamma - if it is not 1.0 both RGB_TO_GRAY and COMPOSE need the - * tables. - */ - if ((png_ptr->transformations & PNG_GAMMA) != 0 || - ((png_ptr->transformations & PNG_RGB_TO_GRAY) != 0 && - (png_gamma_significant(png_ptr->colorspace.gamma) != 0 || - png_gamma_significant(png_ptr->screen_gamma) != 0)) || - ((png_ptr->transformations & PNG_COMPOSE) != 0 && - (png_gamma_significant(png_ptr->colorspace.gamma) != 0 || - png_gamma_significant(png_ptr->screen_gamma) != 0 -# ifdef PNG_READ_BACKGROUND_SUPPORTED - || (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_UNIQUE && - png_gamma_significant(png_ptr->background_gamma) != 0) -# endif - )) || ((png_ptr->transformations & PNG_ENCODE_ALPHA) != 0 && - png_gamma_significant(png_ptr->screen_gamma) != 0)) - { - png_build_gamma_table(png_ptr, png_ptr->bit_depth); - -#ifdef PNG_READ_BACKGROUND_SUPPORTED - if ((png_ptr->transformations & PNG_COMPOSE) != 0) - { - /* Issue a warning about this combination: because RGB_TO_GRAY is - * optimized to do the gamma transform if present yet do_background has - * to do the same thing if both options are set a - * double-gamma-correction happens. This is true in all versions of - * libpng to date. - */ - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) != 0) - png_warning(png_ptr, - "libpng does not support gamma+background+rgb_to_gray"); - - if ((png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) != 0) - { - /* We don't get to here unless there is a tRNS chunk with non-opaque - * entries - see the checking code at the start of this function. - */ - png_color back, back_1; - png_colorp palette = png_ptr->palette; - int num_palette = png_ptr->num_palette; - int i; - if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE) - { - - back.red = png_ptr->gamma_table[png_ptr->background.red]; - back.green = png_ptr->gamma_table[png_ptr->background.green]; - back.blue = png_ptr->gamma_table[png_ptr->background.blue]; - - back_1.red = png_ptr->gamma_to_1[png_ptr->background.red]; - back_1.green = png_ptr->gamma_to_1[png_ptr->background.green]; - back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue]; - } - else - { - png_fixed_point g, gs; - - switch (png_ptr->background_gamma_type) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - g = (png_ptr->screen_gamma); - gs = PNG_FP_1; - break; - - case PNG_BACKGROUND_GAMMA_FILE: - g = png_reciprocal(png_ptr->colorspace.gamma); - gs = png_reciprocal2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma); - break; - - case PNG_BACKGROUND_GAMMA_UNIQUE: - g = png_reciprocal(png_ptr->background_gamma); - gs = png_reciprocal2(png_ptr->background_gamma, - png_ptr->screen_gamma); - break; - default: - g = PNG_FP_1; /* back_1 */ - gs = PNG_FP_1; /* back */ - break; - } - - if (png_gamma_significant(gs) != 0) - { - back.red = png_gamma_8bit_correct(png_ptr->background.red, - gs); - back.green = png_gamma_8bit_correct(png_ptr->background.green, - gs); - back.blue = png_gamma_8bit_correct(png_ptr->background.blue, - gs); - } - - else - { - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - } - - if (png_gamma_significant(g) != 0) - { - back_1.red = png_gamma_8bit_correct(png_ptr->background.red, - g); - back_1.green = png_gamma_8bit_correct( - png_ptr->background.green, g); - back_1.blue = png_gamma_8bit_correct(png_ptr->background.blue, - g); - } - - else - { - back_1.red = (png_byte)png_ptr->background.red; - back_1.green = (png_byte)png_ptr->background.green; - back_1.blue = (png_byte)png_ptr->background.blue; - } - } - - for (i = 0; i < num_palette; i++) - { - if (i < (int)png_ptr->num_trans && - png_ptr->trans_alpha[i] != 0xff) - { - if (png_ptr->trans_alpha[i] == 0) - { - palette[i] = back; - } - else /* if (png_ptr->trans_alpha[i] != 0xff) */ - { - png_byte v, w; - - v = png_ptr->gamma_to_1[palette[i].red]; - png_composite(w, v, png_ptr->trans_alpha[i], back_1.red); - palette[i].red = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].green]; - png_composite(w, v, png_ptr->trans_alpha[i], back_1.green); - palette[i].green = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].blue]; - png_composite(w, v, png_ptr->trans_alpha[i], back_1.blue); - palette[i].blue = png_ptr->gamma_from_1[w]; - } - } - else - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } - - /* Prevent the transformations being done again. - * - * NOTE: this is highly dubious; it removes the transformations in - * place. This seems inconsistent with the general treatment of the - * transformations elsewhere. - */ - png_ptr->transformations &= ~(PNG_COMPOSE | PNG_GAMMA); - } /* color_type == PNG_COLOR_TYPE_PALETTE */ - - /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */ - else /* color_type != PNG_COLOR_TYPE_PALETTE */ - { - int gs_sig, g_sig; - png_fixed_point g = PNG_FP_1; /* Correction to linear */ - png_fixed_point gs = PNG_FP_1; /* Correction to screen */ - - switch (png_ptr->background_gamma_type) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - g = png_ptr->screen_gamma; - /* gs = PNG_FP_1; */ - break; - - case PNG_BACKGROUND_GAMMA_FILE: - g = png_reciprocal(png_ptr->colorspace.gamma); - gs = png_reciprocal2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma); - break; - - case PNG_BACKGROUND_GAMMA_UNIQUE: - g = png_reciprocal(png_ptr->background_gamma); - gs = png_reciprocal2(png_ptr->background_gamma, - png_ptr->screen_gamma); - break; - - default: - png_error(png_ptr, "invalid background gamma type"); - } - - g_sig = png_gamma_significant(g); - gs_sig = png_gamma_significant(gs); - - if (g_sig != 0) - png_ptr->background_1.gray = png_gamma_correct(png_ptr, - png_ptr->background.gray, g); - - if (gs_sig != 0) - png_ptr->background.gray = png_gamma_correct(png_ptr, - png_ptr->background.gray, gs); - - if ((png_ptr->background.red != png_ptr->background.green) || - (png_ptr->background.red != png_ptr->background.blue) || - (png_ptr->background.red != png_ptr->background.gray)) - { - /* RGB or RGBA with color background */ - if (g_sig != 0) - { - png_ptr->background_1.red = png_gamma_correct(png_ptr, - png_ptr->background.red, g); - - png_ptr->background_1.green = png_gamma_correct(png_ptr, - png_ptr->background.green, g); - - png_ptr->background_1.blue = png_gamma_correct(png_ptr, - png_ptr->background.blue, g); - } - - if (gs_sig != 0) - { - png_ptr->background.red = png_gamma_correct(png_ptr, - png_ptr->background.red, gs); - - png_ptr->background.green = png_gamma_correct(png_ptr, - png_ptr->background.green, gs); - - png_ptr->background.blue = png_gamma_correct(png_ptr, - png_ptr->background.blue, gs); - } - } - - else - { - /* GRAY, GRAY ALPHA, RGB, or RGBA with gray background */ - png_ptr->background_1.red = png_ptr->background_1.green - = png_ptr->background_1.blue = png_ptr->background_1.gray; - - png_ptr->background.red = png_ptr->background.green - = png_ptr->background.blue = png_ptr->background.gray; - } - - /* The background is now in screen gamma: */ - png_ptr->background_gamma_type = PNG_BACKGROUND_GAMMA_SCREEN; - } /* color_type != PNG_COLOR_TYPE_PALETTE */ - }/* png_ptr->transformations & PNG_BACKGROUND */ - - else - /* Transformation does not include PNG_BACKGROUND */ -#endif /* READ_BACKGROUND */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - /* RGB_TO_GRAY needs to have non-gamma-corrected values! */ - && ((png_ptr->transformations & PNG_EXPAND) == 0 || - (png_ptr->transformations & PNG_RGB_TO_GRAY) == 0) -#endif - ) - { - png_colorp palette = png_ptr->palette; - int num_palette = png_ptr->num_palette; - int i; - - /* NOTE: there are other transformations that should probably be in - * here too. - */ - for (i = 0; i < num_palette; i++) - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - - /* Done the gamma correction. */ - png_ptr->transformations &= ~PNG_GAMMA; - } /* color_type == PALETTE && !PNG_BACKGROUND transformation */ - } -#ifdef PNG_READ_BACKGROUND_SUPPORTED - else -#endif -#endif /* READ_GAMMA */ - -#ifdef PNG_READ_BACKGROUND_SUPPORTED - /* No GAMMA transformation (see the hanging else 4 lines above) */ - if ((png_ptr->transformations & PNG_COMPOSE) != 0 && - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)) - { - int i; - int istop = (int)png_ptr->num_trans; - png_color back; - png_colorp palette = png_ptr->palette; - - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - - for (i = 0; i < istop; i++) - { - if (png_ptr->trans_alpha[i] == 0) - { - palette[i] = back; - } - - else if (png_ptr->trans_alpha[i] != 0xff) - { - /* The png_composite() macro is defined in png.h */ - png_composite(palette[i].red, palette[i].red, - png_ptr->trans_alpha[i], back.red); - - png_composite(palette[i].green, palette[i].green, - png_ptr->trans_alpha[i], back.green); - - png_composite(palette[i].blue, palette[i].blue, - png_ptr->trans_alpha[i], back.blue); - } - } - - png_ptr->transformations &= ~PNG_COMPOSE; - } -#endif /* READ_BACKGROUND */ - -#ifdef PNG_READ_SHIFT_SUPPORTED - if ((png_ptr->transformations & PNG_SHIFT) != 0 && - (png_ptr->transformations & PNG_EXPAND) == 0 && - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)) - { - int i; - int istop = png_ptr->num_palette; - int shift = 8 - png_ptr->sig_bit.red; - - png_ptr->transformations &= ~PNG_SHIFT; - - /* significant bits can be in the range 1 to 7 for a meaninful result, if - * the number of significant bits is 0 then no shift is done (this is an - * error condition which is silently ignored.) - */ - if (shift > 0 && shift < 8) - for (i=0; ipalette[i].red; - - component >>= shift; - png_ptr->palette[i].red = (png_byte)component; - } - - shift = 8 - png_ptr->sig_bit.green; - if (shift > 0 && shift < 8) - for (i=0; ipalette[i].green; - - component >>= shift; - png_ptr->palette[i].green = (png_byte)component; - } - - shift = 8 - png_ptr->sig_bit.blue; - if (shift > 0 && shift < 8) - for (i=0; ipalette[i].blue; - - component >>= shift; - png_ptr->palette[i].blue = (png_byte)component; - } - } -#endif /* READ_SHIFT */ -} - -/* Modify the info structure to reflect the transformations. The - * info should be updated so a PNG file could be written with it, - * assuming the transformations result in valid PNG data. - */ -void /* PRIVATE */ -png_read_transform_info(png_structrp png_ptr, png_inforp info_ptr) -{ - png_debug(1, "in png_read_transform_info"); - -#ifdef PNG_READ_EXPAND_SUPPORTED - if ((png_ptr->transformations & PNG_EXPAND) != 0) - { - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - /* This check must match what actually happens in - * png_do_expand_palette; if it ever checks the tRNS chunk to see if - * it is all opaque we must do the same (at present it does not.) - */ - if (png_ptr->num_trans > 0) - info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA; - - else - info_ptr->color_type = PNG_COLOR_TYPE_RGB; - - info_ptr->bit_depth = 8; - info_ptr->num_trans = 0; - - if (png_ptr->palette == NULL) - png_error (png_ptr, "Palette is NULL in indexed image"); - } - else - { - if (png_ptr->num_trans != 0) - { - if ((png_ptr->transformations & PNG_EXPAND_tRNS) != 0) - info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; - } - if (info_ptr->bit_depth < 8) - info_ptr->bit_depth = 8; - - info_ptr->num_trans = 0; - } - } -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - /* The following is almost certainly wrong unless the background value is in - * the screen space! - */ - if ((png_ptr->transformations & PNG_COMPOSE) != 0) - info_ptr->background = png_ptr->background; -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED - /* The following used to be conditional on PNG_GAMMA (prior to 1.5.4), - * however it seems that the code in png_init_read_transformations, which has - * been called before this from png_read_update_info->png_read_start_row - * sometimes does the gamma transform and cancels the flag. - * - * TODO: this looks wrong; the info_ptr should end up with a gamma equal to - * the screen_gamma value. The following probably results in weirdness if - * the info_ptr is used by the app after the rows have been read. - */ - info_ptr->colorspace.gamma = png_ptr->colorspace.gamma; -#endif - - if (info_ptr->bit_depth == 16) - { -# ifdef PNG_READ_16BIT_SUPPORTED -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - if ((png_ptr->transformations & PNG_SCALE_16_TO_8) != 0) - info_ptr->bit_depth = 8; -# endif - -# ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - if ((png_ptr->transformations & PNG_16_TO_8) != 0) - info_ptr->bit_depth = 8; -# endif - -# else - /* No 16-bit support: force chopping 16-bit input down to 8, in this case - * the app program can chose if both APIs are available by setting the - * correct scaling to use. - */ -# ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - /* For compatibility with previous versions use the strip method by - * default. This code works because if PNG_SCALE_16_TO_8 is already - * set the code below will do that in preference to the chop. - */ - png_ptr->transformations |= PNG_16_TO_8; - info_ptr->bit_depth = 8; -# else - -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_ptr->transformations |= PNG_SCALE_16_TO_8; - info_ptr->bit_depth = 8; -# else - - CONFIGURATION ERROR: you must enable at least one 16 to 8 method -# endif -# endif -#endif /* !READ_16BIT */ - } - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) != 0) - info_ptr->color_type = (png_byte)(info_ptr->color_type | - PNG_COLOR_MASK_COLOR); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) != 0) - info_ptr->color_type = (png_byte)(info_ptr->color_type & - ~PNG_COLOR_MASK_COLOR); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - if ((png_ptr->transformations & PNG_QUANTIZE) != 0) - { - if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) || - (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) && - png_ptr->palette_lookup != 0 && info_ptr->bit_depth == 8) - { - info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; - } - } -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED - if ((png_ptr->transformations & PNG_EXPAND_16) != 0 && - info_ptr->bit_depth == 8 && - info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - { - info_ptr->bit_depth = 16; - } -#endif - -#ifdef PNG_READ_PACK_SUPPORTED - if ((png_ptr->transformations & PNG_PACK) != 0 && - (info_ptr->bit_depth < 8)) - info_ptr->bit_depth = 8; -#endif - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - info_ptr->channels = 1; - - else if ((info_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - info_ptr->channels = 3; - - else - info_ptr->channels = 1; - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) != 0) - { - info_ptr->color_type = (png_byte)(info_ptr->color_type & - ~PNG_COLOR_MASK_ALPHA); - info_ptr->num_trans = 0; - } -#endif - - if ((info_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0) - info_ptr->channels++; - -#ifdef PNG_READ_FILLER_SUPPORTED - /* STRIP_ALPHA and FILLER allowed: MASK_ALPHA bit stripped above */ - if ((png_ptr->transformations & PNG_FILLER) != 0 && - (info_ptr->color_type == PNG_COLOR_TYPE_RGB || - info_ptr->color_type == PNG_COLOR_TYPE_GRAY)) - { - info_ptr->channels++; - /* If adding a true alpha channel not just filler */ - if ((png_ptr->transformations & PNG_ADD_ALPHA) != 0) - info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; - } -#endif - -#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \ -defined(PNG_READ_USER_TRANSFORM_SUPPORTED) - if ((png_ptr->transformations & PNG_USER_TRANSFORM) != 0) - { - if (png_ptr->user_transform_depth != 0) - info_ptr->bit_depth = png_ptr->user_transform_depth; - - if (png_ptr->user_transform_channels != 0) - info_ptr->channels = png_ptr->user_transform_channels; - } -#endif - - info_ptr->pixel_depth = (png_byte)(info_ptr->channels * - info_ptr->bit_depth); - - info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width); - - /* Adding in 1.5.4: cache the above value in png_struct so that we can later - * check in png_rowbytes that the user buffer won't get overwritten. Note - * that the field is not always set - if png_read_update_info isn't called - * the application has to either not do any transforms or get the calculation - * right itself. - */ - png_ptr->info_rowbytes = info_ptr->rowbytes; - -#ifndef PNG_READ_EXPAND_SUPPORTED - if (png_ptr != NULL) - return; -#endif -} - -#ifdef PNG_READ_PACK_SUPPORTED -/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel, - * without changing the actual values. Thus, if you had a row with - * a bit depth of 1, you would end up with bytes that only contained - * the numbers 0 or 1. If you would rather they contain 0 and 255, use - * png_do_shift() after this. - */ -static void -png_do_unpack(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_unpack"); - - if (row_info->bit_depth < 8) - { - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - switch (row_info->bit_depth) - { - case 1: - { - png_bytep sp = row + (png_size_t)((row_width - 1) >> 3); - png_bytep dp = row + (png_size_t)row_width - 1; - png_uint_32 shift = 7U - ((row_width + 7U) & 0x07); - for (i = 0; i < row_width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x01); - - if (shift == 7) - { - shift = 0; - sp--; - } - - else - shift++; - - dp--; - } - break; - } - - case 2: - { - - png_bytep sp = row + (png_size_t)((row_width - 1) >> 2); - png_bytep dp = row + (png_size_t)row_width - 1; - png_uint_32 shift = ((3U - ((row_width + 3U) & 0x03)) << 1); - for (i = 0; i < row_width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x03); - - if (shift == 6) - { - shift = 0; - sp--; - } - - else - shift += 2; - - dp--; - } - break; - } - - case 4: - { - png_bytep sp = row + (png_size_t)((row_width - 1) >> 1); - png_bytep dp = row + (png_size_t)row_width - 1; - png_uint_32 shift = ((1U - ((row_width + 1U) & 0x01)) << 2); - for (i = 0; i < row_width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x0f); - - if (shift == 4) - { - shift = 0; - sp--; - } - - else - shift = 4; - - dp--; - } - break; - } - - default: - break; - } - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_width * row_info->channels; - } -} -#endif - -#ifdef PNG_READ_SHIFT_SUPPORTED -/* Reverse the effects of png_do_shift. This routine merely shifts the - * pixels back to their significant bits values. Thus, if you have - * a row of bit depth 8, but only 5 are significant, this will shift - * the values back to 0 through 31. - */ -static void -png_do_unshift(png_row_infop row_info, png_bytep row, - png_const_color_8p sig_bits) -{ - int color_type; - - png_debug(1, "in png_do_unshift"); - - /* The palette case has already been handled in the _init routine. */ - color_type = row_info->color_type; - - if (color_type != PNG_COLOR_TYPE_PALETTE) - { - int shift[4]; - int channels = 0; - int bit_depth = row_info->bit_depth; - - if ((color_type & PNG_COLOR_MASK_COLOR) != 0) - { - shift[channels++] = bit_depth - sig_bits->red; - shift[channels++] = bit_depth - sig_bits->green; - shift[channels++] = bit_depth - sig_bits->blue; - } - - else - { - shift[channels++] = bit_depth - sig_bits->gray; - } - - if ((color_type & PNG_COLOR_MASK_ALPHA) != 0) - { - shift[channels++] = bit_depth - sig_bits->alpha; - } - - { - int c, have_shift; - - for (c = have_shift = 0; c < channels; ++c) - { - /* A shift of more than the bit depth is an error condition but it - * gets ignored here. - */ - if (shift[c] <= 0 || shift[c] >= bit_depth) - shift[c] = 0; - - else - have_shift = 1; - } - - if (have_shift == 0) - return; - } - - switch (bit_depth) - { - default: - /* Must be 1bpp gray: should not be here! */ - /* NOTREACHED */ - break; - - case 2: - /* Must be 2bpp gray */ - /* assert(channels == 1 && shift[0] == 1) */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - - while (bp < bp_end) - { - int b = (*bp >> 1) & 0x55; - *bp++ = (png_byte)b; - } - break; - } - - case 4: - /* Must be 4bpp gray */ - /* assert(channels == 1) */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - int gray_shift = shift[0]; - int mask = 0xf >> gray_shift; - - mask |= mask << 4; - - while (bp < bp_end) - { - int b = (*bp >> gray_shift) & mask; - *bp++ = (png_byte)b; - } - break; - } - - case 8: - /* Single byte components, G, GA, RGB, RGBA */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - int channel = 0; - - while (bp < bp_end) - { - int b = *bp >> shift[channel]; - if (++channel >= channels) - channel = 0; - *bp++ = (png_byte)b; - } - break; - } - -#ifdef PNG_READ_16BIT_SUPPORTED - case 16: - /* Double byte components, G, GA, RGB, RGBA */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - int channel = 0; - - while (bp < bp_end) - { - int value = (bp[0] << 8) + bp[1]; - - value >>= shift[channel]; - if (++channel >= channels) - channel = 0; - *bp++ = (png_byte)(value >> 8); - *bp++ = (png_byte)value; - } - break; - } -#endif - } - } -} -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -/* Scale rows of bit depth 16 down to 8 accurately */ -static void -png_do_scale_16_to_8(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_scale_16_to_8"); - - if (row_info->bit_depth == 16) - { - png_bytep sp = row; /* source */ - png_bytep dp = row; /* destination */ - png_bytep ep = sp + row_info->rowbytes; /* end+1 */ - - while (sp < ep) - { - /* The input is an array of 16-bit components, these must be scaled to - * 8 bits each. For a 16-bit value V the required value (from the PNG - * specification) is: - * - * (V * 255) / 65535 - * - * This reduces to round(V / 257), or floor((V + 128.5)/257) - * - * Represent V as the two byte value vhi.vlo. Make a guess that the - * result is the top byte of V, vhi, then the correction to this value - * is: - * - * error = floor(((V-vhi.vhi) + 128.5) / 257) - * = floor(((vlo-vhi) + 128.5) / 257) - * - * This can be approximated using integer arithmetic (and a signed - * shift): - * - * error = (vlo-vhi+128) >> 8; - * - * The approximate differs from the exact answer only when (vlo-vhi) is - * 128; it then gives a correction of +1 when the exact correction is - * 0. This gives 128 errors. The exact answer (correct for all 16-bit - * input values) is: - * - * error = (vlo-vhi+128)*65535 >> 24; - * - * An alternative arithmetic calculation which also gives no errors is: - * - * (V * 255 + 32895) >> 16 - */ - - png_int_32 tmp = *sp++; /* must be signed! */ - tmp += (((int)*sp++ - tmp + 128) * 65535) >> 24; - *dp++ = (png_byte)tmp; - } - - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_info->width * row_info->channels; - } -} -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -static void -/* Simply discard the low byte. This was the default behavior prior - * to libpng-1.5.4. - */ -png_do_chop(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_chop"); - - if (row_info->bit_depth == 16) - { - png_bytep sp = row; /* source */ - png_bytep dp = row; /* destination */ - png_bytep ep = sp + row_info->rowbytes; /* end+1 */ - - while (sp < ep) - { - *dp++ = *sp; - sp += 2; /* skip low byte */ - } - - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_info->width * row_info->channels; - } -} -#endif - -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED -static void -png_do_read_swap_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_read_swap_alpha"); - - { - png_uint_32 row_width = row_info->width; - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - /* This converts from RGBA to ARGB */ - if (row_info->bit_depth == 8) - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - /* This converts from RRGGBBAA to AARRGGBB */ - else - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save[0] = *(--sp); - save[1] = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save[0]; - *(--dp) = save[1]; - } - } -#endif - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - /* This converts from GA to AG */ - if (row_info->bit_depth == 8) - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - /* This converts from GGAA to AAGG */ - else - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save[0] = *(--sp); - save[1] = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save[0]; - *(--dp) = save[1]; - } - } -#endif - } - } -} -#endif - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED -static void -png_do_read_invert_alpha(png_row_infop row_info, png_bytep row) -{ - png_uint_32 row_width; - png_debug(1, "in png_do_read_invert_alpha"); - - row_width = row_info->width; - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in RGBA */ - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - -/* This does nothing: - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - We can replace it with: -*/ - sp-=3; - dp=sp; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - /* This inverts the alpha channel in RRGGBBAA */ - else - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - *(--dp) = (png_byte)(255 - *(--sp)); - -/* This does nothing: - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - We can replace it with: -*/ - sp-=6; - dp=sp; - } - } -#endif - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in GA */ - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - *(--dp) = *(--sp); - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - else - { - /* This inverts the alpha channel in GGAA */ - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - *(--dp) = (png_byte)(255 - *(--sp)); -/* - *(--dp) = *(--sp); - *(--dp) = *(--sp); -*/ - sp-=2; - dp=sp; - } - } -#endif - } -} -#endif - -#ifdef PNG_READ_FILLER_SUPPORTED -/* Add filler channel if we have RGB color */ -static void -png_do_read_filler(png_row_infop row_info, png_bytep row, - png_uint_32 filler, png_uint_32 flags) -{ - png_uint_32 i; - png_uint_32 row_width = row_info->width; - -#ifdef PNG_READ_16BIT_SUPPORTED - png_byte hi_filler = (png_byte)(filler>>8); -#endif - png_byte lo_filler = (png_byte)filler; - - png_debug(1, "in png_do_read_filler"); - - if ( - row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - if (row_info->bit_depth == 8) - { - if ((flags & PNG_FLAG_FILLER_AFTER) != 0) - { - /* This changes the data from G to GX */ - png_bytep sp = row + (png_size_t)row_width; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 1; i < row_width; i++) - { - *(--dp) = lo_filler; - *(--dp) = *(--sp); - } - *(--dp) = lo_filler; - row_info->channels = 2; - row_info->pixel_depth = 16; - row_info->rowbytes = row_width * 2; - } - - else - { - /* This changes the data from G to XG */ - png_bytep sp = row + (png_size_t)row_width; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = lo_filler; - } - row_info->channels = 2; - row_info->pixel_depth = 16; - row_info->rowbytes = row_width * 2; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - if ((flags & PNG_FLAG_FILLER_AFTER) != 0) - { - /* This changes the data from GG to GGXX */ - png_bytep sp = row + (png_size_t)row_width * 2; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 1; i < row_width; i++) - { - *(--dp) = lo_filler; - *(--dp) = hi_filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = lo_filler; - *(--dp) = hi_filler; - row_info->channels = 2; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - - else - { - /* This changes the data from GG to XXGG */ - png_bytep sp = row + (png_size_t)row_width * 2; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = lo_filler; - *(--dp) = hi_filler; - } - row_info->channels = 2; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - } -#endif - } /* COLOR_TYPE == GRAY */ - else if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - if (row_info->bit_depth == 8) - { - if ((flags & PNG_FLAG_FILLER_AFTER) != 0) - { - /* This changes the data from RGB to RGBX */ - png_bytep sp = row + (png_size_t)row_width * 3; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 1; i < row_width; i++) - { - *(--dp) = lo_filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = lo_filler; - row_info->channels = 4; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - - else - { - /* This changes the data from RGB to XRGB */ - png_bytep sp = row + (png_size_t)row_width * 3; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = lo_filler; - } - row_info->channels = 4; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - if ((flags & PNG_FLAG_FILLER_AFTER) != 0) - { - /* This changes the data from RRGGBB to RRGGBBXX */ - png_bytep sp = row + (png_size_t)row_width * 6; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 1; i < row_width; i++) - { - *(--dp) = lo_filler; - *(--dp) = hi_filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = lo_filler; - *(--dp) = hi_filler; - row_info->channels = 4; - row_info->pixel_depth = 64; - row_info->rowbytes = row_width * 8; - } - - else - { - /* This changes the data from RRGGBB to XXRRGGBB */ - png_bytep sp = row + (png_size_t)row_width * 6; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = lo_filler; - *(--dp) = hi_filler; - } - - row_info->channels = 4; - row_info->pixel_depth = 64; - row_info->rowbytes = row_width * 8; - } - } -#endif - } /* COLOR_TYPE == RGB */ -} -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* Expand grayscale files to RGB, with or without alpha */ -static void -png_do_gray_to_rgb(png_row_infop row_info, png_bytep row) -{ - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - png_debug(1, "in png_do_gray_to_rgb"); - - if (row_info->bit_depth >= 8 && - (row_info->color_type & PNG_COLOR_MASK_COLOR) == 0) - { - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - if (row_info->bit_depth == 8) - { - /* This changes G to RGB */ - png_bytep sp = row + (png_size_t)row_width - 1; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(dp--) = *sp; - *(dp--) = *sp; - *(dp--) = *(sp--); - } - } - - else - { - /* This changes GG to RRGGBB */ - png_bytep sp = row + (png_size_t)row_width * 2 - 1; - png_bytep dp = sp + (png_size_t)row_width * 4; - for (i = 0; i < row_width; i++) - { - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *(sp--); - *(dp--) = *(sp--); - } - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This changes GA to RGBA */ - png_bytep sp = row + (png_size_t)row_width * 2 - 1; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(dp--) = *(sp--); - *(dp--) = *sp; - *(dp--) = *sp; - *(dp--) = *(sp--); - } - } - - else - { - /* This changes GGAA to RRGGBBAA */ - png_bytep sp = row + (png_size_t)row_width * 4 - 1; - png_bytep dp = sp + (png_size_t)row_width * 4; - for (i = 0; i < row_width; i++) - { - *(dp--) = *(sp--); - *(dp--) = *(sp--); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *(sp--); - *(dp--) = *(sp--); - } - } - } - row_info->channels = (png_byte)(row_info->channels + 2); - row_info->color_type |= PNG_COLOR_MASK_COLOR; - row_info->pixel_depth = (png_byte)(row_info->channels * - row_info->bit_depth); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } -} -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* Reduce RGB files to grayscale, with or without alpha - * using the equation given in Poynton's ColorFAQ of 1998-01-04 at - * (THIS LINK IS DEAD June 2008 but - * versions dated 1998 through November 2002 have been archived at - * https://web.archive.org/web/20000816232553/www.inforamp.net/ - * ~poynton/notes/colour_and_gamma/ColorFAQ.txt ) - * Charles Poynton poynton at poynton.com - * - * Y = 0.212671 * R + 0.715160 * G + 0.072169 * B - * - * which can be expressed with integers as - * - * Y = (6969 * R + 23434 * G + 2365 * B)/32768 - * - * Poynton's current link (as of January 2003 through July 2011): - * - * has changed the numbers slightly: - * - * Y = 0.2126*R + 0.7152*G + 0.0722*B - * - * which can be expressed with integers as - * - * Y = (6966 * R + 23436 * G + 2366 * B)/32768 - * - * Historically, however, libpng uses numbers derived from the ITU-R Rec 709 - * end point chromaticities and the D65 white point. Depending on the - * precision used for the D65 white point this produces a variety of different - * numbers, however if the four decimal place value used in ITU-R Rec 709 is - * used (0.3127,0.3290) the Y calculation would be: - * - * Y = (6968 * R + 23435 * G + 2366 * B)/32768 - * - * While this is correct the rounding results in an overflow for white, because - * the sum of the rounded coefficients is 32769, not 32768. Consequently - * libpng uses, instead, the closest non-overflowing approximation: - * - * Y = (6968 * R + 23434 * G + 2366 * B)/32768 - * - * Starting with libpng-1.5.5, if the image being converted has a cHRM chunk - * (including an sRGB chunk) then the chromaticities are used to calculate the - * coefficients. See the chunk handling in pngrutil.c for more information. - * - * In all cases the calculation is to be done in a linear colorspace. If no - * gamma information is available to correct the encoding of the original RGB - * values this results in an implicit assumption that the original PNG RGB - * values were linear. - * - * Other integer coefficents can be used via png_set_rgb_to_gray(). Because - * the API takes just red and green coefficients the blue coefficient is - * calculated to make the sum 32768. This will result in different rounding - * to that used above. - */ -static int -png_do_rgb_to_gray(png_structrp png_ptr, png_row_infop row_info, png_bytep row) - -{ - int rgb_error = 0; - - png_debug(1, "in png_do_rgb_to_gray"); - - if ((row_info->color_type & PNG_COLOR_MASK_PALETTE) == 0 && - (row_info->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - PNG_CONST png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff; - PNG_CONST png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff; - PNG_CONST png_uint_32 bc = 32768 - rc - gc; - PNG_CONST png_uint_32 row_width = row_info->width; - PNG_CONST int have_alpha = - (row_info->color_type & PNG_COLOR_MASK_ALPHA) != 0; - - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - /* Notice that gamma to/from 1 are not necessarily inverses (if - * there is an overall gamma correction). Prior to 1.5.5 this code - * checked the linearized values for equality; this doesn't match - * the documentation, the original values must be checked. - */ - if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL) - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_byte red = *(sp++); - png_byte green = *(sp++); - png_byte blue = *(sp++); - - if (red != green || red != blue) - { - red = png_ptr->gamma_to_1[red]; - green = png_ptr->gamma_to_1[green]; - blue = png_ptr->gamma_to_1[blue]; - - rgb_error |= 1; - *(dp++) = png_ptr->gamma_from_1[ - (rc*red + gc*green + bc*blue + 16384)>>15]; - } - - else - { - /* If there is no overall correction the table will not be - * set. - */ - if (png_ptr->gamma_table != NULL) - red = png_ptr->gamma_table[red]; - - *(dp++) = red; - } - - if (have_alpha != 0) - *(dp++) = *(sp++); - } - } - else -#endif - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_byte red = *(sp++); - png_byte green = *(sp++); - png_byte blue = *(sp++); - - if (red != green || red != blue) - { - rgb_error |= 1; - /* NOTE: this is the historical approach which simply - * truncates the results. - */ - *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15); - } - - else - *(dp++) = red; - - if (have_alpha != 0) - *(dp++) = *(sp++); - } - } - } - - else /* RGB bit_depth == 16 */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (png_ptr->gamma_16_to_1 != NULL && png_ptr->gamma_16_from_1 != NULL) - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_uint_16 red, green, blue, w; - png_byte hi,lo; - - hi=*(sp)++; lo=*(sp)++; red = (png_uint_16)((hi << 8) | (lo)); - hi=*(sp)++; lo=*(sp)++; green = (png_uint_16)((hi << 8) | (lo)); - hi=*(sp)++; lo=*(sp)++; blue = (png_uint_16)((hi << 8) | (lo)); - - if (red == green && red == blue) - { - if (png_ptr->gamma_16_table != NULL) - w = png_ptr->gamma_16_table[(red & 0xff) - >> png_ptr->gamma_shift][red >> 8]; - - else - w = red; - } - - else - { - png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red & 0xff) - >> png_ptr->gamma_shift][red>>8]; - png_uint_16 green_1 = - png_ptr->gamma_16_to_1[(green & 0xff) >> - png_ptr->gamma_shift][green>>8]; - png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue & 0xff) - >> png_ptr->gamma_shift][blue>>8]; - png_uint_16 gray16 = (png_uint_16)((rc*red_1 + gc*green_1 - + bc*blue_1 + 16384)>>15); - w = png_ptr->gamma_16_from_1[(gray16 & 0xff) >> - png_ptr->gamma_shift][gray16 >> 8]; - rgb_error |= 1; - } - - *(dp++) = (png_byte)((w>>8) & 0xff); - *(dp++) = (png_byte)(w & 0xff); - - if (have_alpha != 0) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - } - } - } - else -#endif - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_uint_16 red, green, blue, gray16; - png_byte hi,lo; - - hi=*(sp)++; lo=*(sp)++; red = (png_uint_16)((hi << 8) | (lo)); - hi=*(sp)++; lo=*(sp)++; green = (png_uint_16)((hi << 8) | (lo)); - hi=*(sp)++; lo=*(sp)++; blue = (png_uint_16)((hi << 8) | (lo)); - - if (red != green || red != blue) - rgb_error |= 1; - - /* From 1.5.5 in the 16-bit case do the accurate conversion even - * in the 'fast' case - this is because this is where the code - * ends up when handling linear 16-bit data. - */ - gray16 = (png_uint_16)((rc*red + gc*green + bc*blue + 16384) >> - 15); - *(dp++) = (png_byte)((gray16 >> 8) & 0xff); - *(dp++) = (png_byte)(gray16 & 0xff); - - if (have_alpha != 0) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - } - } - } - } - - row_info->channels = (png_byte)(row_info->channels - 2); - row_info->color_type = (png_byte)(row_info->color_type & - ~PNG_COLOR_MASK_COLOR); - row_info->pixel_depth = (png_byte)(row_info->channels * - row_info->bit_depth); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - return rgb_error; -} -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) -/* Replace any alpha or transparency with the supplied background color. - * "background" is already in the screen gamma, while "background_1" is - * at a gamma of 1.0. Paletted files have already been taken care of. - */ -static void -png_do_compose(png_row_infop row_info, png_bytep row, png_structrp png_ptr) -{ -#ifdef PNG_READ_GAMMA_SUPPORTED - png_const_bytep gamma_table = png_ptr->gamma_table; - png_const_bytep gamma_from_1 = png_ptr->gamma_from_1; - png_const_bytep gamma_to_1 = png_ptr->gamma_to_1; - png_const_uint_16pp gamma_16 = png_ptr->gamma_16_table; - png_const_uint_16pp gamma_16_from_1 = png_ptr->gamma_16_from_1; - png_const_uint_16pp gamma_16_to_1 = png_ptr->gamma_16_to_1; - int gamma_shift = png_ptr->gamma_shift; - int optimize = (png_ptr->flags & PNG_FLAG_OPTIMIZE_ALPHA) != 0; -#endif - - png_bytep sp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - int shift; - - png_debug(1, "in png_do_compose"); - - { - switch (row_info->color_type) - { - case PNG_COLOR_TYPE_GRAY: - { - switch (row_info->bit_depth) - { - case 1: - { - sp = row; - shift = 7; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x01) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x7f7f >> (7 - shift)); - tmp |= - (unsigned int)(png_ptr->background.gray << shift); - *sp = (png_byte)(tmp & 0xff); - } - - if (shift == 0) - { - shift = 7; - sp++; - } - - else - shift--; - } - break; - } - - case 2: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - shift = 6; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x03) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x3f3f >> (6 - shift)); - tmp |= - (unsigned int)png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - else - { - unsigned int p = (*sp >> shift) & 0x03; - unsigned int g = (gamma_table [p | (p << 2) | - (p << 4) | (p << 6)] >> 6) & 0x03; - unsigned int tmp = *sp & (0x3f3f >> (6 - shift)); - tmp |= (unsigned int)(g << shift); - *sp = (png_byte)(tmp & 0xff); - } - - if (shift == 0) - { - shift = 6; - sp++; - } - - else - shift -= 2; - } - } - - else -#endif - { - sp = row; - shift = 6; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x03) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x3f3f >> (6 - shift)); - tmp |= - (unsigned int)png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - if (shift == 0) - { - shift = 6; - sp++; - } - - else - shift -= 2; - } - } - break; - } - - case 4: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - shift = 4; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x0f) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x0f0f >> (4 - shift)); - tmp |= - (unsigned int)(png_ptr->background.gray << shift); - *sp = (png_byte)(tmp & 0xff); - } - - else - { - unsigned int p = (*sp >> shift) & 0x0f; - unsigned int g = (gamma_table[p | (p << 4)] >> 4) & - 0x0f; - unsigned int tmp = *sp & (0x0f0f >> (4 - shift)); - tmp |= (unsigned int)(g << shift); - *sp = (png_byte)(tmp & 0xff); - } - - if (shift == 0) - { - shift = 4; - sp++; - } - - else - shift -= 4; - } - } - - else -#endif - { - sp = row; - shift = 4; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x0f) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x0f0f >> (4 - shift)); - tmp |= - (unsigned int)(png_ptr->background.gray << shift); - *sp = (png_byte)(tmp & 0xff); - } - - if (shift == 0) - { - shift = 4; - sp++; - } - - else - shift -= 4; - } - } - break; - } - - case 8: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp++) - { - if (*sp == png_ptr->trans_color.gray) - *sp = (png_byte)png_ptr->background.gray; - - else - *sp = gamma_table[*sp]; - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp++) - { - if (*sp == png_ptr->trans_color.gray) - *sp = (png_byte)png_ptr->background.gray; - } - } - break; - } - - case 16: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_uint_16 v; - - v = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - if (v == png_ptr->trans_color.gray) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray - & 0xff); - } - - else - { - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_uint_16 v; - - v = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - if (v == png_ptr->trans_color.gray) - { - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray - & 0xff); - } - } - } - break; - } - - default: - break; - } - break; - } - - case PNG_COLOR_TYPE_RGB: - { - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 3) - { - if (*sp == png_ptr->trans_color.red && - *(sp + 1) == png_ptr->trans_color.green && - *(sp + 2) == png_ptr->trans_color.blue) - { - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - - else - { - *sp = gamma_table[*sp]; - *(sp + 1) = gamma_table[*(sp + 1)]; - *(sp + 2) = gamma_table[*(sp + 2)]; - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 3) - { - if (*sp == png_ptr->trans_color.red && - *(sp + 1) == png_ptr->trans_color.green && - *(sp + 2) == png_ptr->trans_color.blue) - { - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - } - } - } - else /* if (row_info->bit_depth == 16) */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 6) - { - png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) - + *(sp + 5)); - - if (r == png_ptr->trans_color.red && - g == png_ptr->trans_color.green && - b == png_ptr->trans_color.blue) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - - else - { - png_uint_16 v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - } - } - - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 6) - { - png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) - + *(sp + 5)); - - if (r == png_ptr->trans_color.red && - g == png_ptr->trans_color.green && - b == png_ptr->trans_color.blue) - { - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - } - } - } - break; - } - - case PNG_COLOR_TYPE_GRAY_ALPHA: - { - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_to_1 != NULL && gamma_from_1 != NULL && - gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_uint_16 a = *(sp + 1); - - if (a == 0xff) - *sp = gamma_table[*sp]; - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)png_ptr->background.gray; - } - - else - { - png_byte v, w; - - v = gamma_to_1[*sp]; - png_composite(w, v, a, png_ptr->background_1.gray); - if (optimize == 0) - w = gamma_from_1[w]; - *sp = w; - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_byte a = *(sp + 1); - - if (a == 0) - *sp = (png_byte)png_ptr->background.gray; - - else if (a < 0xff) - png_composite(*sp, *sp, a, png_ptr->background.gray); - } - } - } - else /* if (png_ptr->bit_depth == 16) */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL && gamma_16_from_1 != NULL && - gamma_16_to_1 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_uint_16 a = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - if (a == (png_uint_16)0xffff) - { - png_uint_16 v; - - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray & 0xff); - } - - else - { - png_uint_16 g, v, w; - - g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; - png_composite_16(v, g, a, png_ptr->background_1.gray); - if (optimize != 0) - w = v; - else - w = gamma_16_from_1[(v & 0xff) >> - gamma_shift][v >> 8]; - *sp = (png_byte)((w >> 8) & 0xff); - *(sp + 1) = (png_byte)(w & 0xff); - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_uint_16 a = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - if (a == 0) - { - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray & 0xff); - } - - else if (a < 0xffff) - { - png_uint_16 g, v; - - g = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - png_composite_16(v, g, a, png_ptr->background.gray); - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - } - } - } - break; - } - - case PNG_COLOR_TYPE_RGB_ALPHA: - { - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_to_1 != NULL && gamma_from_1 != NULL && - gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_byte a = *(sp + 3); - - if (a == 0xff) - { - *sp = gamma_table[*sp]; - *(sp + 1) = gamma_table[*(sp + 1)]; - *(sp + 2) = gamma_table[*(sp + 2)]; - } - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - - else - { - png_byte v, w; - - v = gamma_to_1[*sp]; - png_composite(w, v, a, png_ptr->background_1.red); - if (optimize == 0) w = gamma_from_1[w]; - *sp = w; - - v = gamma_to_1[*(sp + 1)]; - png_composite(w, v, a, png_ptr->background_1.green); - if (optimize == 0) w = gamma_from_1[w]; - *(sp + 1) = w; - - v = gamma_to_1[*(sp + 2)]; - png_composite(w, v, a, png_ptr->background_1.blue); - if (optimize == 0) w = gamma_from_1[w]; - *(sp + 2) = w; - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_byte a = *(sp + 3); - - if (a == 0) - { - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - - else if (a < 0xff) - { - png_composite(*sp, *sp, a, png_ptr->background.red); - - png_composite(*(sp + 1), *(sp + 1), a, - png_ptr->background.green); - - png_composite(*(sp + 2), *(sp + 2), a, - png_ptr->background.blue); - } - } - } - } - else /* if (row_info->bit_depth == 16) */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL && gamma_16_from_1 != NULL && - gamma_16_to_1 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 8) - { - png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6)) - << 8) + (png_uint_16)(*(sp + 7))); - - if (a == (png_uint_16)0xffff) - { - png_uint_16 v; - - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - - else - { - png_uint_16 v, w; - - v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; - png_composite_16(w, v, a, png_ptr->background_1.red); - if (optimize == 0) - w = gamma_16_from_1[((w & 0xff) >> gamma_shift)][w >> - 8]; - *sp = (png_byte)((w >> 8) & 0xff); - *(sp + 1) = (png_byte)(w & 0xff); - - v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)]; - png_composite_16(w, v, a, png_ptr->background_1.green); - if (optimize == 0) - w = gamma_16_from_1[((w & 0xff) >> gamma_shift)][w >> - 8]; - - *(sp + 2) = (png_byte)((w >> 8) & 0xff); - *(sp + 3) = (png_byte)(w & 0xff); - - v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)]; - png_composite_16(w, v, a, png_ptr->background_1.blue); - if (optimize == 0) - w = gamma_16_from_1[((w & 0xff) >> gamma_shift)][w >> - 8]; - - *(sp + 4) = (png_byte)((w >> 8) & 0xff); - *(sp + 5) = (png_byte)(w & 0xff); - } - } - } - - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 8) - { - png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6)) - << 8) + (png_uint_16)(*(sp + 7))); - - if (a == 0) - { - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - - else if (a < 0xffff) - { - png_uint_16 v; - - png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) - + *(sp + 5)); - - png_composite_16(v, r, a, png_ptr->background.red); - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - - png_composite_16(v, g, a, png_ptr->background.green); - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - - png_composite_16(v, b, a, png_ptr->background.blue); - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - } - } - } - break; - } - - default: - break; - } - } -} -#endif /* READ_BACKGROUND || READ_ALPHA_MODE */ - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Gamma correct the image, avoiding the alpha channel. Make sure - * you do this after you deal with the transparency issue on grayscale - * or RGB images. If your bit depth is 8, use gamma_table, if it - * is 16, use gamma_16_table and gamma_shift. Build these with - * build_gamma_table(). - */ -static void -png_do_gamma(png_row_infop row_info, png_bytep row, png_structrp png_ptr) -{ - png_const_bytep gamma_table = png_ptr->gamma_table; - png_const_uint_16pp gamma_16_table = png_ptr->gamma_16_table; - int gamma_shift = png_ptr->gamma_shift; - - png_bytep sp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_gamma"); - - if (((row_info->bit_depth <= 8 && gamma_table != NULL) || - (row_info->bit_depth == 16 && gamma_16_table != NULL))) - { - switch (row_info->color_type) - { - case PNG_COLOR_TYPE_RGB: - { - if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - } - } - - else /* if (row_info->bit_depth == 16) */ - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - } - } - break; - } - - case PNG_COLOR_TYPE_RGB_ALPHA: - { - if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp++; - - *sp = gamma_table[*sp]; - sp++; - - *sp = gamma_table[*sp]; - sp++; - - sp++; - } - } - - else /* if (row_info->bit_depth == 16) */ - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 4; - } - } - break; - } - - case PNG_COLOR_TYPE_GRAY_ALPHA: - { - if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp += 2; - } - } - - else /* if (row_info->bit_depth == 16) */ - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 4; - } - } - break; - } - - case PNG_COLOR_TYPE_GRAY: - { - if (row_info->bit_depth == 2) - { - sp = row; - for (i = 0; i < row_width; i += 4) - { - int a = *sp & 0xc0; - int b = *sp & 0x30; - int c = *sp & 0x0c; - int d = *sp & 0x03; - - *sp = (png_byte)( - ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)| - ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)| - ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)| - ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) )); - sp++; - } - } - - if (row_info->bit_depth == 4) - { - sp = row; - for (i = 0; i < row_width; i += 2) - { - int msb = *sp & 0xf0; - int lsb = *sp & 0x0f; - - *sp = (png_byte)((((int)gamma_table[msb | (msb >> 4)]) & 0xf0) - | (((int)gamma_table[(lsb << 4) | lsb]) >> 4)); - sp++; - } - } - - else if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp++; - } - } - - else if (row_info->bit_depth == 16) - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - } - } - break; - } - - default: - break; - } - } -} -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -/* Encode the alpha channel to the output gamma (the input channel is always - * linear.) Called only with color types that have an alpha channel. Needs the - * from_1 tables. - */ -static void -png_do_encode_alpha(png_row_infop row_info, png_bytep row, png_structrp png_ptr) -{ - png_uint_32 row_width = row_info->width; - - png_debug(1, "in png_do_encode_alpha"); - - if ((row_info->color_type & PNG_COLOR_MASK_ALPHA) != 0) - { - if (row_info->bit_depth == 8) - { - PNG_CONST png_bytep table = png_ptr->gamma_from_1; - - if (table != NULL) - { - PNG_CONST int step = - (row_info->color_type & PNG_COLOR_MASK_COLOR) ? 4 : 2; - - /* The alpha channel is the last component: */ - row += step - 1; - - for (; row_width > 0; --row_width, row += step) - *row = table[*row]; - - return; - } - } - - else if (row_info->bit_depth == 16) - { - PNG_CONST png_uint_16pp table = png_ptr->gamma_16_from_1; - PNG_CONST int gamma_shift = png_ptr->gamma_shift; - - if (table != NULL) - { - PNG_CONST int step = - (row_info->color_type & PNG_COLOR_MASK_COLOR) ? 8 : 4; - - /* The alpha channel is the last component: */ - row += step - 2; - - for (; row_width > 0; --row_width, row += step) - { - png_uint_16 v; - - v = table[*(row + 1) >> gamma_shift][*row]; - *row = (png_byte)((v >> 8) & 0xff); - *(row + 1) = (png_byte)(v & 0xff); - } - - return; - } - } - } - - /* Only get to here if called with a weird row_info; no harm has been done, - * so just issue a warning. - */ - png_warning(png_ptr, "png_do_encode_alpha: unexpected call"); -} -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expands a palette row to an RGB or RGBA row depending - * upon whether you supply trans and num_trans. - */ -static void -png_do_expand_palette(png_row_infop row_info, png_bytep row, - png_const_colorp palette, png_const_bytep trans_alpha, int num_trans) -{ - int shift, value; - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_expand_palette"); - - if (row_info->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (row_info->bit_depth < 8) - { - switch (row_info->bit_depth) - { - case 1: - { - sp = row + (png_size_t)((row_width - 1) >> 3); - dp = row + (png_size_t)row_width - 1; - shift = 7 - (int)((row_width + 7) & 0x07); - for (i = 0; i < row_width; i++) - { - if ((*sp >> shift) & 0x01) - *dp = 1; - - else - *dp = 0; - - if (shift == 7) - { - shift = 0; - sp--; - } - - else - shift++; - - dp--; - } - break; - } - - case 2: - { - sp = row + (png_size_t)((row_width - 1) >> 2); - dp = row + (png_size_t)row_width - 1; - shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x03; - *dp = (png_byte)value; - if (shift == 6) - { - shift = 0; - sp--; - } - - else - shift += 2; - - dp--; - } - break; - } - - case 4: - { - sp = row + (png_size_t)((row_width - 1) >> 1); - dp = row + (png_size_t)row_width - 1; - shift = (int)((row_width & 0x01) << 2); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x0f; - *dp = (png_byte)value; - if (shift == 4) - { - shift = 0; - sp--; - } - - else - shift += 4; - - dp--; - } - break; - } - - default: - break; - } - row_info->bit_depth = 8; - row_info->pixel_depth = 8; - row_info->rowbytes = row_width; - } - - if (row_info->bit_depth == 8) - { - { - if (num_trans > 0) - { - sp = row + (png_size_t)row_width - 1; - dp = row + ((png_size_t)row_width << 2) - 1; - - for (i = 0; i < row_width; i++) - { - if ((int)(*sp) >= num_trans) - *dp-- = 0xff; - - else - *dp-- = trans_alpha[*sp]; - - *dp-- = palette[*sp].blue; - *dp-- = palette[*sp].green; - *dp-- = palette[*sp].red; - sp--; - } - row_info->bit_depth = 8; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - row_info->color_type = 6; - row_info->channels = 4; - } - - else - { - sp = row + (png_size_t)row_width - 1; - dp = row + (png_size_t)(row_width * 3) - 1; - - for (i = 0; i < row_width; i++) - { - *dp-- = palette[*sp].blue; - *dp-- = palette[*sp].green; - *dp-- = palette[*sp].red; - sp--; - } - - row_info->bit_depth = 8; - row_info->pixel_depth = 24; - row_info->rowbytes = row_width * 3; - row_info->color_type = 2; - row_info->channels = 3; - } - } - } - } -} - -/* If the bit depth < 8, it is expanded to 8. Also, if the already - * expanded transparency value is supplied, an alpha channel is built. - */ -static void -png_do_expand(png_row_infop row_info, png_bytep row, - png_const_color_16p trans_color) -{ - int shift, value; - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_expand"); - - { - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - unsigned int gray = trans_color != NULL ? trans_color->gray : 0; - - if (row_info->bit_depth < 8) - { - switch (row_info->bit_depth) - { - case 1: - { - gray = (gray & 0x01) * 0xff; - sp = row + (png_size_t)((row_width - 1) >> 3); - dp = row + (png_size_t)row_width - 1; - shift = 7 - (int)((row_width + 7) & 0x07); - for (i = 0; i < row_width; i++) - { - if ((*sp >> shift) & 0x01) - *dp = 0xff; - - else - *dp = 0; - - if (shift == 7) - { - shift = 0; - sp--; - } - - else - shift++; - - dp--; - } - break; - } - - case 2: - { - gray = (gray & 0x03) * 0x55; - sp = row + (png_size_t)((row_width - 1) >> 2); - dp = row + (png_size_t)row_width - 1; - shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x03; - *dp = (png_byte)(value | (value << 2) | (value << 4) | - (value << 6)); - if (shift == 6) - { - shift = 0; - sp--; - } - - else - shift += 2; - - dp--; - } - break; - } - - case 4: - { - gray = (gray & 0x0f) * 0x11; - sp = row + (png_size_t)((row_width - 1) >> 1); - dp = row + (png_size_t)row_width - 1; - shift = (int)((1 - ((row_width + 1) & 0x01)) << 2); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x0f; - *dp = (png_byte)(value | (value << 4)); - if (shift == 4) - { - shift = 0; - sp--; - } - - else - shift = 4; - - dp--; - } - break; - } - - default: - break; - } - - row_info->bit_depth = 8; - row_info->pixel_depth = 8; - row_info->rowbytes = row_width; - } - - if (trans_color != NULL) - { - if (row_info->bit_depth == 8) - { - gray = gray & 0xff; - sp = row + (png_size_t)row_width - 1; - dp = row + ((png_size_t)row_width << 1) - 1; - - for (i = 0; i < row_width; i++) - { - if ((*sp & 0xffU) == gray) - *dp-- = 0; - - else - *dp-- = 0xff; - - *dp-- = *sp--; - } - } - - else if (row_info->bit_depth == 16) - { - unsigned int gray_high = (gray >> 8) & 0xff; - unsigned int gray_low = gray & 0xff; - sp = row + row_info->rowbytes - 1; - dp = row + (row_info->rowbytes << 1) - 1; - for (i = 0; i < row_width; i++) - { - if ((*(sp - 1) & 0xffU) == gray_high && - (*(sp) & 0xffU) == gray_low) - { - *dp-- = 0; - *dp-- = 0; - } - - else - { - *dp-- = 0xff; - *dp-- = 0xff; - } - - *dp-- = *sp--; - *dp-- = *sp--; - } - } - - row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; - row_info->channels = 2; - row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, - row_width); - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_RGB && - trans_color != NULL) - { - if (row_info->bit_depth == 8) - { - png_byte red = (png_byte)(trans_color->red & 0xff); - png_byte green = (png_byte)(trans_color->green & 0xff); - png_byte blue = (png_byte)(trans_color->blue & 0xff); - sp = row + (png_size_t)row_info->rowbytes - 1; - dp = row + ((png_size_t)row_width << 2) - 1; - for (i = 0; i < row_width; i++) - { - if (*(sp - 2) == red && *(sp - 1) == green && *(sp) == blue) - *dp-- = 0; - - else - *dp-- = 0xff; - - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - } - } - else if (row_info->bit_depth == 16) - { - png_byte red_high = (png_byte)((trans_color->red >> 8) & 0xff); - png_byte green_high = (png_byte)((trans_color->green >> 8) & 0xff); - png_byte blue_high = (png_byte)((trans_color->blue >> 8) & 0xff); - png_byte red_low = (png_byte)(trans_color->red & 0xff); - png_byte green_low = (png_byte)(trans_color->green & 0xff); - png_byte blue_low = (png_byte)(trans_color->blue & 0xff); - sp = row + row_info->rowbytes - 1; - dp = row + ((png_size_t)row_width << 3) - 1; - for (i = 0; i < row_width; i++) - { - if (*(sp - 5) == red_high && - *(sp - 4) == red_low && - *(sp - 3) == green_high && - *(sp - 2) == green_low && - *(sp - 1) == blue_high && - *(sp ) == blue_low) - { - *dp-- = 0; - *dp-- = 0; - } - - else - { - *dp-- = 0xff; - *dp-- = 0xff; - } - - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - } - } - row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; - row_info->channels = 4; - row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - } -} -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* If the bit depth is 8 and the color type is not a palette type expand the - * whole row to 16 bits. Has no effect otherwise. - */ -static void -png_do_expand_16(png_row_infop row_info, png_bytep row) -{ - if (row_info->bit_depth == 8 && - row_info->color_type != PNG_COLOR_TYPE_PALETTE) - { - /* The row have a sequence of bytes containing [0..255] and we need - * to turn it into another row containing [0..65535], to do this we - * calculate: - * - * (input / 255) * 65535 - * - * Which happens to be exactly input * 257 and this can be achieved - * simply by byte replication in place (copying backwards). - */ - png_byte *sp = row + row_info->rowbytes; /* source, last byte + 1 */ - png_byte *dp = sp + row_info->rowbytes; /* destination, end + 1 */ - while (dp > sp) - { - dp[-2] = dp[-1] = *--sp; dp -= 2; - } - - row_info->rowbytes *= 2; - row_info->bit_depth = 16; - row_info->pixel_depth = (png_byte)(row_info->channels * 16); - } -} -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -static void -png_do_quantize(png_row_infop row_info, png_bytep row, - png_const_bytep palette_lookup, png_const_bytep quantize_lookup) -{ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_quantize"); - - if (row_info->bit_depth == 8) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB && palette_lookup) - { - int r, g, b, p; - sp = row; - dp = row; - for (i = 0; i < row_width; i++) - { - r = *sp++; - g = *sp++; - b = *sp++; - - /* This looks real messy, but the compiler will reduce - * it down to a reasonable formula. For example, with - * 5 bits per color, we get: - * p = (((r >> 3) & 0x1f) << 10) | - * (((g >> 3) & 0x1f) << 5) | - * ((b >> 3) & 0x1f); - */ - p = (((r >> (8 - PNG_QUANTIZE_RED_BITS)) & - ((1 << PNG_QUANTIZE_RED_BITS) - 1)) << - (PNG_QUANTIZE_GREEN_BITS + PNG_QUANTIZE_BLUE_BITS)) | - (((g >> (8 - PNG_QUANTIZE_GREEN_BITS)) & - ((1 << PNG_QUANTIZE_GREEN_BITS) - 1)) << - (PNG_QUANTIZE_BLUE_BITS)) | - ((b >> (8 - PNG_QUANTIZE_BLUE_BITS)) & - ((1 << PNG_QUANTIZE_BLUE_BITS) - 1)); - - *dp++ = palette_lookup[p]; - } - - row_info->color_type = PNG_COLOR_TYPE_PALETTE; - row_info->channels = 1; - row_info->pixel_depth = row_info->bit_depth; - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA && - palette_lookup != NULL) - { - int r, g, b, p; - sp = row; - dp = row; - for (i = 0; i < row_width; i++) - { - r = *sp++; - g = *sp++; - b = *sp++; - sp++; - - p = (((r >> (8 - PNG_QUANTIZE_RED_BITS)) & - ((1 << PNG_QUANTIZE_RED_BITS) - 1)) << - (PNG_QUANTIZE_GREEN_BITS + PNG_QUANTIZE_BLUE_BITS)) | - (((g >> (8 - PNG_QUANTIZE_GREEN_BITS)) & - ((1 << PNG_QUANTIZE_GREEN_BITS) - 1)) << - (PNG_QUANTIZE_BLUE_BITS)) | - ((b >> (8 - PNG_QUANTIZE_BLUE_BITS)) & - ((1 << PNG_QUANTIZE_BLUE_BITS) - 1)); - - *dp++ = palette_lookup[p]; - } - - row_info->color_type = PNG_COLOR_TYPE_PALETTE; - row_info->channels = 1; - row_info->pixel_depth = row_info->bit_depth; - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - - else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE && - quantize_lookup) - { - sp = row; - - for (i = 0; i < row_width; i++, sp++) - { - *sp = quantize_lookup[*sp]; - } - } - } -} -#endif /* READ_QUANTIZE */ - -/* Transform the row. The order of transformations is significant, - * and is very touchy. If you add a transformation, take care to - * decide how it fits in with the other transformations here. - */ -void /* PRIVATE */ -png_do_read_transformations(png_structrp png_ptr, png_row_infop row_info) -{ - png_debug(1, "in png_do_read_transformations"); - - if (png_ptr->row_buf == NULL) - { - /* Prior to 1.5.4 this output row/pass where the NULL pointer is, but this - * error is incredibly rare and incredibly easy to debug without this - * information. - */ - png_error(png_ptr, "NULL row buffer"); - } - - /* The following is debugging; prior to 1.5.4 the code was never compiled in; - * in 1.5.4 PNG_FLAG_DETECT_UNINITIALIZED was added and the macro - * PNG_WARN_UNINITIALIZED_ROW removed. In 1.6 the new flag is set only for - * all transformations, however in practice the ROW_INIT always gets done on - * demand, if necessary. - */ - if ((png_ptr->flags & PNG_FLAG_DETECT_UNINITIALIZED) != 0 && - (png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - { - /* Application has failed to call either png_read_start_image() or - * png_read_update_info() after setting transforms that expand pixels. - * This check added to libpng-1.2.19 (but not enabled until 1.5.4). - */ - png_error(png_ptr, "Uninitialized row"); - } - -#ifdef PNG_READ_EXPAND_SUPPORTED - if ((png_ptr->transformations & PNG_EXPAND) != 0) - { - if (row_info->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_do_expand_palette(row_info, png_ptr->row_buf + 1, - png_ptr->palette, png_ptr->trans_alpha, png_ptr->num_trans); - } - - else - { - if (png_ptr->num_trans != 0 && - (png_ptr->transformations & PNG_EXPAND_tRNS) != 0) - png_do_expand(row_info, png_ptr->row_buf + 1, - &(png_ptr->trans_color)); - - else - png_do_expand(row_info, png_ptr->row_buf + 1, - NULL); - } - } -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) != 0 && - (png_ptr->transformations & PNG_COMPOSE) == 0 && - (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)) - png_do_strip_channel(row_info, png_ptr->row_buf + 1, - 0 /* at_start == false, because SWAP_ALPHA happens later */); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) != 0) - { - int rgb_error = - png_do_rgb_to_gray(png_ptr, row_info, - png_ptr->row_buf + 1); - - if (rgb_error != 0) - { - png_ptr->rgb_to_gray_status=1; - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == - PNG_RGB_TO_GRAY_WARN) - png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel"); - - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == - PNG_RGB_TO_GRAY_ERR) - png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel"); - } - } -#endif - -/* From Andreas Dilger e-mail to png-implement, 26 March 1998: - * - * In most cases, the "simple transparency" should be done prior to doing - * gray-to-RGB, or you will have to test 3x as many bytes to check if a - * pixel is transparent. You would also need to make sure that the - * transparency information is upgraded to RGB. - * - * To summarize, the current flow is: - * - Gray + simple transparency -> compare 1 or 2 gray bytes and composite - * with background "in place" if transparent, - * convert to RGB if necessary - * - Gray + alpha -> composite with gray background and remove alpha bytes, - * convert to RGB if necessary - * - * To support RGB backgrounds for gray images we need: - * - Gray + simple transparency -> convert to RGB + simple transparency, - * compare 3 or 6 bytes and composite with - * background "in place" if transparent - * (3x compare/pixel compared to doing - * composite with gray bkgrnd) - * - Gray + alpha -> convert to RGB + alpha, composite with background and - * remove alpha bytes (3x float - * operations/pixel compared with composite - * on gray background) - * - * Greg's change will do this. The reason it wasn't done before is for - * performance, as this increases the per-pixel operations. If we would check - * in advance if the background was gray or RGB, and position the gray-to-RGB - * transform appropriately, then it would save a lot of work/time. - */ - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - /* If gray -> RGB, do so now only if background is non-gray; else do later - * for performance reasons - */ - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) != 0 && - (png_ptr->mode & PNG_BACKGROUND_IS_GRAY) == 0) - png_do_gray_to_rgb(row_info, png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - if ((png_ptr->transformations & PNG_COMPOSE) != 0) - png_do_compose(row_info, png_ptr->row_buf + 1, png_ptr); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED - if ((png_ptr->transformations & PNG_GAMMA) != 0 && -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - /* Because RGB_TO_GRAY does the gamma transform. */ - (png_ptr->transformations & PNG_RGB_TO_GRAY) == 0 && -#endif -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - /* Because PNG_COMPOSE does the gamma transform if there is something to - * do (if there is an alpha channel or transparency.) - */ - !((png_ptr->transformations & PNG_COMPOSE) != 0 && - ((png_ptr->num_trans != 0) || - (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0)) && -#endif - /* Because png_init_read_transformations transforms the palette, unless - * RGB_TO_GRAY will do the transform. - */ - (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)) - png_do_gamma(row_info, png_ptr->row_buf + 1, png_ptr); -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) != 0 && - (png_ptr->transformations & PNG_COMPOSE) != 0 && - (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)) - png_do_strip_channel(row_info, png_ptr->row_buf + 1, - 0 /* at_start == false, because SWAP_ALPHA happens later */); -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - if ((png_ptr->transformations & PNG_ENCODE_ALPHA) != 0 && - (row_info->color_type & PNG_COLOR_MASK_ALPHA) != 0) - png_do_encode_alpha(row_info, png_ptr->row_buf + 1, png_ptr); -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - if ((png_ptr->transformations & PNG_SCALE_16_TO_8) != 0) - png_do_scale_16_to_8(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - /* There is no harm in doing both of these because only one has any effect, - * by putting the 'scale' option first if the app asks for scale (either by - * calling the API or in a TRANSFORM flag) this is what happens. - */ - if ((png_ptr->transformations & PNG_16_TO_8) != 0) - png_do_chop(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - if ((png_ptr->transformations & PNG_QUANTIZE) != 0) - { - png_do_quantize(row_info, png_ptr->row_buf + 1, - png_ptr->palette_lookup, png_ptr->quantize_index); - - if (row_info->rowbytes == 0) - png_error(png_ptr, "png_do_quantize returned rowbytes=0"); - } -#endif /* READ_QUANTIZE */ - -#ifdef PNG_READ_EXPAND_16_SUPPORTED - /* Do the expansion now, after all the arithmetic has been done. Notice - * that previous transformations can handle the PNG_EXPAND_16 flag if this - * is efficient (particularly true in the case of gamma correction, where - * better accuracy results faster!) - */ - if ((png_ptr->transformations & PNG_EXPAND_16) != 0) - png_do_expand_16(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - /* NOTE: moved here in 1.5.4 (from much later in this list.) */ - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) != 0 && - (png_ptr->mode & PNG_BACKGROUND_IS_GRAY) != 0) - png_do_gray_to_rgb(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_INVERT_SUPPORTED - if ((png_ptr->transformations & PNG_INVERT_MONO) != 0) - png_do_invert(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0) - png_do_read_invert_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_SHIFT_SUPPORTED - if ((png_ptr->transformations & PNG_SHIFT) != 0) - png_do_unshift(row_info, png_ptr->row_buf + 1, - &(png_ptr->shift)); -#endif - -#ifdef PNG_READ_PACK_SUPPORTED - if ((png_ptr->transformations & PNG_PACK) != 0) - png_do_unpack(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Added at libpng-1.5.10 */ - if (row_info->color_type == PNG_COLOR_TYPE_PALETTE && - png_ptr->num_palette_max >= 0) - png_do_check_palette_indexes(png_ptr, row_info); -#endif - -#ifdef PNG_READ_BGR_SUPPORTED - if ((png_ptr->transformations & PNG_BGR) != 0) - png_do_bgr(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if ((png_ptr->transformations & PNG_PACKSWAP) != 0) - png_do_packswap(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_FILLER_SUPPORTED - if ((png_ptr->transformations & PNG_FILLER) != 0) - png_do_read_filler(row_info, png_ptr->row_buf + 1, - (png_uint_32)png_ptr->filler, png_ptr->flags); -#endif - -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_SWAP_ALPHA) != 0) - png_do_read_swap_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_16BIT_SUPPORTED -#ifdef PNG_READ_SWAP_SUPPORTED - if ((png_ptr->transformations & PNG_SWAP_BYTES) != 0) - png_do_swap(row_info, png_ptr->row_buf + 1); -#endif -#endif - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - if ((png_ptr->transformations & PNG_USER_TRANSFORM) != 0) - { - if (png_ptr->read_user_transform_fn != NULL) - (*(png_ptr->read_user_transform_fn)) /* User read transform function */ - (png_ptr, /* png_ptr */ - row_info, /* row_info: */ - /* png_uint_32 width; width of row */ - /* png_size_t rowbytes; number of bytes in row */ - /* png_byte color_type; color type of pixels */ - /* png_byte bit_depth; bit depth of samples */ - /* png_byte channels; number of channels (1-4) */ - /* png_byte pixel_depth; bits per pixel (depth*channels) */ - png_ptr->row_buf + 1); /* start of pixel data for row */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED - if (png_ptr->user_transform_depth != 0) - row_info->bit_depth = png_ptr->user_transform_depth; - - if (png_ptr->user_transform_channels != 0) - row_info->channels = png_ptr->user_transform_channels; -#endif - row_info->pixel_depth = (png_byte)(row_info->bit_depth * - row_info->channels); - - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_info->width); - } -#endif -} - -#endif /* READ_TRANSFORMS */ -#endif /* READ */ diff --git a/src/png/libpng/pngrutil.c b/src/png/libpng/pngrutil.c deleted file mode 100644 index 8692933bd..000000000 --- a/src/png/libpng/pngrutil.c +++ /dev/null @@ -1,4661 +0,0 @@ - -/* pngrutil.c - utilities to read a PNG file - * - * Last changed in libpng 1.6.33 [September 28, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file contains routines that are only called from within - * libpng itself during the course of reading an image. - */ - -#include "pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -png_uint_32 PNGAPI -png_get_uint_31(png_const_structrp png_ptr, png_const_bytep buf) -{ - png_uint_32 uval = png_get_uint_32(buf); - - if (uval > PNG_UINT_31_MAX) - png_error(png_ptr, "PNG unsigned integer out of range"); - - return (uval); -} - -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_READ_cHRM_SUPPORTED) -/* The following is a variation on the above for use with the fixed - * point values used for gAMA and cHRM. Instead of png_error it - * issues a warning and returns (-1) - an invalid value because both - * gAMA and cHRM use *unsigned* integers for fixed point values. - */ -#define PNG_FIXED_ERROR (-1) - -static png_fixed_point /* PRIVATE */ -png_get_fixed_point(png_structrp png_ptr, png_const_bytep buf) -{ - png_uint_32 uval = png_get_uint_32(buf); - - if (uval <= PNG_UINT_31_MAX) - return (png_fixed_point)uval; /* known to be in range */ - - /* The caller can turn off the warning by passing NULL. */ - if (png_ptr != NULL) - png_warning(png_ptr, "PNG fixed point integer out of range"); - - return PNG_FIXED_ERROR; -} -#endif - -#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED -/* NOTE: the read macros will obscure these definitions, so that if - * PNG_USE_READ_MACROS is set the library will not use them internally, - * but the APIs will still be available externally. - * - * The parentheses around "PNGAPI function_name" in the following three - * functions are necessary because they allow the macros to co-exist with - * these (unused but exported) functions. - */ - -/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */ -png_uint_32 (PNGAPI -png_get_uint_32)(png_const_bytep buf) -{ - png_uint_32 uval = - ((png_uint_32)(*(buf )) << 24) + - ((png_uint_32)(*(buf + 1)) << 16) + - ((png_uint_32)(*(buf + 2)) << 8) + - ((png_uint_32)(*(buf + 3)) ) ; - - return uval; -} - -/* Grab a signed 32-bit integer from a buffer in big-endian format. The - * data is stored in the PNG file in two's complement format and there - * is no guarantee that a 'png_int_32' is exactly 32 bits, therefore - * the following code does a two's complement to native conversion. - */ -png_int_32 (PNGAPI -png_get_int_32)(png_const_bytep buf) -{ - png_uint_32 uval = png_get_uint_32(buf); - if ((uval & 0x80000000) == 0) /* non-negative */ - return (png_int_32)uval; - - uval = (uval ^ 0xffffffff) + 1; /* 2's complement: -x = ~x+1 */ - if ((uval & 0x80000000) == 0) /* no overflow */ - return -(png_int_32)uval; - /* The following has to be safe; this function only gets called on PNG data - * and if we get here that data is invalid. 0 is the most safe value and - * if not then an attacker would surely just generate a PNG with 0 instead. - */ - return 0; -} - -/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */ -png_uint_16 (PNGAPI -png_get_uint_16)(png_const_bytep buf) -{ - /* ANSI-C requires an int value to accomodate at least 16 bits so this - * works and allows the compiler not to worry about possible narrowing - * on 32-bit systems. (Pre-ANSI systems did not make integers smaller - * than 16 bits either.) - */ - unsigned int val = - ((unsigned int)(*buf) << 8) + - ((unsigned int)(*(buf + 1))); - - return (png_uint_16)val; -} - -#endif /* READ_INT_FUNCTIONS */ - -/* Read and check the PNG file signature */ -void /* PRIVATE */ -png_read_sig(png_structrp png_ptr, png_inforp info_ptr) -{ - png_size_t num_checked, num_to_check; - - /* Exit if the user application does not expect a signature. */ - if (png_ptr->sig_bytes >= 8) - return; - - num_checked = png_ptr->sig_bytes; - num_to_check = 8 - num_checked; - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_SIGNATURE; -#endif - - /* The signature must be serialized in a single I/O call. */ - png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check); - png_ptr->sig_bytes = 8; - - if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check) != 0) - { - if (num_checked < 4 && - png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) - png_error(png_ptr, "Not a PNG file"); - else - png_error(png_ptr, "PNG file corrupted by ASCII conversion"); - } - if (num_checked < 3) - png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE; -} - -/* Read the chunk header (length + type name). - * Put the type name into png_ptr->chunk_name, and return the length. - */ -png_uint_32 /* PRIVATE */ -png_read_chunk_header(png_structrp png_ptr) -{ - png_byte buf[8]; - png_uint_32 length; - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_HDR; -#endif - - /* Read the length and the chunk name. - * This must be performed in a single I/O call. - */ - png_read_data(png_ptr, buf, 8); - length = png_get_uint_31(png_ptr, buf); - - /* Put the chunk name into png_ptr->chunk_name. */ - png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(buf+4); - - png_debug2(0, "Reading %lx chunk, length = %lu", - (unsigned long)png_ptr->chunk_name, (unsigned long)length); - - /* Reset the crc and run it over the chunk name. */ - png_reset_crc(png_ptr); - png_calculate_crc(png_ptr, buf + 4, 4); - - /* Check to see if chunk name is valid. */ - png_check_chunk_name(png_ptr, png_ptr->chunk_name); - - /* Check for too-large chunk length */ - png_check_chunk_length(png_ptr, length); - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_DATA; -#endif - - return length; -} - -/* Read data, and (optionally) run it through the CRC. */ -void /* PRIVATE */ -png_crc_read(png_structrp png_ptr, png_bytep buf, png_uint_32 length) -{ - if (png_ptr == NULL) - return; - - png_read_data(png_ptr, buf, length); - png_calculate_crc(png_ptr, buf, length); -} - -/* Optionally skip data and then check the CRC. Depending on whether we - * are reading an ancillary or critical chunk, and how the program has set - * things up, we may calculate the CRC on the data and print a message. - * Returns '1' if there was a CRC error, '0' otherwise. - */ -int /* PRIVATE */ -png_crc_finish(png_structrp png_ptr, png_uint_32 skip) -{ - /* The size of the local buffer for inflate is a good guess as to a - * reasonable size to use for buffering reads from the application. - */ - while (skip > 0) - { - png_uint_32 len; - png_byte tmpbuf[PNG_INFLATE_BUF_SIZE]; - - len = (sizeof tmpbuf); - if (len > skip) - len = skip; - skip -= len; - - png_crc_read(png_ptr, tmpbuf, len); - } - - if (png_crc_error(png_ptr) != 0) - { - if (PNG_CHUNK_ANCILLARY(png_ptr->chunk_name) != 0 ? - (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) == 0 : - (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE) != 0) - { - png_chunk_warning(png_ptr, "CRC error"); - } - - else - png_chunk_error(png_ptr, "CRC error"); - - return (1); - } - - return (0); -} - -/* Compare the CRC stored in the PNG file with that calculated by libpng from - * the data it has read thus far. - */ -int /* PRIVATE */ -png_crc_error(png_structrp png_ptr) -{ - png_byte crc_bytes[4]; - png_uint_32 crc; - int need_crc = 1; - - if (PNG_CHUNK_ANCILLARY(png_ptr->chunk_name) != 0) - { - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == - (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) - need_crc = 0; - } - - else /* critical */ - { - if ((png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) != 0) - need_crc = 0; - } - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_CRC; -#endif - - /* The chunk CRC must be serialized in a single I/O call. */ - png_read_data(png_ptr, crc_bytes, 4); - - if (need_crc != 0) - { - crc = png_get_uint_32(crc_bytes); - return ((int)(crc != png_ptr->crc)); - } - - else - return (0); -} - -#if defined(PNG_READ_iCCP_SUPPORTED) || defined(PNG_READ_iTXt_SUPPORTED) ||\ - defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_READ_sCAL_SUPPORTED) ||\ - defined(PNG_READ_sPLT_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) ||\ - defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_SEQUENTIAL_READ_SUPPORTED) -/* Manage the read buffer; this simply reallocates the buffer if it is not small - * enough (or if it is not allocated). The routine returns a pointer to the - * buffer; if an error occurs and 'warn' is set the routine returns NULL, else - * it will call png_error (via png_malloc) on failure. (warn == 2 means - * 'silent'). - */ -static png_bytep -png_read_buffer(png_structrp png_ptr, png_alloc_size_t new_size, int warn) -{ - png_bytep buffer = png_ptr->read_buffer; - - if (buffer != NULL && new_size > png_ptr->read_buffer_size) - { - png_ptr->read_buffer = NULL; - png_ptr->read_buffer = NULL; - png_ptr->read_buffer_size = 0; - png_free(png_ptr, buffer); - buffer = NULL; - } - - if (buffer == NULL) - { - buffer = png_voidcast(png_bytep, png_malloc_base(png_ptr, new_size)); - - if (buffer != NULL) - { - memset(buffer, 0, new_size); /* just in case */ - png_ptr->read_buffer = buffer; - png_ptr->read_buffer_size = new_size; - } - - else if (warn < 2) /* else silent */ - { - if (warn != 0) - png_chunk_warning(png_ptr, "insufficient memory to read chunk"); - - else - png_chunk_error(png_ptr, "insufficient memory to read chunk"); - } - } - - return buffer; -} -#endif /* READ_iCCP|iTXt|pCAL|sCAL|sPLT|tEXt|zTXt|SEQUENTIAL_READ */ - -/* png_inflate_claim: claim the zstream for some nefarious purpose that involves - * decompression. Returns Z_OK on success, else a zlib error code. It checks - * the owner but, in final release builds, just issues a warning if some other - * chunk apparently owns the stream. Prior to release it does a png_error. - */ -static int -png_inflate_claim(png_structrp png_ptr, png_uint_32 owner) -{ - if (png_ptr->zowner != 0) - { - char msg[64]; - - PNG_STRING_FROM_CHUNK(msg, png_ptr->zowner); - /* So the message that results is " using zstream"; this is an - * internal error, but is very useful for debugging. i18n requirements - * are minimal. - */ - (void)png_safecat(msg, (sizeof msg), 4, " using zstream"); -#if PNG_RELEASE_BUILD - png_chunk_warning(png_ptr, msg); - png_ptr->zowner = 0; -#else - png_chunk_error(png_ptr, msg); -#endif - } - - /* Implementation note: unlike 'png_deflate_claim' this internal function - * does not take the size of the data as an argument. Some efficiency could - * be gained by using this when it is known *if* the zlib stream itself does - * not record the number; however, this is an illusion: the original writer - * of the PNG may have selected a lower window size, and we really must - * follow that because, for systems with with limited capabilities, we - * would otherwise reject the application's attempts to use a smaller window - * size (zlib doesn't have an interface to say "this or lower"!). - * - * inflateReset2 was added to zlib 1.2.4; before this the window could not be - * reset, therefore it is necessary to always allocate the maximum window - * size with earlier zlibs just in case later compressed chunks need it. - */ - { - int ret; /* zlib return code */ -#if ZLIB_VERNUM >= 0x1240 - int window_bits = 0; - -# if defined(PNG_SET_OPTION_SUPPORTED) && defined(PNG_MAXIMUM_INFLATE_WINDOW) - if (((png_ptr->options >> PNG_MAXIMUM_INFLATE_WINDOW) & 3) == - PNG_OPTION_ON) - { - window_bits = 15; - png_ptr->zstream_start = 0; /* fixed window size */ - } - - else - { - png_ptr->zstream_start = 1; - } -# endif - -#endif /* ZLIB_VERNUM >= 0x1240 */ - - /* Set this for safety, just in case the previous owner left pointers to - * memory allocations. - */ - png_ptr->zstream.next_in = NULL; - png_ptr->zstream.avail_in = 0; - png_ptr->zstream.next_out = NULL; - png_ptr->zstream.avail_out = 0; - - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0) - { -#if ZLIB_VERNUM >= 0x1240 - ret = inflateReset2(&png_ptr->zstream, window_bits); -#else - ret = inflateReset(&png_ptr->zstream); -#endif - } - - else - { -#if ZLIB_VERNUM >= 0x1240 - ret = inflateInit2(&png_ptr->zstream, window_bits); -#else - ret = inflateInit(&png_ptr->zstream); -#endif - - if (ret == Z_OK) - png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED; - } - -#if ZLIB_VERNUM >= 0x1290 && \ - defined(PNG_SET_OPTION_SUPPORTED) && defined(PNG_IGNORE_ADLER32) - if (((png_ptr->options >> PNG_IGNORE_ADLER32) & 3) == PNG_OPTION_ON) - /* Turn off validation of the ADLER32 checksum in IDAT chunks */ - ret = inflateValidate(&png_ptr->zstream, 0); -#endif - - if (ret == Z_OK) - png_ptr->zowner = owner; - - else - png_zstream_error(png_ptr, ret); - - return ret; - } - -#ifdef window_bits -# undef window_bits -#endif -} - -#if ZLIB_VERNUM >= 0x1240 -/* Handle the start of the inflate stream if we called inflateInit2(strm,0); - * in this case some zlib versions skip validation of the CINFO field and, in - * certain circumstances, libpng may end up displaying an invalid image, in - * contrast to implementations that call zlib in the normal way (e.g. libpng - * 1.5). - */ -int /* PRIVATE */ -png_zlib_inflate(png_structrp png_ptr, int flush) -{ - if (png_ptr->zstream_start && png_ptr->zstream.avail_in > 0) - { - if ((*png_ptr->zstream.next_in >> 4) > 7) - { - png_ptr->zstream.msg = "invalid window size (libpng)"; - return Z_DATA_ERROR; - } - - png_ptr->zstream_start = 0; - } - - return inflate(&png_ptr->zstream, flush); -} -#endif /* Zlib >= 1.2.4 */ - -#ifdef PNG_READ_COMPRESSED_TEXT_SUPPORTED -#if defined(PNG_READ_zTXt_SUPPORTED) || defined (PNG_READ_iTXt_SUPPORTED) -/* png_inflate now returns zlib error codes including Z_OK and Z_STREAM_END to - * allow the caller to do multiple calls if required. If the 'finish' flag is - * set Z_FINISH will be passed to the final inflate() call and Z_STREAM_END must - * be returned or there has been a problem, otherwise Z_SYNC_FLUSH is used and - * Z_OK or Z_STREAM_END will be returned on success. - * - * The input and output sizes are updated to the actual amounts of data consumed - * or written, not the amount available (as in a z_stream). The data pointers - * are not changed, so the next input is (data+input_size) and the next - * available output is (output+output_size). - */ -static int -png_inflate(png_structrp png_ptr, png_uint_32 owner, int finish, - /* INPUT: */ png_const_bytep input, png_uint_32p input_size_ptr, - /* OUTPUT: */ png_bytep output, png_alloc_size_t *output_size_ptr) -{ - if (png_ptr->zowner == owner) /* Else not claimed */ - { - int ret; - png_alloc_size_t avail_out = *output_size_ptr; - png_uint_32 avail_in = *input_size_ptr; - - /* zlib can't necessarily handle more than 65535 bytes at once (i.e. it - * can't even necessarily handle 65536 bytes) because the type uInt is - * "16 bits or more". Consequently it is necessary to chunk the input to - * zlib. This code uses ZLIB_IO_MAX, from pngpriv.h, as the maximum (the - * maximum value that can be stored in a uInt.) It is possible to set - * ZLIB_IO_MAX to a lower value in pngpriv.h and this may sometimes have - * a performance advantage, because it reduces the amount of data accessed - * at each step and that may give the OS more time to page it in. - */ - png_ptr->zstream.next_in = PNGZ_INPUT_CAST(input); - /* avail_in and avail_out are set below from 'size' */ - png_ptr->zstream.avail_in = 0; - png_ptr->zstream.avail_out = 0; - - /* Read directly into the output if it is available (this is set to - * a local buffer below if output is NULL). - */ - if (output != NULL) - png_ptr->zstream.next_out = output; - - do - { - uInt avail; - Byte local_buffer[PNG_INFLATE_BUF_SIZE]; - - /* zlib INPUT BUFFER */ - /* The setting of 'avail_in' used to be outside the loop; by setting it - * inside it is possible to chunk the input to zlib and simply rely on - * zlib to advance the 'next_in' pointer. This allows arbitrary - * amounts of data to be passed through zlib at the unavoidable cost of - * requiring a window save (memcpy of up to 32768 output bytes) - * every ZLIB_IO_MAX input bytes. - */ - avail_in += png_ptr->zstream.avail_in; /* not consumed last time */ - - avail = ZLIB_IO_MAX; - - if (avail_in < avail) - avail = (uInt)avail_in; /* safe: < than ZLIB_IO_MAX */ - - avail_in -= avail; - png_ptr->zstream.avail_in = avail; - - /* zlib OUTPUT BUFFER */ - avail_out += png_ptr->zstream.avail_out; /* not written last time */ - - avail = ZLIB_IO_MAX; /* maximum zlib can process */ - - if (output == NULL) - { - /* Reset the output buffer each time round if output is NULL and - * make available the full buffer, up to 'remaining_space' - */ - png_ptr->zstream.next_out = local_buffer; - if ((sizeof local_buffer) < avail) - avail = (sizeof local_buffer); - } - - if (avail_out < avail) - avail = (uInt)avail_out; /* safe: < ZLIB_IO_MAX */ - - png_ptr->zstream.avail_out = avail; - avail_out -= avail; - - /* zlib inflate call */ - /* In fact 'avail_out' may be 0 at this point, that happens at the end - * of the read when the final LZ end code was not passed at the end of - * the previous chunk of input data. Tell zlib if we have reached the - * end of the output buffer. - */ - ret = PNG_INFLATE(png_ptr, avail_out > 0 ? Z_NO_FLUSH : - (finish ? Z_FINISH : Z_SYNC_FLUSH)); - } while (ret == Z_OK); - - /* For safety kill the local buffer pointer now */ - if (output == NULL) - png_ptr->zstream.next_out = NULL; - - /* Claw back the 'size' and 'remaining_space' byte counts. */ - avail_in += png_ptr->zstream.avail_in; - avail_out += png_ptr->zstream.avail_out; - - /* Update the input and output sizes; the updated values are the amount - * consumed or written, effectively the inverse of what zlib uses. - */ - if (avail_out > 0) - *output_size_ptr -= avail_out; - - if (avail_in > 0) - *input_size_ptr -= avail_in; - - /* Ensure png_ptr->zstream.msg is set (even in the success case!) */ - png_zstream_error(png_ptr, ret); - return ret; - } - - else - { - /* This is a bad internal error. The recovery assigns to the zstream msg - * pointer, which is not owned by the caller, but this is safe; it's only - * used on errors! - */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("zstream unclaimed"); - return Z_STREAM_ERROR; - } -} - -/* - * Decompress trailing data in a chunk. The assumption is that read_buffer - * points at an allocated area holding the contents of a chunk with a - * trailing compressed part. What we get back is an allocated area - * holding the original prefix part and an uncompressed version of the - * trailing part (the malloc area passed in is freed). - */ -static int -png_decompress_chunk(png_structrp png_ptr, - png_uint_32 chunklength, png_uint_32 prefix_size, - png_alloc_size_t *newlength /* must be initialized to the maximum! */, - int terminate /*add a '\0' to the end of the uncompressed data*/) -{ - /* TODO: implement different limits for different types of chunk. - * - * The caller supplies *newlength set to the maximum length of the - * uncompressed data, but this routine allocates space for the prefix and - * maybe a '\0' terminator too. We have to assume that 'prefix_size' is - * limited only by the maximum chunk size. - */ - png_alloc_size_t limit = PNG_SIZE_MAX; - -# ifdef PNG_SET_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_malloc_max > 0 && - png_ptr->user_chunk_malloc_max < limit) - limit = png_ptr->user_chunk_malloc_max; -# elif PNG_USER_CHUNK_MALLOC_MAX > 0 - if (PNG_USER_CHUNK_MALLOC_MAX < limit) - limit = PNG_USER_CHUNK_MALLOC_MAX; -# endif - - if (limit >= prefix_size + (terminate != 0)) - { - int ret; - - limit -= prefix_size + (terminate != 0); - - if (limit < *newlength) - *newlength = limit; - - /* Now try to claim the stream. */ - ret = png_inflate_claim(png_ptr, png_ptr->chunk_name); - - if (ret == Z_OK) - { - png_uint_32 lzsize = chunklength - prefix_size; - - ret = png_inflate(png_ptr, png_ptr->chunk_name, 1/*finish*/, - /* input: */ png_ptr->read_buffer + prefix_size, &lzsize, - /* output: */ NULL, newlength); - - if (ret == Z_STREAM_END) - { - /* Use 'inflateReset' here, not 'inflateReset2' because this - * preserves the previously decided window size (otherwise it would - * be necessary to store the previous window size.) In practice - * this doesn't matter anyway, because png_inflate will call inflate - * with Z_FINISH in almost all cases, so the window will not be - * maintained. - */ - if (inflateReset(&png_ptr->zstream) == Z_OK) - { - /* Because of the limit checks above we know that the new, - * expanded, size will fit in a size_t (let alone an - * png_alloc_size_t). Use png_malloc_base here to avoid an - * extra OOM message. - */ - png_alloc_size_t new_size = *newlength; - png_alloc_size_t buffer_size = prefix_size + new_size + - (terminate != 0); - png_bytep text = png_voidcast(png_bytep, png_malloc_base(png_ptr, - buffer_size)); - - if (text != NULL) - { - memset(text, 0, buffer_size); - - ret = png_inflate(png_ptr, png_ptr->chunk_name, 1/*finish*/, - png_ptr->read_buffer + prefix_size, &lzsize, - text + prefix_size, newlength); - - if (ret == Z_STREAM_END) - { - if (new_size == *newlength) - { - if (terminate != 0) - text[prefix_size + *newlength] = 0; - - if (prefix_size > 0) - memcpy(text, png_ptr->read_buffer, prefix_size); - - { - png_bytep old_ptr = png_ptr->read_buffer; - - png_ptr->read_buffer = text; - png_ptr->read_buffer_size = buffer_size; - text = old_ptr; /* freed below */ - } - } - - else - { - /* The size changed on the second read, there can be no - * guarantee that anything is correct at this point. - * The 'msg' pointer has been set to "unexpected end of - * LZ stream", which is fine, but return an error code - * that the caller won't accept. - */ - ret = PNG_UNEXPECTED_ZLIB_RETURN; - } - } - - else if (ret == Z_OK) - ret = PNG_UNEXPECTED_ZLIB_RETURN; /* for safety */ - - /* Free the text pointer (this is the old read_buffer on - * success) - */ - png_free(png_ptr, text); - - /* This really is very benign, but it's still an error because - * the extra space may otherwise be used as a Trojan Horse. - */ - if (ret == Z_STREAM_END && - chunklength - prefix_size != lzsize) - png_chunk_benign_error(png_ptr, "extra compressed data"); - } - - else - { - /* Out of memory allocating the buffer */ - ret = Z_MEM_ERROR; - png_zstream_error(png_ptr, Z_MEM_ERROR); - } - } - - else - { - /* inflateReset failed, store the error message */ - png_zstream_error(png_ptr, ret); - ret = PNG_UNEXPECTED_ZLIB_RETURN; - } - } - - else if (ret == Z_OK) - ret = PNG_UNEXPECTED_ZLIB_RETURN; - - /* Release the claimed stream */ - png_ptr->zowner = 0; - } - - else /* the claim failed */ if (ret == Z_STREAM_END) /* impossible! */ - ret = PNG_UNEXPECTED_ZLIB_RETURN; - - return ret; - } - - else - { - /* Application/configuration limits exceeded */ - png_zstream_error(png_ptr, Z_MEM_ERROR); - return Z_MEM_ERROR; - } -} -#endif /* READ_zTXt || READ_iTXt */ -#endif /* READ_COMPRESSED_TEXT */ - -#ifdef PNG_READ_iCCP_SUPPORTED -/* Perform a partial read and decompress, producing 'avail_out' bytes and - * reading from the current chunk as required. - */ -static int -png_inflate_read(png_structrp png_ptr, png_bytep read_buffer, uInt read_size, - png_uint_32p chunk_bytes, png_bytep next_out, png_alloc_size_t *out_size, - int finish) -{ - if (png_ptr->zowner == png_ptr->chunk_name) - { - int ret; - - /* next_in and avail_in must have been initialized by the caller. */ - png_ptr->zstream.next_out = next_out; - png_ptr->zstream.avail_out = 0; /* set in the loop */ - - do - { - if (png_ptr->zstream.avail_in == 0) - { - if (read_size > *chunk_bytes) - read_size = (uInt)*chunk_bytes; - *chunk_bytes -= read_size; - - if (read_size > 0) - png_crc_read(png_ptr, read_buffer, read_size); - - png_ptr->zstream.next_in = read_buffer; - png_ptr->zstream.avail_in = read_size; - } - - if (png_ptr->zstream.avail_out == 0) - { - uInt avail = ZLIB_IO_MAX; - if (avail > *out_size) - avail = (uInt)*out_size; - *out_size -= avail; - - png_ptr->zstream.avail_out = avail; - } - - /* Use Z_SYNC_FLUSH when there is no more chunk data to ensure that all - * the available output is produced; this allows reading of truncated - * streams. - */ - ret = PNG_INFLATE(png_ptr, *chunk_bytes > 0 ? - Z_NO_FLUSH : (finish ? Z_FINISH : Z_SYNC_FLUSH)); - } - while (ret == Z_OK && (*out_size > 0 || png_ptr->zstream.avail_out > 0)); - - *out_size += png_ptr->zstream.avail_out; - png_ptr->zstream.avail_out = 0; /* Should not be required, but is safe */ - - /* Ensure the error message pointer is always set: */ - png_zstream_error(png_ptr, ret); - return ret; - } - - else - { - png_ptr->zstream.msg = PNGZ_MSG_CAST("zstream unclaimed"); - return Z_STREAM_ERROR; - } -} -#endif /* READ_iCCP */ - -/* Read and check the IDHR chunk */ - -void /* PRIVATE */ -png_handle_IHDR(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[13]; - png_uint_32 width, height; - int bit_depth, color_type, compression_type, filter_type; - int interlace_type; - - png_debug(1, "in png_handle_IHDR"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) != 0) - png_chunk_error(png_ptr, "out of place"); - - /* Check the length */ - if (length != 13) - png_chunk_error(png_ptr, "invalid"); - - png_ptr->mode |= PNG_HAVE_IHDR; - - png_crc_read(png_ptr, buf, 13); - png_crc_finish(png_ptr, 0); - - width = png_get_uint_31(png_ptr, buf); - height = png_get_uint_31(png_ptr, buf + 4); - bit_depth = buf[8]; - color_type = buf[9]; - compression_type = buf[10]; - filter_type = buf[11]; - interlace_type = buf[12]; - - /* Set internal variables */ - png_ptr->width = width; - png_ptr->height = height; - png_ptr->bit_depth = (png_byte)bit_depth; - png_ptr->interlaced = (png_byte)interlace_type; - png_ptr->color_type = (png_byte)color_type; -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_ptr->filter_type = (png_byte)filter_type; -#endif - png_ptr->compression_type = (png_byte)compression_type; - - /* Find number of channels */ - switch (png_ptr->color_type) - { - default: /* invalid, png_set_IHDR calls png_error */ - case PNG_COLOR_TYPE_GRAY: - case PNG_COLOR_TYPE_PALETTE: - png_ptr->channels = 1; - break; - - case PNG_COLOR_TYPE_RGB: - png_ptr->channels = 3; - break; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - png_ptr->channels = 2; - break; - - case PNG_COLOR_TYPE_RGB_ALPHA: - png_ptr->channels = 4; - break; - } - - /* Set up other useful info */ - png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * png_ptr->channels); - png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width); - png_debug1(3, "bit_depth = %d", png_ptr->bit_depth); - png_debug1(3, "channels = %d", png_ptr->channels); - png_debug1(3, "rowbytes = %lu", (unsigned long)png_ptr->rowbytes); - png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, - color_type, interlace_type, compression_type, filter_type); -} - -/* Read and check the palette */ -void /* PRIVATE */ -png_handle_PLTE(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_color palette[PNG_MAX_PALETTE_LENGTH]; - int max_palette_length, num, i; -#ifdef PNG_POINTER_INDEXING_SUPPORTED - png_colorp pal_ptr; -#endif - - png_debug(1, "in png_handle_PLTE"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - /* Moved to before the 'after IDAT' check below because otherwise duplicate - * PLTE chunks are potentially ignored (the spec says there shall not be more - * than one PLTE, the error is not treated as benign, so this check trumps - * the requirement that PLTE appears before IDAT.) - */ - else if ((png_ptr->mode & PNG_HAVE_PLTE) != 0) - png_chunk_error(png_ptr, "duplicate"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - /* This is benign because the non-benign error happened before, when an - * IDAT was encountered in a color-mapped image with no PLTE. - */ - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - png_ptr->mode |= PNG_HAVE_PLTE; - - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "ignored in grayscale PNG"); - return; - } - -#ifndef PNG_READ_OPT_PLTE_SUPPORTED - if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - { - png_crc_finish(png_ptr, length); - return; - } -#endif - - if (length > 3*PNG_MAX_PALETTE_LENGTH || length % 3) - { - png_crc_finish(png_ptr, length); - - if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - png_chunk_benign_error(png_ptr, "invalid"); - - else - png_chunk_error(png_ptr, "invalid"); - - return; - } - - /* The cast is safe because 'length' is less than 3*PNG_MAX_PALETTE_LENGTH */ - num = (int)length / 3; - - /* If the palette has 256 or fewer entries but is too large for the bit - * depth, we don't issue an error, to preserve the behavior of previous - * libpng versions. We silently truncate the unused extra palette entries - * here. - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - max_palette_length = (1 << png_ptr->bit_depth); - else - max_palette_length = PNG_MAX_PALETTE_LENGTH; - - if (num > max_palette_length) - num = max_palette_length; - -#ifdef PNG_POINTER_INDEXING_SUPPORTED - for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++) - { - png_byte buf[3]; - - png_crc_read(png_ptr, buf, 3); - pal_ptr->red = buf[0]; - pal_ptr->green = buf[1]; - pal_ptr->blue = buf[2]; - } -#else - for (i = 0; i < num; i++) - { - png_byte buf[3]; - - png_crc_read(png_ptr, buf, 3); - /* Don't depend upon png_color being any order */ - palette[i].red = buf[0]; - palette[i].green = buf[1]; - palette[i].blue = buf[2]; - } -#endif - - /* If we actually need the PLTE chunk (ie for a paletted image), we do - * whatever the normal CRC configuration tells us. However, if we - * have an RGB image, the PLTE can be considered ancillary, so - * we will act as though it is. - */ -#ifndef PNG_READ_OPT_PLTE_SUPPORTED - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -#endif - { - png_crc_finish(png_ptr, (png_uint_32) (length - (unsigned int)num * 3)); - } - -#ifndef PNG_READ_OPT_PLTE_SUPPORTED - else if (png_crc_error(png_ptr) != 0) /* Only if we have a CRC error */ - { - /* If we don't want to use the data from an ancillary chunk, - * we have two options: an error abort, or a warning and we - * ignore the data in this chunk (which should be OK, since - * it's considered ancillary for a RGB or RGBA image). - * - * IMPLEMENTATION NOTE: this is only here because png_crc_finish uses the - * chunk type to determine whether to check the ancillary or the critical - * flags. - */ - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE) == 0) - { - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) != 0) - return; - - else - png_chunk_error(png_ptr, "CRC error"); - } - - /* Otherwise, we (optionally) emit a warning and use the chunk. */ - else if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) == 0) - png_chunk_warning(png_ptr, "CRC error"); - } -#endif - - /* TODO: png_set_PLTE has the side effect of setting png_ptr->palette to its - * own copy of the palette. This has the side effect that when png_start_row - * is called (this happens after any call to png_read_update_info) the - * info_ptr palette gets changed. This is extremely unexpected and - * confusing. - * - * Fix this by not sharing the palette in this way. - */ - png_set_PLTE(png_ptr, info_ptr, palette, num); - - /* The three chunks, bKGD, hIST and tRNS *must* appear after PLTE and before - * IDAT. Prior to 1.6.0 this was not checked; instead the code merely - * checked the apparent validity of a tRNS chunk inserted before PLTE on a - * palette PNG. 1.6.0 attempts to rigorously follow the standard and - * therefore does a benign error if the erroneous condition is detected *and* - * cancels the tRNS if the benign error returns. The alternative is to - * amend the standard since it would be rather hypocritical of the standards - * maintainers to ignore it. - */ -#ifdef PNG_READ_tRNS_SUPPORTED - if (png_ptr->num_trans > 0 || - (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS) != 0)) - { - /* Cancel this because otherwise it would be used if the transforms - * require it. Don't cancel the 'valid' flag because this would prevent - * detection of duplicate chunks. - */ - png_ptr->num_trans = 0; - - if (info_ptr != NULL) - info_ptr->num_trans = 0; - - png_chunk_benign_error(png_ptr, "tRNS must be after"); - } -#endif - -#ifdef PNG_READ_hIST_SUPPORTED - if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) != 0) - png_chunk_benign_error(png_ptr, "hIST must be after"); -#endif - -#ifdef PNG_READ_bKGD_SUPPORTED - if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) != 0) - png_chunk_benign_error(png_ptr, "bKGD must be after"); -#endif -} - -void /* PRIVATE */ -png_handle_IEND(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_debug(1, "in png_handle_IEND"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0 || - (png_ptr->mode & PNG_HAVE_IDAT) == 0) - png_chunk_error(png_ptr, "out of place"); - - png_ptr->mode |= (PNG_AFTER_IDAT | PNG_HAVE_IEND); - - png_crc_finish(png_ptr, length); - - if (length != 0) - png_chunk_benign_error(png_ptr, "invalid"); - - PNG_UNUSED(info_ptr) -} - -#ifdef PNG_READ_gAMA_SUPPORTED -void /* PRIVATE */ -png_handle_gAMA(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_fixed_point igamma; - png_byte buf[4]; - - png_debug(1, "in png_handle_gAMA"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length != 4) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 4); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - igamma = png_get_fixed_point(NULL, buf); - - png_colorspace_set_gamma(png_ptr, &png_ptr->colorspace, igamma); - png_colorspace_sync(png_ptr, info_ptr); -} -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED -void /* PRIVATE */ -png_handle_sBIT(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int truelen, i; - png_byte sample_depth; - png_byte buf[4]; - - png_debug(1, "in png_handle_sBIT"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - truelen = 3; - sample_depth = 8; - } - - else - { - truelen = png_ptr->channels; - sample_depth = png_ptr->bit_depth; - } - - if (length != truelen || length > 4) - { - png_chunk_benign_error(png_ptr, "invalid"); - png_crc_finish(png_ptr, length); - return; - } - - buf[0] = buf[1] = buf[2] = buf[3] = sample_depth; - png_crc_read(png_ptr, buf, truelen); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - for (i=0; i sample_depth) - { - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - } - - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - png_ptr->sig_bit.red = buf[0]; - png_ptr->sig_bit.green = buf[1]; - png_ptr->sig_bit.blue = buf[2]; - png_ptr->sig_bit.alpha = buf[3]; - } - - else - { - png_ptr->sig_bit.gray = buf[0]; - png_ptr->sig_bit.red = buf[0]; - png_ptr->sig_bit.green = buf[0]; - png_ptr->sig_bit.blue = buf[0]; - png_ptr->sig_bit.alpha = buf[1]; - } - - png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit)); -} -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED -void /* PRIVATE */ -png_handle_cHRM(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[32]; - png_xy xy; - - png_debug(1, "in png_handle_cHRM"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length != 32) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 32); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - xy.whitex = png_get_fixed_point(NULL, buf); - xy.whitey = png_get_fixed_point(NULL, buf + 4); - xy.redx = png_get_fixed_point(NULL, buf + 8); - xy.redy = png_get_fixed_point(NULL, buf + 12); - xy.greenx = png_get_fixed_point(NULL, buf + 16); - xy.greeny = png_get_fixed_point(NULL, buf + 20); - xy.bluex = png_get_fixed_point(NULL, buf + 24); - xy.bluey = png_get_fixed_point(NULL, buf + 28); - - if (xy.whitex == PNG_FIXED_ERROR || - xy.whitey == PNG_FIXED_ERROR || - xy.redx == PNG_FIXED_ERROR || - xy.redy == PNG_FIXED_ERROR || - xy.greenx == PNG_FIXED_ERROR || - xy.greeny == PNG_FIXED_ERROR || - xy.bluex == PNG_FIXED_ERROR || - xy.bluey == PNG_FIXED_ERROR) - { - png_chunk_benign_error(png_ptr, "invalid values"); - return; - } - - /* If a colorspace error has already been output skip this chunk */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) != 0) - return; - - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_FROM_cHRM) != 0) - { - png_ptr->colorspace.flags |= PNG_COLORSPACE_INVALID; - png_colorspace_sync(png_ptr, info_ptr); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - png_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM; - (void)png_colorspace_set_chromaticities(png_ptr, &png_ptr->colorspace, &xy, - 1/*prefer cHRM values*/); - png_colorspace_sync(png_ptr, info_ptr); -} -#endif - -#ifdef PNG_READ_sRGB_SUPPORTED -void /* PRIVATE */ -png_handle_sRGB(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte intent; - - png_debug(1, "in png_handle_sRGB"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length != 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, &intent, 1); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - /* If a colorspace error has already been output skip this chunk */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) != 0) - return; - - /* Only one sRGB or iCCP chunk is allowed, use the HAVE_INTENT flag to detect - * this. - */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_INTENT) != 0) - { - png_ptr->colorspace.flags |= PNG_COLORSPACE_INVALID; - png_colorspace_sync(png_ptr, info_ptr); - png_chunk_benign_error(png_ptr, "too many profiles"); - return; - } - - (void)png_colorspace_set_sRGB(png_ptr, &png_ptr->colorspace, intent); - png_colorspace_sync(png_ptr, info_ptr); -} -#endif /* READ_sRGB */ - -#ifdef PNG_READ_iCCP_SUPPORTED -void /* PRIVATE */ -png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -/* Note: this does not properly handle profiles that are > 64K under DOS */ -{ - png_const_charp errmsg = NULL; /* error message output, or no error */ - int finished = 0; /* crc checked */ - - png_debug(1, "in png_handle_iCCP"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - /* Consistent with all the above colorspace handling an obviously *invalid* - * chunk is just ignored, so does not invalidate the color space. An - * alternative is to set the 'invalid' flags at the start of this routine - * and only clear them in they were not set before and all the tests pass. - */ - - /* The keyword must be at least one character and there is a - * terminator (0) byte and the compression method byte, and the - * 'zlib' datastream is at least 11 bytes. - */ - if (length < 14) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too short"); - return; - } - - /* If a colorspace error has already been output skip this chunk */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) != 0) - { - png_crc_finish(png_ptr, length); - return; - } - - /* Only one sRGB or iCCP chunk is allowed, use the HAVE_INTENT flag to detect - * this. - */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_INTENT) == 0) - { - uInt read_length, keyword_length; - char keyword[81]; - - /* Find the keyword; the keyword plus separator and compression method - * bytes can be at most 81 characters long. - */ - read_length = 81; /* maximum */ - if (read_length > length) - read_length = (uInt)length; - - png_crc_read(png_ptr, (png_bytep)keyword, read_length); - length -= read_length; - - /* The minimum 'zlib' stream is assumed to be just the 2 byte header, - * 5 bytes minimum 'deflate' stream, and the 4 byte checksum. - */ - if (length < 11) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too short"); - return; - } - - keyword_length = 0; - while (keyword_length < 80 && keyword_length < read_length && - keyword[keyword_length] != 0) - ++keyword_length; - - /* TODO: make the keyword checking common */ - if (keyword_length >= 1 && keyword_length <= 79) - { - /* We only understand '0' compression - deflate - so if we get a - * different value we can't safely decode the chunk. - */ - if (keyword_length+1 < read_length && - keyword[keyword_length+1] == PNG_COMPRESSION_TYPE_BASE) - { - read_length -= keyword_length+2; - - if (png_inflate_claim(png_ptr, png_iCCP) == Z_OK) - { - Byte profile_header[132]={0}; - Byte local_buffer[PNG_INFLATE_BUF_SIZE]; - png_alloc_size_t size = (sizeof profile_header); - - png_ptr->zstream.next_in = (Bytef*)keyword + (keyword_length+2); - png_ptr->zstream.avail_in = read_length; - (void)png_inflate_read(png_ptr, local_buffer, - (sizeof local_buffer), &length, profile_header, &size, - 0/*finish: don't, because the output is too small*/); - - if (size == 0) - { - /* We have the ICC profile header; do the basic header checks. - */ - const png_uint_32 profile_length = - png_get_uint_32(profile_header); - - if (png_icc_check_length(png_ptr, &png_ptr->colorspace, - keyword, profile_length) != 0) - { - /* The length is apparently ok, so we can check the 132 - * byte header. - */ - if (png_icc_check_header(png_ptr, &png_ptr->colorspace, - keyword, profile_length, profile_header, - png_ptr->color_type) != 0) - { - /* Now read the tag table; a variable size buffer is - * needed at this point, allocate one for the whole - * profile. The header check has already validated - * that none of this stuff will overflow. - */ - const png_uint_32 tag_count = png_get_uint_32( - profile_header+128); - png_bytep profile = png_read_buffer(png_ptr, - profile_length, 2/*silent*/); - - if (profile != NULL) - { - memcpy(profile, profile_header, - (sizeof profile_header)); - - size = 12 * tag_count; - - (void)png_inflate_read(png_ptr, local_buffer, - (sizeof local_buffer), &length, - profile + (sizeof profile_header), &size, 0); - - /* Still expect a buffer error because we expect - * there to be some tag data! - */ - if (size == 0) - { - if (png_icc_check_tag_table(png_ptr, - &png_ptr->colorspace, keyword, profile_length, - profile) != 0) - { - /* The profile has been validated for basic - * security issues, so read the whole thing in. - */ - size = profile_length - (sizeof profile_header) - - 12 * tag_count; - - (void)png_inflate_read(png_ptr, local_buffer, - (sizeof local_buffer), &length, - profile + (sizeof profile_header) + - 12 * tag_count, &size, 1/*finish*/); - - if (length > 0 && !(png_ptr->flags & - PNG_FLAG_BENIGN_ERRORS_WARN)) - errmsg = "extra compressed data"; - - /* But otherwise allow extra data: */ - else if (size == 0) - { - if (length > 0) - { - /* This can be handled completely, so - * keep going. - */ - png_chunk_warning(png_ptr, - "extra compressed data"); - } - - png_crc_finish(png_ptr, length); - finished = 1; - -# if defined(PNG_sRGB_SUPPORTED) && PNG_sRGB_PROFILE_CHECKS >= 0 - /* Check for a match against sRGB */ - png_icc_set_sRGB(png_ptr, - &png_ptr->colorspace, profile, - png_ptr->zstream.adler); -# endif - - /* Steal the profile for info_ptr. */ - if (info_ptr != NULL) - { - png_free_data(png_ptr, info_ptr, - PNG_FREE_ICCP, 0); - - info_ptr->iccp_name = png_voidcast(char*, - png_malloc_base(png_ptr, - keyword_length+1)); - if (info_ptr->iccp_name != NULL) - { - memcpy(info_ptr->iccp_name, keyword, - keyword_length+1); - info_ptr->iccp_proflen = - profile_length; - info_ptr->iccp_profile = profile; - png_ptr->read_buffer = NULL; /*steal*/ - info_ptr->free_me |= PNG_FREE_ICCP; - info_ptr->valid |= PNG_INFO_iCCP; - } - - else - { - png_ptr->colorspace.flags |= - PNG_COLORSPACE_INVALID; - errmsg = "out of memory"; - } - } - - /* else the profile remains in the read - * buffer which gets reused for subsequent - * chunks. - */ - - if (info_ptr != NULL) - png_colorspace_sync(png_ptr, info_ptr); - - if (errmsg == NULL) - { - png_ptr->zowner = 0; - return; - } - } - if (errmsg == NULL) - errmsg = png_ptr->zstream.msg; - } - /* else png_icc_check_tag_table output an error */ - } - else /* profile truncated */ - errmsg = png_ptr->zstream.msg; - } - - else - errmsg = "out of memory"; - } - - /* else png_icc_check_header output an error */ - } - - /* else png_icc_check_length output an error */ - } - - else /* profile truncated */ - errmsg = png_ptr->zstream.msg; - - /* Release the stream */ - png_ptr->zowner = 0; - } - - else /* png_inflate_claim failed */ - errmsg = png_ptr->zstream.msg; - } - - else - errmsg = "bad compression method"; /* or missing */ - } - - else - errmsg = "bad keyword"; - } - - else - errmsg = "too many profiles"; - - /* Failure: the reason is in 'errmsg' */ - if (finished == 0) - png_crc_finish(png_ptr, length); - - png_ptr->colorspace.flags |= PNG_COLORSPACE_INVALID; - png_colorspace_sync(png_ptr, info_ptr); - if (errmsg != NULL) /* else already output */ - png_chunk_benign_error(png_ptr, errmsg); -} -#endif /* READ_iCCP */ - -#ifdef PNG_READ_sPLT_SUPPORTED -void /* PRIVATE */ -png_handle_sPLT(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -/* Note: this does not properly handle chunks that are > 64K under DOS */ -{ - png_bytep entry_start, buffer; - png_sPLT_t new_palette; - png_sPLT_entryp pp; - png_uint_32 data_length; - int entry_size, i; - png_uint_32 skip = 0; - png_uint_32 dl; - png_size_t max_dl; - - png_debug(1, "in png_handle_sPLT"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_warning(png_ptr, "No space in chunk cache for sPLT"); - png_crc_finish(png_ptr, length); - return; - } - } -#endif - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - -#ifdef PNG_MAX_MALLOC_64K - if (length > 65535U) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too large to fit in memory"); - return; - } -#endif - - buffer = png_read_buffer(png_ptr, length+1, 2/*silent*/); - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - - /* WARNING: this may break if size_t is less than 32 bits; it is assumed - * that the PNG_MAX_MALLOC_64K test is enabled in this case, but this is a - * potential breakage point if the types in pngconf.h aren't exactly right. - */ - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, skip) != 0) - return; - - buffer[length] = 0; - - for (entry_start = buffer; *entry_start; entry_start++) - /* Empty loop to find end of name */ ; - - ++entry_start; - - /* A sample depth should follow the separator, and we should be on it */ - if (length < 2U || entry_start > buffer + (length - 2U)) - { - png_warning(png_ptr, "malformed sPLT chunk"); - return; - } - - new_palette.depth = *entry_start++; - entry_size = (new_palette.depth == 8 ? 6 : 10); - /* This must fit in a png_uint_32 because it is derived from the original - * chunk data length. - */ - data_length = length - (png_uint_32)(entry_start - buffer); - - /* Integrity-check the data length */ - if ((data_length % (unsigned int)entry_size) != 0) - { - png_warning(png_ptr, "sPLT chunk has bad length"); - return; - } - - dl = (png_uint_32)(data_length / (unsigned int)entry_size); - max_dl = PNG_SIZE_MAX / (sizeof (png_sPLT_entry)); - - if (dl > max_dl) - { - png_warning(png_ptr, "sPLT chunk too long"); - return; - } - - new_palette.nentries = (png_int_32)(data_length / (unsigned int)entry_size); - - new_palette.entries = (png_sPLT_entryp)png_malloc_warn(png_ptr, - (png_alloc_size_t) new_palette.nentries * (sizeof (png_sPLT_entry))); - - if (new_palette.entries == NULL) - { - png_warning(png_ptr, "sPLT chunk requires too much memory"); - return; - } - -#ifdef PNG_POINTER_INDEXING_SUPPORTED - for (i = 0; i < new_palette.nentries; i++) - { - pp = new_palette.entries + i; - - if (new_palette.depth == 8) - { - pp->red = *entry_start++; - pp->green = *entry_start++; - pp->blue = *entry_start++; - pp->alpha = *entry_start++; - } - - else - { - pp->red = png_get_uint_16(entry_start); entry_start += 2; - pp->green = png_get_uint_16(entry_start); entry_start += 2; - pp->blue = png_get_uint_16(entry_start); entry_start += 2; - pp->alpha = png_get_uint_16(entry_start); entry_start += 2; - } - - pp->frequency = png_get_uint_16(entry_start); entry_start += 2; - } -#else - pp = new_palette.entries; - - for (i = 0; i < new_palette.nentries; i++) - { - - if (new_palette.depth == 8) - { - pp[i].red = *entry_start++; - pp[i].green = *entry_start++; - pp[i].blue = *entry_start++; - pp[i].alpha = *entry_start++; - } - - else - { - pp[i].red = png_get_uint_16(entry_start); entry_start += 2; - pp[i].green = png_get_uint_16(entry_start); entry_start += 2; - pp[i].blue = png_get_uint_16(entry_start); entry_start += 2; - pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2; - } - - pp[i].frequency = png_get_uint_16(entry_start); entry_start += 2; - } -#endif - - /* Discard all chunk data except the name and stash that */ - new_palette.name = (png_charp)buffer; - - png_set_sPLT(png_ptr, info_ptr, &new_palette, 1); - - png_free(png_ptr, new_palette.entries); -} -#endif /* READ_sPLT */ - -#ifdef PNG_READ_tRNS_SUPPORTED -void /* PRIVATE */ -png_handle_tRNS(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte readbuf[PNG_MAX_PALETTE_LENGTH]; - - png_debug(1, "in png_handle_tRNS"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - png_byte buf[2]; - - if (length != 2) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 2); - png_ptr->num_trans = 1; - png_ptr->trans_color.gray = png_get_uint_16(buf); - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) - { - png_byte buf[6]; - - if (length != 6) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, length); - png_ptr->num_trans = 1; - png_ptr->trans_color.red = png_get_uint_16(buf); - png_ptr->trans_color.green = png_get_uint_16(buf + 2); - png_ptr->trans_color.blue = png_get_uint_16(buf + 4); - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if ((png_ptr->mode & PNG_HAVE_PLTE) == 0) - { - /* TODO: is this actually an error in the ISO spec? */ - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length > (unsigned int) png_ptr->num_palette || - length > (unsigned int) PNG_MAX_PALETTE_LENGTH || - length == 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, readbuf, length); - png_ptr->num_trans = (png_uint_16)length; - } - - else - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid with alpha channel"); - return; - } - - if (png_crc_finish(png_ptr, 0) != 0) - { - png_ptr->num_trans = 0; - return; - } - - /* TODO: this is a horrible side effect in the palette case because the - * png_struct ends up with a pointer to the tRNS buffer owned by the - * png_info. Fix this. - */ - png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans, - &(png_ptr->trans_color)); -} -#endif - -#ifdef PNG_READ_bKGD_SUPPORTED -void /* PRIVATE */ -png_handle_bKGD(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int truelen; - png_byte buf[6]; - png_color_16 background; - - png_debug(1, "in png_handle_bKGD"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0 || - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - (png_ptr->mode & PNG_HAVE_PLTE) == 0)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - truelen = 1; - - else if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - truelen = 6; - - else - truelen = 2; - - if (length != truelen) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, truelen); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - /* We convert the index value into RGB components so that we can allow - * arbitrary RGB values for background when we have transparency, and - * so it is easy to determine the RGB values of the background color - * from the info_ptr struct. - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - background.index = buf[0]; - - if (info_ptr != NULL && info_ptr->num_palette != 0) - { - if (buf[0] >= info_ptr->num_palette) - { - png_chunk_benign_error(png_ptr, "invalid index"); - return; - } - - background.red = (png_uint_16)png_ptr->palette[buf[0]].red; - background.green = (png_uint_16)png_ptr->palette[buf[0]].green; - background.blue = (png_uint_16)png_ptr->palette[buf[0]].blue; - } - - else - background.red = background.green = background.blue = 0; - - background.gray = 0; - } - - else if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) /* GRAY */ - { - background.index = 0; - background.red = - background.green = - background.blue = - background.gray = png_get_uint_16(buf); - } - - else - { - background.index = 0; - background.red = png_get_uint_16(buf); - background.green = png_get_uint_16(buf + 2); - background.blue = png_get_uint_16(buf + 4); - background.gray = 0; - } - - png_set_bKGD(png_ptr, info_ptr, &background); -} -#endif - -#ifdef PNG_READ_eXIf_SUPPORTED -void /* PRIVATE */ -png_handle_eXIf(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int i; - - png_debug(1, "in png_handle_eXIf"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - if (length < 2) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too short"); - return; - } - - else if (info_ptr == NULL || (info_ptr->valid & PNG_INFO_eXIf) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - info_ptr->free_me |= PNG_FREE_EXIF; - - info_ptr->eXIf_buf = png_voidcast(png_bytep, - png_malloc_warn(png_ptr, length)); - - if (info_ptr->eXIf_buf == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - for (i = 0; i < length; i++) - { - png_byte buf[1]; - png_crc_read(png_ptr, buf, 1); - info_ptr->eXIf_buf[i] = buf[0]; - if (i == 1 && buf[0] != 'M' && buf[0] != 'I' - && info_ptr->eXIf_buf[0] != buf[0]) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "incorrect byte-order specifier"); - png_free(png_ptr, info_ptr->eXIf_buf); - info_ptr->eXIf_buf = NULL; - return; - } - } - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - png_set_eXIf_1(png_ptr, info_ptr, length, info_ptr->eXIf_buf); - - png_free(png_ptr, info_ptr->eXIf_buf); - info_ptr->eXIf_buf = NULL; -} -#endif - -#ifdef PNG_READ_hIST_SUPPORTED -void /* PRIVATE */ -png_handle_hIST(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int num, i; - png_uint_16 readbuf[PNG_MAX_PALETTE_LENGTH]; - - png_debug(1, "in png_handle_hIST"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0 || - (png_ptr->mode & PNG_HAVE_PLTE) == 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - num = length / 2 ; - - if (num != (unsigned int) png_ptr->num_palette || - num > (unsigned int) PNG_MAX_PALETTE_LENGTH) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - for (i = 0; i < num; i++) - { - png_byte buf[2]; - - png_crc_read(png_ptr, buf, 2); - readbuf[i] = png_get_uint_16(buf); - } - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - png_set_hIST(png_ptr, info_ptr, readbuf); -} -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED -void /* PRIVATE */ -png_handle_pHYs(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[9]; - png_uint_32 res_x, res_y; - int unit_type; - - png_debug(1, "in png_handle_pHYs"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (length != 9) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 9); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - res_x = png_get_uint_32(buf); - res_y = png_get_uint_32(buf + 4); - unit_type = buf[8]; - png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type); -} -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED -void /* PRIVATE */ -png_handle_oFFs(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[9]; - png_int_32 offset_x, offset_y; - int unit_type; - - png_debug(1, "in png_handle_oFFs"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (length != 9) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 9); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - offset_x = png_get_int_32(buf); - offset_y = png_get_int_32(buf + 4); - unit_type = buf[8]; - png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type); -} -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED -/* Read the pCAL chunk (described in the PNG Extensions document) */ -void /* PRIVATE */ -png_handle_pCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_int_32 X0, X1; - png_byte type, nparams; - png_bytep buffer, buf, units, endptr; - png_charpp params; - int i; - - png_debug(1, "in png_handle_pCAL"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - png_debug1(2, "Allocating and reading pCAL chunk data (%u bytes)", - length + 1); - - buffer = png_read_buffer(png_ptr, length+1, 2/*silent*/); - - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - buffer[length] = 0; /* Null terminate the last string */ - - png_debug(3, "Finding end of pCAL purpose string"); - for (buf = buffer; *buf; buf++) - /* Empty loop */ ; - - endptr = buffer + length; - - /* We need to have at least 12 bytes after the purpose string - * in order to get the parameter information. - */ - if (endptr - buf <= 12) - { - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_debug(3, "Reading pCAL X0, X1, type, nparams, and units"); - X0 = png_get_int_32((png_bytep)buf+1); - X1 = png_get_int_32((png_bytep)buf+5); - type = buf[9]; - nparams = buf[10]; - units = buf + 11; - - png_debug(3, "Checking pCAL equation type and number of parameters"); - /* Check that we have the right number of parameters for known - * equation types. - */ - if ((type == PNG_EQUATION_LINEAR && nparams != 2) || - (type == PNG_EQUATION_BASE_E && nparams != 3) || - (type == PNG_EQUATION_ARBITRARY && nparams != 3) || - (type == PNG_EQUATION_HYPERBOLIC && nparams != 4)) - { - png_chunk_benign_error(png_ptr, "invalid parameter count"); - return; - } - - else if (type >= PNG_EQUATION_LAST) - { - png_chunk_benign_error(png_ptr, "unrecognized equation type"); - } - - for (buf = units; *buf; buf++) - /* Empty loop to move past the units string. */ ; - - png_debug(3, "Allocating pCAL parameters array"); - - params = png_voidcast(png_charpp, png_malloc_warn(png_ptr, - nparams * (sizeof (png_charp)))); - - if (params == NULL) - { - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - /* Get pointers to the start of each parameter string. */ - for (i = 0; i < nparams; i++) - { - buf++; /* Skip the null string terminator from previous parameter. */ - - png_debug1(3, "Reading pCAL parameter %d", i); - - for (params[i] = (png_charp)buf; buf <= endptr && *buf != 0; buf++) - /* Empty loop to move past each parameter string */ ; - - /* Make sure we haven't run out of data yet */ - if (buf > endptr) - { - png_free(png_ptr, params); - png_chunk_benign_error(png_ptr, "invalid data"); - return; - } - } - - png_set_pCAL(png_ptr, info_ptr, (png_charp)buffer, X0, X1, type, nparams, - (png_charp)units, params); - - png_free(png_ptr, params); -} -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED -/* Read the sCAL chunk */ -void /* PRIVATE */ -png_handle_sCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_bytep buffer; - png_size_t i; - int state; - - png_debug(1, "in png_handle_sCAL"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sCAL) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - /* Need unit type, width, \0, height: minimum 4 bytes */ - else if (length < 4) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_debug1(2, "Allocating and reading sCAL chunk data (%u bytes)", - length + 1); - - buffer = png_read_buffer(png_ptr, length+1, 2/*silent*/); - - if (buffer == NULL) - { - png_chunk_benign_error(png_ptr, "out of memory"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buffer, length); - buffer[length] = 0; /* Null terminate the last string */ - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - /* Validate the unit. */ - if (buffer[0] != 1 && buffer[0] != 2) - { - png_chunk_benign_error(png_ptr, "invalid unit"); - return; - } - - /* Validate the ASCII numbers, need two ASCII numbers separated by - * a '\0' and they need to fit exactly in the chunk data. - */ - i = 1; - state = 0; - - if (png_check_fp_number((png_const_charp)buffer, length, &state, &i) == 0 || - i >= length || buffer[i++] != 0) - png_chunk_benign_error(png_ptr, "bad width format"); - - else if (PNG_FP_IS_POSITIVE(state) == 0) - png_chunk_benign_error(png_ptr, "non-positive width"); - - else - { - png_size_t heighti = i; - - state = 0; - if (png_check_fp_number((png_const_charp)buffer, length, - &state, &i) == 0 || i != length) - png_chunk_benign_error(png_ptr, "bad height format"); - - else if (PNG_FP_IS_POSITIVE(state) == 0) - png_chunk_benign_error(png_ptr, "non-positive height"); - - else - /* This is the (only) success case. */ - png_set_sCAL_s(png_ptr, info_ptr, buffer[0], - (png_charp)buffer+1, (png_charp)buffer+heighti); - } -} -#endif - -#ifdef PNG_READ_tIME_SUPPORTED -void /* PRIVATE */ -png_handle_tIME(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[7]; - png_time mod_time; - - png_debug(1, "in png_handle_tIME"); - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME) != 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - - if (length != 7) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 7); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - mod_time.second = buf[6]; - mod_time.minute = buf[5]; - mod_time.hour = buf[4]; - mod_time.day = buf[3]; - mod_time.month = buf[2]; - mod_time.year = png_get_uint_16(buf); - - png_set_tIME(png_ptr, info_ptr, &mod_time); -} -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED -/* Note: this does not properly handle chunks that are > 64K under DOS */ -void /* PRIVATE */ -png_handle_tEXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_text text_info; - png_bytep buffer; - png_charp key; - png_charp text; - png_uint_32 skip = 0; - - png_debug(1, "in png_handle_tEXt"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - return; - } - } -#endif - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - -#ifdef PNG_MAX_MALLOC_64K - if (length > 65535U) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too large to fit in memory"); - return; - } -#endif - - buffer = png_read_buffer(png_ptr, length+1, 1/*warn*/); - - if (buffer == NULL) - { - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, skip) != 0) - return; - - key = (png_charp)buffer; - key[length] = 0; - - for (text = key; *text; text++) - /* Empty loop to find end of key */ ; - - if (text != key + length) - text++; - - text_info.compression = PNG_TEXT_COMPRESSION_NONE; - text_info.key = key; - text_info.lang = NULL; - text_info.lang_key = NULL; - text_info.itxt_length = 0; - text_info.text = text; - text_info.text_length = strlen(text); - - if (png_set_text_2(png_ptr, info_ptr, &text_info, 1) != 0) - png_warning(png_ptr, "Insufficient memory to process text chunk"); -} -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED -/* Note: this does not correctly handle chunks that are > 64K under DOS */ -void /* PRIVATE */ -png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_const_charp errmsg = NULL; - png_bytep buffer; - png_uint_32 keyword_length; - - png_debug(1, "in png_handle_zTXt"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - return; - } - } -#endif - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - - /* Note, "length" is sufficient here; we won't be adding - * a null terminator later. - */ - buffer = png_read_buffer(png_ptr, length, 2/*silent*/); - - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - /* TODO: also check that the keyword contents match the spec! */ - for (keyword_length = 0; - keyword_length < length && buffer[keyword_length] != 0; - ++keyword_length) - /* Empty loop to find end of name */ ; - - if (keyword_length > 79 || keyword_length < 1) - errmsg = "bad keyword"; - - /* zTXt must have some LZ data after the keyword, although it may expand to - * zero bytes; we need a '\0' at the end of the keyword, the compression type - * then the LZ data: - */ - else if (keyword_length + 3 > length) - errmsg = "truncated"; - - else if (buffer[keyword_length+1] != PNG_COMPRESSION_TYPE_BASE) - errmsg = "unknown compression type"; - - else - { - png_alloc_size_t uncompressed_length = PNG_SIZE_MAX; - - /* TODO: at present png_decompress_chunk imposes a single application - * level memory limit, this should be split to different values for iCCP - * and text chunks. - */ - if (png_decompress_chunk(png_ptr, length, keyword_length+2, - &uncompressed_length, 1/*terminate*/) == Z_STREAM_END) - { - png_text text; - - if (png_ptr->read_buffer == NULL) - errmsg="Read failure in png_handle_zTXt"; - else - { - /* It worked; png_ptr->read_buffer now looks like a tEXt chunk - * except for the extra compression type byte and the fact that - * it isn't necessarily '\0' terminated. - */ - buffer = png_ptr->read_buffer; - buffer[uncompressed_length+(keyword_length+2)] = 0; - - text.compression = PNG_TEXT_COMPRESSION_zTXt; - text.key = (png_charp)buffer; - text.text = (png_charp)(buffer + keyword_length+2); - text.text_length = uncompressed_length; - text.itxt_length = 0; - text.lang = NULL; - text.lang_key = NULL; - - if (png_set_text_2(png_ptr, info_ptr, &text, 1) != 0) - errmsg = "insufficient memory"; - } - } - - else - errmsg = png_ptr->zstream.msg; - } - - if (errmsg != NULL) - png_chunk_benign_error(png_ptr, errmsg); -} -#endif - -#ifdef PNG_READ_iTXt_SUPPORTED -/* Note: this does not correctly handle chunks that are > 64K under DOS */ -void /* PRIVATE */ -png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_const_charp errmsg = NULL; - png_bytep buffer; - png_uint_32 prefix_length; - - png_debug(1, "in png_handle_iTXt"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - return; - } - } -#endif - - if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_chunk_error(png_ptr, "missing IHDR"); - - if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - png_ptr->mode |= PNG_AFTER_IDAT; - - buffer = png_read_buffer(png_ptr, length+1, 1/*warn*/); - - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, 0) != 0) - return; - - /* First the keyword. */ - for (prefix_length=0; - prefix_length < length && buffer[prefix_length] != 0; - ++prefix_length) - /* Empty loop */ ; - - /* Perform a basic check on the keyword length here. */ - if (prefix_length > 79 || prefix_length < 1) - errmsg = "bad keyword"; - - /* Expect keyword, compression flag, compression type, language, translated - * keyword (both may be empty but are 0 terminated) then the text, which may - * be empty. - */ - else if (prefix_length + 5 > length) - errmsg = "truncated"; - - else if (buffer[prefix_length+1] == 0 || - (buffer[prefix_length+1] == 1 && - buffer[prefix_length+2] == PNG_COMPRESSION_TYPE_BASE)) - { - int compressed = buffer[prefix_length+1] != 0; - png_uint_32 language_offset, translated_keyword_offset; - png_alloc_size_t uncompressed_length = 0; - - /* Now the language tag */ - prefix_length += 3; - language_offset = prefix_length; - - for (; prefix_length < length && buffer[prefix_length] != 0; - ++prefix_length) - /* Empty loop */ ; - - /* WARNING: the length may be invalid here, this is checked below. */ - translated_keyword_offset = ++prefix_length; - - for (; prefix_length < length && buffer[prefix_length] != 0; - ++prefix_length) - /* Empty loop */ ; - - /* prefix_length should now be at the trailing '\0' of the translated - * keyword, but it may already be over the end. None of this arithmetic - * can overflow because chunks are at most 2^31 bytes long, but on 16-bit - * systems the available allocation may overflow. - */ - ++prefix_length; - - if (compressed == 0 && prefix_length <= length) - uncompressed_length = length - prefix_length; - - else if (compressed != 0 && prefix_length < length) - { - uncompressed_length = PNG_SIZE_MAX; - - /* TODO: at present png_decompress_chunk imposes a single application - * level memory limit, this should be split to different values for - * iCCP and text chunks. - */ - if (png_decompress_chunk(png_ptr, length, prefix_length, - &uncompressed_length, 1/*terminate*/) == Z_STREAM_END) - buffer = png_ptr->read_buffer; - - else - errmsg = png_ptr->zstream.msg; - } - - else - errmsg = "truncated"; - - if (errmsg == NULL) - { - png_text text; - - buffer[uncompressed_length+prefix_length] = 0; - - if (compressed == 0) - text.compression = PNG_ITXT_COMPRESSION_NONE; - - else - text.compression = PNG_ITXT_COMPRESSION_zTXt; - - text.key = (png_charp)buffer; - text.lang = (png_charp)buffer + language_offset; - text.lang_key = (png_charp)buffer + translated_keyword_offset; - text.text = (png_charp)buffer + prefix_length; - text.text_length = 0; - text.itxt_length = uncompressed_length; - - if (png_set_text_2(png_ptr, info_ptr, &text, 1) != 0) - errmsg = "insufficient memory"; - } - } - - else - errmsg = "bad compression info"; - - if (errmsg != NULL) - png_chunk_benign_error(png_ptr, errmsg); -} -#endif - -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -/* Utility function for png_handle_unknown; set up png_ptr::unknown_chunk */ -static int -png_cache_unknown_chunk(png_structrp png_ptr, png_uint_32 length) -{ - png_alloc_size_t limit = PNG_SIZE_MAX; - - if (png_ptr->unknown_chunk.data != NULL) - { - png_free(png_ptr, png_ptr->unknown_chunk.data); - png_ptr->unknown_chunk.data = NULL; - } - -# ifdef PNG_SET_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_malloc_max > 0 && - png_ptr->user_chunk_malloc_max < limit) - limit = png_ptr->user_chunk_malloc_max; - -# elif PNG_USER_CHUNK_MALLOC_MAX > 0 - if (PNG_USER_CHUNK_MALLOC_MAX < limit) - limit = PNG_USER_CHUNK_MALLOC_MAX; -# endif - - if (length <= limit) - { - PNG_CSTRING_FROM_CHUNK(png_ptr->unknown_chunk.name, png_ptr->chunk_name); - /* The following is safe because of the PNG_SIZE_MAX init above */ - png_ptr->unknown_chunk.size = (png_size_t)length/*SAFE*/; - /* 'mode' is a flag array, only the bottom four bits matter here */ - png_ptr->unknown_chunk.location = (png_byte)png_ptr->mode/*SAFE*/; - - if (length == 0) - png_ptr->unknown_chunk.data = NULL; - - else - { - /* Do a 'warn' here - it is handled below. */ - png_ptr->unknown_chunk.data = png_voidcast(png_bytep, - png_malloc_warn(png_ptr, length)); - } - } - - if (png_ptr->unknown_chunk.data == NULL && length > 0) - { - /* This is benign because we clean up correctly */ - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "unknown chunk exceeds memory limits"); - return 0; - } - - else - { - if (length > 0) - png_crc_read(png_ptr, png_ptr->unknown_chunk.data, length); - png_crc_finish(png_ptr, 0); - return 1; - } -} -#endif /* READ_UNKNOWN_CHUNKS */ - -/* Handle an unknown, or known but disabled, chunk */ -void /* PRIVATE */ -png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr, - png_uint_32 length, int keep) -{ - int handled = 0; /* the chunk was handled */ - - png_debug(1, "in png_handle_unknown"); - -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED - /* NOTE: this code is based on the code in libpng-1.4.12 except for fixing - * the bug which meant that setting a non-default behavior for a specific - * chunk would be ignored (the default was always used unless a user - * callback was installed). - * - * 'keep' is the value from the png_chunk_unknown_handling, the setting for - * this specific chunk_name, if PNG_HANDLE_AS_UNKNOWN_SUPPORTED, if not it - * will always be PNG_HANDLE_CHUNK_AS_DEFAULT and it needs to be set here. - * This is just an optimization to avoid multiple calls to the lookup - * function. - */ -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - keep = png_chunk_unknown_handling(png_ptr, png_ptr->chunk_name); -# endif -# endif - - /* One of the following methods will read the chunk or skip it (at least one - * of these is always defined because this is the only way to switch on - * PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) - */ -# ifdef PNG_READ_USER_CHUNKS_SUPPORTED - /* The user callback takes precedence over the chunk keep value, but the - * keep value is still required to validate a save of a critical chunk. - */ - if (png_ptr->read_user_chunk_fn != NULL) - { - if (png_cache_unknown_chunk(png_ptr, length) != 0) - { - /* Callback to user unknown chunk handler */ - int ret = (*(png_ptr->read_user_chunk_fn))(png_ptr, - &png_ptr->unknown_chunk); - - /* ret is: - * negative: An error occurred; png_chunk_error will be called. - * zero: The chunk was not handled, the chunk will be discarded - * unless png_set_keep_unknown_chunks has been used to set - * a 'keep' behavior for this particular chunk, in which - * case that will be used. A critical chunk will cause an - * error at this point unless it is to be saved. - * positive: The chunk was handled, libpng will ignore/discard it. - */ - if (ret < 0) - png_chunk_error(png_ptr, "error in user chunk"); - - else if (ret == 0) - { - /* If the keep value is 'default' or 'never' override it, but - * still error out on critical chunks unless the keep value is - * 'always' While this is weird it is the behavior in 1.4.12. - * A possible improvement would be to obey the value set for the - * chunk, but this would be an API change that would probably - * damage some applications. - * - * The png_app_warning below catches the case that matters, where - * the application has not set specific save or ignore for this - * chunk or global save or ignore. - */ - if (keep < PNG_HANDLE_CHUNK_IF_SAFE) - { -# ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - if (png_ptr->unknown_default < PNG_HANDLE_CHUNK_IF_SAFE) - { - png_chunk_warning(png_ptr, "Saving unknown chunk:"); - png_app_warning(png_ptr, - "forcing save of an unhandled chunk;" - " please call png_set_keep_unknown_chunks"); - /* with keep = PNG_HANDLE_CHUNK_IF_SAFE */ - } -# endif - keep = PNG_HANDLE_CHUNK_IF_SAFE; - } - } - - else /* chunk was handled */ - { - handled = 1; - /* Critical chunks can be safely discarded at this point. */ - keep = PNG_HANDLE_CHUNK_NEVER; - } - } - - else - keep = PNG_HANDLE_CHUNK_NEVER; /* insufficient memory */ - } - - else - /* Use the SAVE_UNKNOWN_CHUNKS code or skip the chunk */ -# endif /* READ_USER_CHUNKS */ - -# ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - { - /* keep is currently just the per-chunk setting, if there was no - * setting change it to the global default now (not that this may - * still be AS_DEFAULT) then obtain the cache of the chunk if required, - * if not simply skip the chunk. - */ - if (keep == PNG_HANDLE_CHUNK_AS_DEFAULT) - keep = png_ptr->unknown_default; - - if (keep == PNG_HANDLE_CHUNK_ALWAYS || - (keep == PNG_HANDLE_CHUNK_IF_SAFE && - PNG_CHUNK_ANCILLARY(png_ptr->chunk_name))) - { - if (png_cache_unknown_chunk(png_ptr, length) == 0) - keep = PNG_HANDLE_CHUNK_NEVER; - } - - else - png_crc_finish(png_ptr, length); - } -# else -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED -# error no method to support READ_UNKNOWN_CHUNKS -# endif - - { - /* If here there is no read callback pointer set and no support is - * compiled in to just save the unknown chunks, so simply skip this - * chunk. If 'keep' is something other than AS_DEFAULT or NEVER then - * the app has erroneously asked for unknown chunk saving when there - * is no support. - */ - if (keep > PNG_HANDLE_CHUNK_NEVER) - png_app_error(png_ptr, "no unknown chunk support available"); - - png_crc_finish(png_ptr, length); - } -# endif - -# ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED - /* Now store the chunk in the chunk list if appropriate, and if the limits - * permit it. - */ - if (keep == PNG_HANDLE_CHUNK_ALWAYS || - (keep == PNG_HANDLE_CHUNK_IF_SAFE && - PNG_CHUNK_ANCILLARY(png_ptr->chunk_name))) - { -# ifdef PNG_USER_LIMITS_SUPPORTED - switch (png_ptr->user_chunk_cache_max) - { - case 2: - png_ptr->user_chunk_cache_max = 1; - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - /* FALLTHROUGH */ - case 1: - /* NOTE: prior to 1.6.0 this case resulted in an unknown critical - * chunk being skipped, now there will be a hard error below. - */ - break; - - default: /* not at limit */ - --(png_ptr->user_chunk_cache_max); - /* FALLTHROUGH */ - case 0: /* no limit */ -# endif /* USER_LIMITS */ - /* Here when the limit isn't reached or when limits are compiled - * out; store the chunk. - */ - png_set_unknown_chunks(png_ptr, info_ptr, - &png_ptr->unknown_chunk, 1); - handled = 1; -# ifdef PNG_USER_LIMITS_SUPPORTED - break; - } -# endif - } -# else /* no store support: the chunk must be handled by the user callback */ - PNG_UNUSED(info_ptr) -# endif - - /* Regardless of the error handling below the cached data (if any) can be - * freed now. Notice that the data is not freed if there is a png_error, but - * it will be freed by destroy_read_struct. - */ - if (png_ptr->unknown_chunk.data != NULL) - png_free(png_ptr, png_ptr->unknown_chunk.data); - png_ptr->unknown_chunk.data = NULL; - -#else /* !PNG_READ_UNKNOWN_CHUNKS_SUPPORTED */ - /* There is no support to read an unknown chunk, so just skip it. */ - png_crc_finish(png_ptr, length); - PNG_UNUSED(info_ptr) - PNG_UNUSED(keep) -#endif /* !READ_UNKNOWN_CHUNKS */ - - /* Check for unhandled critical chunks */ - if (handled == 0 && PNG_CHUNK_CRITICAL(png_ptr->chunk_name)) - png_chunk_error(png_ptr, "unhandled critical chunk"); -} - -/* This function is called to verify that a chunk name is valid. - * This function can't have the "critical chunk check" incorporated - * into it, since in the future we will need to be able to call user - * functions to handle unknown critical chunks after we check that - * the chunk name itself is valid. - */ - -/* Bit hacking: the test for an invalid byte in the 4 byte chunk name is: - * - * ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97)) - */ - -void /* PRIVATE */ -png_check_chunk_name(png_const_structrp png_ptr, const png_uint_32 chunk_name) -{ - int i; - png_uint_32 cn=chunk_name; - - png_debug(1, "in png_check_chunk_name"); - - for (i=1; i<=4; ++i) - { - int c = cn & 0xff; - - if (c < 65 || c > 122 || (c > 90 && c < 97)) - png_chunk_error(png_ptr, "invalid chunk type"); - - cn >>= 8; - } -} - -void /* PRIVATE */ -png_check_chunk_length(png_const_structrp png_ptr, const png_uint_32 length) -{ - png_alloc_size_t limit = PNG_UINT_31_MAX; - -# ifdef PNG_SET_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_malloc_max > 0 && - png_ptr->user_chunk_malloc_max < limit) - limit = png_ptr->user_chunk_malloc_max; -# elif PNG_USER_CHUNK_MALLOC_MAX > 0 - if (PNG_USER_CHUNK_MALLOC_MAX < limit) - limit = PNG_USER_CHUNK_MALLOC_MAX; -# endif - if (png_ptr->chunk_name == png_IDAT) - { - png_alloc_size_t idat_limit = PNG_UINT_31_MAX; - size_t row_factor = - (png_ptr->width * png_ptr->channels * (png_ptr->bit_depth > 8? 2: 1) - + 1 + (png_ptr->interlaced? 6: 0)); - if (png_ptr->height > PNG_UINT_32_MAX/row_factor) - idat_limit=PNG_UINT_31_MAX; - else - idat_limit = png_ptr->height * row_factor; - row_factor = row_factor > 32566? 32566 : row_factor; - idat_limit += 6 + 5*(idat_limit/row_factor+1); /* zlib+deflate overhead */ - idat_limit=idat_limit < PNG_UINT_31_MAX? idat_limit : PNG_UINT_31_MAX; - limit = limit < idat_limit? idat_limit : limit; - } - - if (length > limit) - { - png_debug2(0," length = %lu, limit = %lu", - (unsigned long)length,(unsigned long)limit); - png_chunk_error(png_ptr, "chunk data is too large"); - } -} - -/* Combines the row recently read in with the existing pixels in the row. This - * routine takes care of alpha and transparency if requested. This routine also - * handles the two methods of progressive display of interlaced images, - * depending on the 'display' value; if 'display' is true then the whole row - * (dp) is filled from the start by replicating the available pixels. If - * 'display' is false only those pixels present in the pass are filled in. - */ -void /* PRIVATE */ -png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display) -{ - unsigned int pixel_depth = png_ptr->transformed_pixel_depth; - png_const_bytep sp = png_ptr->row_buf + 1; - png_alloc_size_t row_width = png_ptr->width; - unsigned int pass = png_ptr->pass; - png_bytep end_ptr = 0; - png_byte end_byte = 0; - unsigned int end_mask; - - png_debug(1, "in png_combine_row"); - - /* Added in 1.5.6: it should not be possible to enter this routine until at - * least one row has been read from the PNG data and transformed. - */ - if (pixel_depth == 0) - png_error(png_ptr, "internal row logic error"); - - /* Added in 1.5.4: the pixel depth should match the information returned by - * any call to png_read_update_info at this point. Do not continue if we got - * this wrong. - */ - if (png_ptr->info_rowbytes != 0 && png_ptr->info_rowbytes != - PNG_ROWBYTES(pixel_depth, row_width)) - png_error(png_ptr, "internal row size calculation error"); - - /* Don't expect this to ever happen: */ - if (row_width == 0) - png_error(png_ptr, "internal row width error"); - - /* Preserve the last byte in cases where only part of it will be overwritten, - * the multiply below may overflow, we don't care because ANSI-C guarantees - * we get the low bits. - */ - end_mask = (pixel_depth * row_width) & 7; - if (end_mask != 0) - { - /* end_ptr == NULL is a flag to say do nothing */ - end_ptr = dp + PNG_ROWBYTES(pixel_depth, row_width) - 1; - end_byte = *end_ptr; -# ifdef PNG_READ_PACKSWAP_SUPPORTED - if ((png_ptr->transformations & PNG_PACKSWAP) != 0) - /* little-endian byte */ - end_mask = (unsigned int)(0xff << end_mask); - - else /* big-endian byte */ -# endif - end_mask = 0xff >> end_mask; - /* end_mask is now the bits to *keep* from the destination row */ - } - - /* For non-interlaced images this reduces to a memcpy(). A memcpy() - * will also happen if interlacing isn't supported or if the application - * does not call png_set_interlace_handling(). In the latter cases the - * caller just gets a sequence of the unexpanded rows from each interlace - * pass. - */ -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (png_ptr->interlaced != 0 && - (png_ptr->transformations & PNG_INTERLACE) != 0 && - pass < 6 && (display == 0 || - /* The following copies everything for 'display' on passes 0, 2 and 4. */ - (display == 1 && (pass & 1) != 0))) - { - /* Narrow images may have no bits in a pass; the caller should handle - * this, but this test is cheap: - */ - if (row_width <= PNG_PASS_START_COL(pass)) - return; - - if (pixel_depth < 8) - { - /* For pixel depths up to 4 bpp the 8-pixel mask can be expanded to fit - * into 32 bits, then a single loop over the bytes using the four byte - * values in the 32-bit mask can be used. For the 'display' option the - * expanded mask may also not require any masking within a byte. To - * make this work the PACKSWAP option must be taken into account - it - * simply requires the pixels to be reversed in each byte. - * - * The 'regular' case requires a mask for each of the first 6 passes, - * the 'display' case does a copy for the even passes in the range - * 0..6. This has already been handled in the test above. - * - * The masks are arranged as four bytes with the first byte to use in - * the lowest bits (little-endian) regardless of the order (PACKSWAP or - * not) of the pixels in each byte. - * - * NOTE: the whole of this logic depends on the caller of this function - * only calling it on rows appropriate to the pass. This function only - * understands the 'x' logic; the 'y' logic is handled by the caller. - * - * The following defines allow generation of compile time constant bit - * masks for each pixel depth and each possibility of swapped or not - * swapped bytes. Pass 'p' is in the range 0..6; 'x', a pixel index, - * is in the range 0..7; and the result is 1 if the pixel is to be - * copied in the pass, 0 if not. 'S' is for the sparkle method, 'B' - * for the block method. - * - * With some compilers a compile time expression of the general form: - * - * (shift >= 32) ? (a >> (shift-32)) : (b >> shift) - * - * Produces warnings with values of 'shift' in the range 33 to 63 - * because the right hand side of the ?: expression is evaluated by - * the compiler even though it isn't used. Microsoft Visual C (various - * versions) and the Intel C compiler are known to do this. To avoid - * this the following macros are used in 1.5.6. This is a temporary - * solution to avoid destabilizing the code during the release process. - */ -# if PNG_USE_COMPILE_TIME_MASKS -# define PNG_LSR(x,s) ((x)>>((s) & 0x1f)) -# define PNG_LSL(x,s) ((x)<<((s) & 0x1f)) -# else -# define PNG_LSR(x,s) ((x)>>(s)) -# define PNG_LSL(x,s) ((x)<<(s)) -# endif -# define S_COPY(p,x) (((p)<4 ? PNG_LSR(0x80088822,(3-(p))*8+(7-(x))) :\ - PNG_LSR(0xaa55ff00,(7-(p))*8+(7-(x)))) & 1) -# define B_COPY(p,x) (((p)<4 ? PNG_LSR(0xff0fff33,(3-(p))*8+(7-(x))) :\ - PNG_LSR(0xff55ff00,(7-(p))*8+(7-(x)))) & 1) - - /* Return a mask for pass 'p' pixel 'x' at depth 'd'. The mask is - * little endian - the first pixel is at bit 0 - however the extra - * parameter 's' can be set to cause the mask position to be swapped - * within each byte, to match the PNG format. This is done by XOR of - * the shift with 7, 6 or 4 for bit depths 1, 2 and 4. - */ -# define PIXEL_MASK(p,x,d,s) \ - (PNG_LSL(((PNG_LSL(1U,(d)))-1),(((x)*(d))^((s)?8-(d):0)))) - - /* Hence generate the appropriate 'block' or 'sparkle' pixel copy mask. - */ -# define S_MASKx(p,x,d,s) (S_COPY(p,x)?PIXEL_MASK(p,x,d,s):0) -# define B_MASKx(p,x,d,s) (B_COPY(p,x)?PIXEL_MASK(p,x,d,s):0) - - /* Combine 8 of these to get the full mask. For the 1-bpp and 2-bpp - * cases the result needs replicating, for the 4-bpp case the above - * generates a full 32 bits. - */ -# define MASK_EXPAND(m,d) ((m)*((d)==1?0x01010101:((d)==2?0x00010001:1))) - -# define S_MASK(p,d,s) MASK_EXPAND(S_MASKx(p,0,d,s) + S_MASKx(p,1,d,s) +\ - S_MASKx(p,2,d,s) + S_MASKx(p,3,d,s) + S_MASKx(p,4,d,s) +\ - S_MASKx(p,5,d,s) + S_MASKx(p,6,d,s) + S_MASKx(p,7,d,s), d) - -# define B_MASK(p,d,s) MASK_EXPAND(B_MASKx(p,0,d,s) + B_MASKx(p,1,d,s) +\ - B_MASKx(p,2,d,s) + B_MASKx(p,3,d,s) + B_MASKx(p,4,d,s) +\ - B_MASKx(p,5,d,s) + B_MASKx(p,6,d,s) + B_MASKx(p,7,d,s), d) - -#if PNG_USE_COMPILE_TIME_MASKS - /* Utility macros to construct all the masks for a depth/swap - * combination. The 's' parameter says whether the format is PNG - * (big endian bytes) or not. Only the three odd-numbered passes are - * required for the display/block algorithm. - */ -# define S_MASKS(d,s) { S_MASK(0,d,s), S_MASK(1,d,s), S_MASK(2,d,s),\ - S_MASK(3,d,s), S_MASK(4,d,s), S_MASK(5,d,s) } - -# define B_MASKS(d,s) { B_MASK(1,d,s), B_MASK(3,d,s), B_MASK(5,d,s) } - -# define DEPTH_INDEX(d) ((d)==1?0:((d)==2?1:2)) - - /* Hence the pre-compiled masks indexed by PACKSWAP (or not), depth and - * then pass: - */ - static PNG_CONST png_uint_32 row_mask[2/*PACKSWAP*/][3/*depth*/][6] = - { - /* Little-endian byte masks for PACKSWAP */ - { S_MASKS(1,0), S_MASKS(2,0), S_MASKS(4,0) }, - /* Normal (big-endian byte) masks - PNG format */ - { S_MASKS(1,1), S_MASKS(2,1), S_MASKS(4,1) } - }; - - /* display_mask has only three entries for the odd passes, so index by - * pass>>1. - */ - static PNG_CONST png_uint_32 display_mask[2][3][3] = - { - /* Little-endian byte masks for PACKSWAP */ - { B_MASKS(1,0), B_MASKS(2,0), B_MASKS(4,0) }, - /* Normal (big-endian byte) masks - PNG format */ - { B_MASKS(1,1), B_MASKS(2,1), B_MASKS(4,1) } - }; - -# define MASK(pass,depth,display,png)\ - ((display)?display_mask[png][DEPTH_INDEX(depth)][pass>>1]:\ - row_mask[png][DEPTH_INDEX(depth)][pass]) - -#else /* !PNG_USE_COMPILE_TIME_MASKS */ - /* This is the runtime alternative: it seems unlikely that this will - * ever be either smaller or faster than the compile time approach. - */ -# define MASK(pass,depth,display,png)\ - ((display)?B_MASK(pass,depth,png):S_MASK(pass,depth,png)) -#endif /* !USE_COMPILE_TIME_MASKS */ - - /* Use the appropriate mask to copy the required bits. In some cases - * the byte mask will be 0 or 0xff; optimize these cases. row_width is - * the number of pixels, but the code copies bytes, so it is necessary - * to special case the end. - */ - png_uint_32 pixels_per_byte = 8 / pixel_depth; - png_uint_32 mask; - -# ifdef PNG_READ_PACKSWAP_SUPPORTED - if ((png_ptr->transformations & PNG_PACKSWAP) != 0) - mask = MASK(pass, pixel_depth, display, 0); - - else -# endif - mask = MASK(pass, pixel_depth, display, 1); - - for (;;) - { - png_uint_32 m; - - /* It doesn't matter in the following if png_uint_32 has more than - * 32 bits because the high bits always match those in m<<24; it is, - * however, essential to use OR here, not +, because of this. - */ - m = mask; - mask = (m >> 8) | (m << 24); /* rotate right to good compilers */ - m &= 0xff; - - if (m != 0) /* something to copy */ - { - if (m != 0xff) - *dp = (png_byte)((*dp & ~m) | (*sp & m)); - else - *dp = *sp; - } - - /* NOTE: this may overwrite the last byte with garbage if the image - * is not an exact number of bytes wide; libpng has always done - * this. - */ - if (row_width <= pixels_per_byte) - break; /* May need to restore part of the last byte */ - - row_width -= pixels_per_byte; - ++dp; - ++sp; - } - } - - else /* pixel_depth >= 8 */ - { - unsigned int bytes_to_copy, bytes_to_jump; - - /* Validate the depth - it must be a multiple of 8 */ - if (pixel_depth & 7) - png_error(png_ptr, "invalid user transform pixel depth"); - - pixel_depth >>= 3; /* now in bytes */ - row_width *= pixel_depth; - - /* Regardless of pass number the Adam 7 interlace always results in a - * fixed number of pixels to copy then to skip. There may be a - * different number of pixels to skip at the start though. - */ - { - unsigned int offset = PNG_PASS_START_COL(pass) * pixel_depth; - - row_width -= offset; - dp += offset; - sp += offset; - } - - /* Work out the bytes to copy. */ - if (display != 0) - { - /* When doing the 'block' algorithm the pixel in the pass gets - * replicated to adjacent pixels. This is why the even (0,2,4,6) - * passes are skipped above - the entire expanded row is copied. - */ - bytes_to_copy = (1<<((6-pass)>>1)) * pixel_depth; - - /* But don't allow this number to exceed the actual row width. */ - if (bytes_to_copy > row_width) - bytes_to_copy = (unsigned int)/*SAFE*/row_width; - } - - else /* normal row; Adam7 only ever gives us one pixel to copy. */ - bytes_to_copy = pixel_depth; - - /* In Adam7 there is a constant offset between where the pixels go. */ - bytes_to_jump = PNG_PASS_COL_OFFSET(pass) * pixel_depth; - - /* And simply copy these bytes. Some optimization is possible here, - * depending on the value of 'bytes_to_copy'. Special case the low - * byte counts, which we know to be frequent. - * - * Notice that these cases all 'return' rather than 'break' - this - * avoids an unnecessary test on whether to restore the last byte - * below. - */ - switch (bytes_to_copy) - { - case 1: - for (;;) - { - *dp = *sp; - - if (row_width <= bytes_to_jump) - return; - - dp += bytes_to_jump; - sp += bytes_to_jump; - row_width -= bytes_to_jump; - } - - case 2: - /* There is a possibility of a partial copy at the end here; this - * slows the code down somewhat. - */ - do - { - dp[0] = sp[0]; dp[1] = sp[1]; - - if (row_width <= bytes_to_jump) - return; - - sp += bytes_to_jump; - dp += bytes_to_jump; - row_width -= bytes_to_jump; - } - while (row_width > 1); - - /* And there can only be one byte left at this point: */ - *dp = *sp; - return; - - case 3: - /* This can only be the RGB case, so each copy is exactly one - * pixel and it is not necessary to check for a partial copy. - */ - for (;;) - { - dp[0] = sp[0]; dp[1] = sp[1]; dp[2] = sp[2]; - - if (row_width <= bytes_to_jump) - return; - - sp += bytes_to_jump; - dp += bytes_to_jump; - row_width -= bytes_to_jump; - } - - default: -#if PNG_ALIGN_TYPE != PNG_ALIGN_NONE - /* Check for double byte alignment and, if possible, use a - * 16-bit copy. Don't attempt this for narrow images - ones that - * are less than an interlace panel wide. Don't attempt it for - * wide bytes_to_copy either - use the memcpy there. - */ - if (bytes_to_copy < 16 /*else use memcpy*/ && - png_isaligned(dp, png_uint_16) && - png_isaligned(sp, png_uint_16) && - bytes_to_copy % (sizeof (png_uint_16)) == 0 && - bytes_to_jump % (sizeof (png_uint_16)) == 0) - { - /* Everything is aligned for png_uint_16 copies, but try for - * png_uint_32 first. - */ - if (png_isaligned(dp, png_uint_32) && - png_isaligned(sp, png_uint_32) && - bytes_to_copy % (sizeof (png_uint_32)) == 0 && - bytes_to_jump % (sizeof (png_uint_32)) == 0) - { - png_uint_32p dp32 = png_aligncast(png_uint_32p,dp); - png_const_uint_32p sp32 = png_aligncastconst( - png_const_uint_32p, sp); - size_t skip = (bytes_to_jump-bytes_to_copy) / - (sizeof (png_uint_32)); - - do - { - size_t c = bytes_to_copy; - do - { - *dp32++ = *sp32++; - c -= (sizeof (png_uint_32)); - } - while (c > 0); - - if (row_width <= bytes_to_jump) - return; - - dp32 += skip; - sp32 += skip; - row_width -= bytes_to_jump; - } - while (bytes_to_copy <= row_width); - - /* Get to here when the row_width truncates the final copy. - * There will be 1-3 bytes left to copy, so don't try the - * 16-bit loop below. - */ - dp = (png_bytep)dp32; - sp = (png_const_bytep)sp32; - do - *dp++ = *sp++; - while (--row_width > 0); - return; - } - - /* Else do it in 16-bit quantities, but only if the size is - * not too large. - */ - else - { - png_uint_16p dp16 = png_aligncast(png_uint_16p, dp); - png_const_uint_16p sp16 = png_aligncastconst( - png_const_uint_16p, sp); - size_t skip = (bytes_to_jump-bytes_to_copy) / - (sizeof (png_uint_16)); - - do - { - size_t c = bytes_to_copy; - do - { - *dp16++ = *sp16++; - c -= (sizeof (png_uint_16)); - } - while (c > 0); - - if (row_width <= bytes_to_jump) - return; - - dp16 += skip; - sp16 += skip; - row_width -= bytes_to_jump; - } - while (bytes_to_copy <= row_width); - - /* End of row - 1 byte left, bytes_to_copy > row_width: */ - dp = (png_bytep)dp16; - sp = (png_const_bytep)sp16; - do - *dp++ = *sp++; - while (--row_width > 0); - return; - } - } -#endif /* ALIGN_TYPE code */ - - /* The true default - use a memcpy: */ - for (;;) - { - memcpy(dp, sp, bytes_to_copy); - - if (row_width <= bytes_to_jump) - return; - - sp += bytes_to_jump; - dp += bytes_to_jump; - row_width -= bytes_to_jump; - if (bytes_to_copy > row_width) - bytes_to_copy = (unsigned int)/*SAFE*/row_width; - } - } - - /* NOT REACHED*/ - } /* pixel_depth >= 8 */ - - /* Here if pixel_depth < 8 to check 'end_ptr' below. */ - } - else -#endif /* READ_INTERLACING */ - - /* If here then the switch above wasn't used so just memcpy the whole row - * from the temporary row buffer (notice that this overwrites the end of the - * destination row if it is a partial byte.) - */ - memcpy(dp, sp, PNG_ROWBYTES(pixel_depth, row_width)); - - /* Restore the overwritten bits from the last byte if necessary. */ - if (end_ptr != NULL) - *end_ptr = (png_byte)((end_byte & end_mask) | (*end_ptr & ~end_mask)); -} - -#ifdef PNG_READ_INTERLACING_SUPPORTED -void /* PRIVATE */ -png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass, - png_uint_32 transformations /* Because these may affect the byte layout */) -{ - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - /* Offset to next interlace block */ - static PNG_CONST unsigned int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - png_debug(1, "in png_do_read_interlace"); - if (row != NULL && row_info != NULL) - { - png_uint_32 final_width; - - final_width = row_info->width * png_pass_inc[pass]; - - switch (row_info->pixel_depth) - { - case 1: - { - png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3); - png_bytep dp = row + (png_size_t)((final_width - 1) >> 3); - unsigned int sshift, dshift; - unsigned int s_start, s_end; - int s_inc; - int jstop = (int)png_pass_inc[pass]; - png_byte v; - png_uint_32 i; - int j; - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if ((transformations & PNG_PACKSWAP) != 0) - { - sshift = ((row_info->width + 7) & 0x07); - dshift = ((final_width + 7) & 0x07); - s_start = 7; - s_end = 0; - s_inc = -1; - } - - else -#endif - { - sshift = 7 - ((row_info->width + 7) & 0x07); - dshift = 7 - ((final_width + 7) & 0x07); - s_start = 0; - s_end = 7; - s_inc = 1; - } - - for (i = 0; i < row_info->width; i++) - { - v = (png_byte)((*sp >> sshift) & 0x01); - for (j = 0; j < jstop; j++) - { - unsigned int tmp = *dp & (0x7f7f >> (7 - dshift)); - tmp |= (unsigned int)(v << dshift); - *dp = (png_byte)(tmp & 0xff); - - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - - else - dshift = (unsigned int)((int)dshift + s_inc); - } - - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - - else - sshift = (unsigned int)((int)sshift + s_inc); - } - break; - } - - case 2: - { - png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2); - png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2); - unsigned int sshift, dshift; - unsigned int s_start, s_end; - int s_inc; - int jstop = (int)png_pass_inc[pass]; - png_uint_32 i; - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if ((transformations & PNG_PACKSWAP) != 0) - { - sshift = (((row_info->width + 3) & 0x03) << 1); - dshift = (((final_width + 3) & 0x03) << 1); - s_start = 6; - s_end = 0; - s_inc = -2; - } - - else -#endif - { - sshift = ((3 - ((row_info->width + 3) & 0x03)) << 1); - dshift = ((3 - ((final_width + 3) & 0x03)) << 1); - s_start = 0; - s_end = 6; - s_inc = 2; - } - - for (i = 0; i < row_info->width; i++) - { - png_byte v; - int j; - - v = (png_byte)((*sp >> sshift) & 0x03); - for (j = 0; j < jstop; j++) - { - unsigned int tmp = *dp & (0x3f3f >> (6 - dshift)); - tmp |= (unsigned int)(v << dshift); - *dp = (png_byte)(tmp & 0xff); - - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - - else - dshift = (unsigned int)((int)dshift + s_inc); - } - - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - - else - sshift = (unsigned int)((int)sshift + s_inc); - } - break; - } - - case 4: - { - png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1); - png_bytep dp = row + (png_size_t)((final_width - 1) >> 1); - unsigned int sshift, dshift; - unsigned int s_start, s_end; - int s_inc; - png_uint_32 i; - int jstop = (int)png_pass_inc[pass]; - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if ((transformations & PNG_PACKSWAP) != 0) - { - sshift = (((row_info->width + 1) & 0x01) << 2); - dshift = (((final_width + 1) & 0x01) << 2); - s_start = 4; - s_end = 0; - s_inc = -4; - } - - else -#endif - { - sshift = ((1 - ((row_info->width + 1) & 0x01)) << 2); - dshift = ((1 - ((final_width + 1) & 0x01)) << 2); - s_start = 0; - s_end = 4; - s_inc = 4; - } - - for (i = 0; i < row_info->width; i++) - { - png_byte v = (png_byte)((*sp >> sshift) & 0x0f); - int j; - - for (j = 0; j < jstop; j++) - { - unsigned int tmp = *dp & (0xf0f >> (4 - dshift)); - tmp |= (unsigned int)(v << dshift); - *dp = (png_byte)(tmp & 0xff); - - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - - else - dshift = (unsigned int)((int)dshift + s_inc); - } - - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - - else - sshift = (unsigned int)((int)sshift + s_inc); - } - break; - } - - default: - { - png_size_t pixel_bytes = (row_info->pixel_depth >> 3); - - png_bytep sp = row + (png_size_t)(row_info->width - 1) - * pixel_bytes; - - png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes; - - int jstop = (int)png_pass_inc[pass]; - png_uint_32 i; - - for (i = 0; i < row_info->width; i++) - { - png_byte v[8]; /* SAFE; pixel_depth does not exceed 64 */ - int j; - - memcpy(v, sp, pixel_bytes); - - for (j = 0; j < jstop; j++) - { - memcpy(dp, v, pixel_bytes); - dp -= pixel_bytes; - } - - sp -= pixel_bytes; - } - break; - } - } - - row_info->width = final_width; - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width); - } -#ifndef PNG_READ_PACKSWAP_SUPPORTED - PNG_UNUSED(transformations) /* Silence compiler warning */ -#endif -} -#endif /* READ_INTERLACING */ - -static void -png_read_filter_row_sub(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_size_t istop = row_info->rowbytes; - unsigned int bpp = (row_info->pixel_depth + 7) >> 3; - png_bytep rp = row + bpp; - - PNG_UNUSED(prev_row) - - for (i = bpp; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } -} - -static void -png_read_filter_row_up(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_size_t istop = row_info->rowbytes; - png_bytep rp = row; - png_const_bytep pp = prev_row; - - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff); - rp++; - } -} - -static void -png_read_filter_row_avg(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_bytep rp = row; - png_const_bytep pp = prev_row; - unsigned int bpp = (row_info->pixel_depth + 7) >> 3; - png_size_t istop = row_info->rowbytes - bpp; - - for (i = 0; i < bpp; i++) - { - *rp = (png_byte)(((int)(*rp) + - ((int)(*pp++) / 2 )) & 0xff); - - rp++; - } - - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } -} - -static void -png_read_filter_row_paeth_1byte_pixel(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp_end = row + row_info->rowbytes; - int a, c; - - /* First pixel/byte */ - c = *prev_row++; - a = *row + c; - *row++ = (png_byte)a; - - /* Remainder */ - while (row < rp_end) - { - int b, pa, pb, pc, p; - - a &= 0xff; /* From previous iteration or start */ - b = *prev_row++; - - p = b - c; - pc = a - c; - -#ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -#else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -#endif - - /* Find the best predictor, the least of pa, pb, pc favoring the earlier - * ones in the case of a tie. - */ - if (pb < pa) - { - pa = pb; a = b; - } - if (pc < pa) a = c; - - /* Calculate the current pixel in a, and move the previous row pixel to c - * for the next time round the loop - */ - c = b; - a += *row; - *row++ = (png_byte)a; - } -} - -static void -png_read_filter_row_paeth_multibyte_pixel(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - unsigned int bpp = (row_info->pixel_depth + 7) >> 3; - png_bytep rp_end = row + bpp; - - /* Process the first pixel in the row completely (this is the same as 'up' - * because there is only one candidate predictor for the first row). - */ - while (row < rp_end) - { - int a = *row + *prev_row++; - *row++ = (png_byte)a; - } - - /* Remainder */ - rp_end = rp_end + (row_info->rowbytes - bpp); - - while (row < rp_end) - { - int a, b, c, pa, pb, pc, p; - - c = *(prev_row - bpp); - a = *(row - bpp); - b = *prev_row++; - - p = b - c; - pc = a - c; - -#ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -#else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -#endif - - if (pb < pa) - { - pa = pb; a = b; - } - if (pc < pa) a = c; - - a += *row; - *row++ = (png_byte)a; - } -} - -static void -png_init_filter_functions(png_structrp pp) - /* This function is called once for every PNG image (except for PNG images - * that only use PNG_FILTER_VALUE_NONE for all rows) to set the - * implementations required to reverse the filtering of PNG rows. Reversing - * the filter is the first transformation performed on the row data. It is - * performed in place, therefore an implementation can be selected based on - * the image pixel format. If the implementation depends on image width then - * take care to ensure that it works correctly if the image is interlaced - - * interlacing causes the actual row width to vary. - */ -{ - unsigned int bpp = (pp->pixel_depth + 7) >> 3; - - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub; - pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg; - if (bpp == 1) - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth_1byte_pixel; - else - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth_multibyte_pixel; - -#ifdef PNG_FILTER_OPTIMIZATIONS - /* To use this define PNG_FILTER_OPTIMIZATIONS as the name of a function to - * call to install hardware optimizations for the above functions; simply - * replace whatever elements of the pp->read_filter[] array with a hardware - * specific (or, for that matter, generic) optimization. - * - * To see an example of this examine what configure.ac does when - * --enable-arm-neon is specified on the command line. - */ - PNG_FILTER_OPTIMIZATIONS(pp, bpp); -#endif -} - -void /* PRIVATE */ -png_read_filter_row(png_structrp pp, png_row_infop row_info, png_bytep row, - png_const_bytep prev_row, int filter) -{ - /* OPTIMIZATION: DO NOT MODIFY THIS FUNCTION, instead #define - * PNG_FILTER_OPTIMIZATIONS to a function that overrides the generic - * implementations. See png_init_filter_functions above. - */ - if (filter > PNG_FILTER_VALUE_NONE && filter < PNG_FILTER_VALUE_LAST) - { - if (pp->read_filter[0] == NULL) - png_init_filter_functions(pp); - - pp->read_filter[filter-1](row_info, row, prev_row); - } -} - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -void /* PRIVATE */ -png_read_IDAT_data(png_structrp png_ptr, png_bytep output, - png_alloc_size_t avail_out) -{ - /* Loop reading IDATs and decompressing the result into output[avail_out] */ - png_ptr->zstream.next_out = output; - png_ptr->zstream.avail_out = 0; /* safety: set below */ - - if (output == NULL) - avail_out = 0; - - do - { - int ret; - png_byte tmpbuf[PNG_INFLATE_BUF_SIZE]; - - if (png_ptr->zstream.avail_in == 0) - { - uInt avail_in; - png_bytep buffer; - - while (png_ptr->idat_size == 0) - { - png_crc_finish(png_ptr, 0); - - png_ptr->idat_size = png_read_chunk_header(png_ptr); - /* This is an error even in the 'check' case because the code just - * consumed a non-IDAT header. - */ - if (png_ptr->chunk_name != png_IDAT) - png_error(png_ptr, "Not enough image data"); - } - - avail_in = png_ptr->IDAT_read_size; - - if (avail_in > png_ptr->idat_size) - avail_in = (uInt)png_ptr->idat_size; - - /* A PNG with a gradually increasing IDAT size will defeat this attempt - * to minimize memory usage by causing lots of re-allocs, but - * realistically doing IDAT_read_size re-allocs is not likely to be a - * big problem. - */ - buffer = png_read_buffer(png_ptr, avail_in, 0/*error*/); - - png_crc_read(png_ptr, buffer, avail_in); - png_ptr->idat_size -= avail_in; - - png_ptr->zstream.next_in = buffer; - png_ptr->zstream.avail_in = avail_in; - } - - /* And set up the output side. */ - if (output != NULL) /* standard read */ - { - uInt out = ZLIB_IO_MAX; - - if (out > avail_out) - out = (uInt)avail_out; - - avail_out -= out; - png_ptr->zstream.avail_out = out; - } - - else /* after last row, checking for end */ - { - png_ptr->zstream.next_out = tmpbuf; - png_ptr->zstream.avail_out = (sizeof tmpbuf); - } - - /* Use NO_FLUSH; this gives zlib the maximum opportunity to optimize the - * process. If the LZ stream is truncated the sequential reader will - * terminally damage the stream, above, by reading the chunk header of the - * following chunk (it then exits with png_error). - * - * TODO: deal more elegantly with truncated IDAT lists. - */ - ret = PNG_INFLATE(png_ptr, Z_NO_FLUSH); - - /* Take the unconsumed output back. */ - if (output != NULL) - avail_out += png_ptr->zstream.avail_out; - - else /* avail_out counts the extra bytes */ - avail_out += (sizeof tmpbuf) - png_ptr->zstream.avail_out; - - png_ptr->zstream.avail_out = 0; - - if (ret == Z_STREAM_END) - { - /* Do this for safety; we won't read any more into this row. */ - png_ptr->zstream.next_out = NULL; - - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - - if (png_ptr->zstream.avail_in > 0 || png_ptr->idat_size > 0) - png_chunk_benign_error(png_ptr, "Extra compressed data"); - break; - } - - if (ret != Z_OK) - { - png_zstream_error(png_ptr, ret); - - if (output != NULL) - png_chunk_error(png_ptr, png_ptr->zstream.msg); - - else /* checking */ - { - png_chunk_benign_error(png_ptr, png_ptr->zstream.msg); - return; - } - } - } while (avail_out > 0); - - if (avail_out > 0) - { - /* The stream ended before the image; this is the same as too few IDATs so - * should be handled the same way. - */ - if (output != NULL) - png_error(png_ptr, "Not enough image data"); - - else /* the deflate stream contained extra data */ - png_chunk_benign_error(png_ptr, "Too much image data"); - } -} - -void /* PRIVATE */ -png_read_finish_IDAT(png_structrp png_ptr) -{ - /* We don't need any more data and the stream should have ended, however the - * LZ end code may actually not have been processed. In this case we must - * read it otherwise stray unread IDAT data or, more likely, an IDAT chunk - * may still remain to be consumed. - */ - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) - { - /* The NULL causes png_read_IDAT_data to swallow any remaining bytes in - * the compressed stream, but the stream may be damaged too, so even after - * this call we may need to terminate the zstream ownership. - */ - png_read_IDAT_data(png_ptr, NULL, 0); - png_ptr->zstream.next_out = NULL; /* safety */ - - /* Now clear everything out for safety; the following may not have been - * done. - */ - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) - { - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - } - } - - /* If the zstream has not been released do it now *and* terminate the reading - * of the final IDAT chunk. - */ - if (png_ptr->zowner == png_IDAT) - { - /* Always do this; the pointers otherwise point into the read buffer. */ - png_ptr->zstream.next_in = NULL; - png_ptr->zstream.avail_in = 0; - - /* Now we no longer own the zstream. */ - png_ptr->zowner = 0; - - /* The slightly weird semantics of the sequential IDAT reading is that we - * are always in or at the end of an IDAT chunk, so we always need to do a - * crc_finish here. If idat_size is non-zero we also need to read the - * spurious bytes at the end of the chunk now. - */ - (void)png_crc_finish(png_ptr, png_ptr->idat_size); - } -} - -void /* PRIVATE */ -png_read_finish_row(png_structrp png_ptr) -{ - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; - - png_debug(1, "in png_read_finish_row"); - png_ptr->row_number++; - if (png_ptr->row_number < png_ptr->num_rows) - return; - - if (png_ptr->interlaced != 0) - { - png_ptr->row_number = 0; - - /* TO DO: don't do this if prev_row isn't needed (requires - * read-ahead of the next row's filter byte. - */ - memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - do - { - png_ptr->pass++; - - if (png_ptr->pass >= 7) - break; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - if ((png_ptr->transformations & PNG_INTERLACE) == 0) - { - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - } - - else /* if (png_ptr->transformations & PNG_INTERLACE) */ - break; /* libpng deinterlacing sees every row */ - - } while (png_ptr->num_rows == 0 || png_ptr->iwidth == 0); - - if (png_ptr->pass < 7) - return; - } - - /* Here after at the end of the last row of the last pass. */ - png_read_finish_IDAT(png_ptr); -} -#endif /* SEQUENTIAL_READ */ - -void /* PRIVATE */ -png_read_start_row(png_structrp png_ptr) -{ - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; - - unsigned int max_pixel_depth; - png_size_t row_bytes; - - png_debug(1, "in png_read_start_row"); - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - png_init_read_transformations(png_ptr); -#endif - if (png_ptr->interlaced != 0) - { - if ((png_ptr->transformations & PNG_INTERLACE) == 0) - png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - - png_pass_ystart[0]) / png_pass_yinc[0]; - - else - png_ptr->num_rows = png_ptr->height; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - } - - else - { - png_ptr->num_rows = png_ptr->height; - png_ptr->iwidth = png_ptr->width; - } - - max_pixel_depth = (unsigned int)png_ptr->pixel_depth; - - /* WARNING: * png_read_transform_info (pngrtran.c) performs a simpler set of - * calculations to calculate the final pixel depth, then - * png_do_read_transforms actually does the transforms. This means that the - * code which effectively calculates this value is actually repeated in three - * separate places. They must all match. Innocent changes to the order of - * transformations can and will break libpng in a way that causes memory - * overwrites. - * - * TODO: fix this. - */ -#ifdef PNG_READ_PACK_SUPPORTED - if ((png_ptr->transformations & PNG_PACK) != 0 && png_ptr->bit_depth < 8) - max_pixel_depth = 8; -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED - if ((png_ptr->transformations & PNG_EXPAND) != 0) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (png_ptr->num_trans != 0) - max_pixel_depth = 32; - - else - max_pixel_depth = 24; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - if (max_pixel_depth < 8) - max_pixel_depth = 8; - - if (png_ptr->num_trans != 0) - max_pixel_depth *= 2; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) - { - if (png_ptr->num_trans != 0) - { - max_pixel_depth *= 4; - max_pixel_depth /= 3; - } - } - } -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED - if ((png_ptr->transformations & PNG_EXPAND_16) != 0) - { -# ifdef PNG_READ_EXPAND_SUPPORTED - /* In fact it is an error if it isn't supported, but checking is - * the safe way. - */ - if ((png_ptr->transformations & PNG_EXPAND) != 0) - { - if (png_ptr->bit_depth < 16) - max_pixel_depth *= 2; - } - else -# endif - png_ptr->transformations &= ~PNG_EXPAND_16; - } -#endif - -#ifdef PNG_READ_FILLER_SUPPORTED - if ((png_ptr->transformations & (PNG_FILLER)) != 0) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - if (max_pixel_depth <= 8) - max_pixel_depth = 16; - - else - max_pixel_depth = 32; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB || - png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (max_pixel_depth <= 32) - max_pixel_depth = 32; - - else - max_pixel_depth = 64; - } - } -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) != 0) - { - if ( -#ifdef PNG_READ_EXPAND_SUPPORTED - (png_ptr->num_trans != 0 && - (png_ptr->transformations & PNG_EXPAND) != 0) || -#endif -#ifdef PNG_READ_FILLER_SUPPORTED - (png_ptr->transformations & (PNG_FILLER)) != 0 || -#endif - png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (max_pixel_depth <= 16) - max_pixel_depth = 32; - - else - max_pixel_depth = 64; - } - - else - { - if (max_pixel_depth <= 8) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - max_pixel_depth = 32; - - else - max_pixel_depth = 24; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - max_pixel_depth = 64; - - else - max_pixel_depth = 48; - } - } -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \ -defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) - if ((png_ptr->transformations & PNG_USER_TRANSFORM) != 0) - { - unsigned int user_pixel_depth = png_ptr->user_transform_depth * - png_ptr->user_transform_channels; - - if (user_pixel_depth > max_pixel_depth) - max_pixel_depth = user_pixel_depth; - } -#endif - - /* This value is stored in png_struct and double checked in the row read - * code. - */ - png_ptr->maximum_pixel_depth = (png_byte)max_pixel_depth; - png_ptr->transformed_pixel_depth = 0; /* calculated on demand */ - - /* Align the width on the next larger 8 pixels. Mainly used - * for interlacing - */ - row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7)); - /* Calculate the maximum bytes needed, adding a byte and a pixel - * for safety's sake - */ - row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) + - 1 + ((max_pixel_depth + 7) >> 3U); - -#ifdef PNG_MAX_MALLOC_64K - if (row_bytes > (png_uint_32)65536L) - png_error(png_ptr, "This image requires a row greater than 64KB"); -#endif - - if (row_bytes + 48 > png_ptr->old_big_row_buf_size) - { - png_free(png_ptr, png_ptr->big_row_buf); - png_free(png_ptr, png_ptr->big_prev_row); - - if (png_ptr->interlaced != 0) - png_ptr->big_row_buf = (png_bytep)png_calloc(png_ptr, - row_bytes + 48); - - else - png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 48); - - png_ptr->big_prev_row = (png_bytep)png_malloc(png_ptr, row_bytes + 48); - -#ifdef PNG_ALIGNED_MEMORY_SUPPORTED - /* Use 16-byte aligned memory for row_buf with at least 16 bytes - * of padding before and after row_buf; treat prev_row similarly. - * NOTE: the alignment is to the start of the pixels, one beyond the start - * of the buffer, because of the filter byte. Prior to libpng 1.5.6 this - * was incorrect; the filter byte was aligned, which had the exact - * opposite effect of that intended. - */ - { - png_bytep temp = png_ptr->big_row_buf + 32; - int extra = (int)((temp - (png_bytep)0) & 0x0f); - png_ptr->row_buf = temp - extra - 1/*filter byte*/; - - temp = png_ptr->big_prev_row + 32; - extra = (int)((temp - (png_bytep)0) & 0x0f); - png_ptr->prev_row = temp - extra - 1/*filter byte*/; - } - -#else - /* Use 31 bytes of padding before and 17 bytes after row_buf. */ - png_ptr->row_buf = png_ptr->big_row_buf + 31; - png_ptr->prev_row = png_ptr->big_prev_row + 31; -#endif - png_ptr->old_big_row_buf_size = row_bytes + 48; - } - -#ifdef PNG_MAX_MALLOC_64K - if (png_ptr->rowbytes > 65535) - png_error(png_ptr, "This image requires a row greater than 64KB"); - -#endif - if (png_ptr->rowbytes > (PNG_SIZE_MAX - 1)) - png_error(png_ptr, "Row has too many bytes to allocate in memory"); - - memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - png_debug1(3, "width = %u,", png_ptr->width); - png_debug1(3, "height = %u,", png_ptr->height); - png_debug1(3, "iwidth = %u,", png_ptr->iwidth); - png_debug1(3, "num_rows = %u,", png_ptr->num_rows); - png_debug1(3, "rowbytes = %lu,", (unsigned long)png_ptr->rowbytes); - png_debug1(3, "irowbytes = %lu", - (unsigned long)PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1); - - /* The sequential reader needs a buffer for IDAT, but the progressive reader - * does not, so free the read buffer now regardless; the sequential reader - * reallocates it on demand. - */ - if (png_ptr->read_buffer != NULL) - { - png_bytep buffer = png_ptr->read_buffer; - - png_ptr->read_buffer_size = 0; - png_ptr->read_buffer = NULL; - png_free(png_ptr, buffer); - } - - /* Finally claim the zstream for the inflate of the IDAT data, use the bits - * value from the stream (note that this will result in a fatal error if the - * IDAT stream has a bogus deflate header window_bits value, but this should - * not be happening any longer!) - */ - if (png_inflate_claim(png_ptr, png_IDAT) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - png_ptr->flags |= PNG_FLAG_ROW_INIT; -} -#endif /* READ */ diff --git a/src/png/libpng/pngset.c b/src/png/libpng/pngset.c deleted file mode 100644 index 6f3a1ee11..000000000 --- a/src/png/libpng/pngset.c +++ /dev/null @@ -1,1802 +0,0 @@ - -/* pngset.c - storage of image information into info struct - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * The functions here are used during reads to store data from the file - * into the info struct, and during writes to store application data - * into the info struct for writing into the file. This abstracts the - * info struct and allows us to change the structure in the future. - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -#ifdef PNG_bKGD_SUPPORTED -void PNGAPI -png_set_bKGD(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_color_16p background) -{ - png_debug1(1, "in %s storage function", "bKGD"); - - if (png_ptr == NULL || info_ptr == NULL || background == NULL) - return; - - info_ptr->background = *background; - info_ptr->valid |= PNG_INFO_bKGD; -} -#endif - -#ifdef PNG_cHRM_SUPPORTED -void PNGFAPI -png_set_cHRM_fixed(png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x, - png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y, - png_fixed_point blue_x, png_fixed_point blue_y) -{ - png_xy xy; - - png_debug1(1, "in %s storage function", "cHRM fixed"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - xy.redx = red_x; - xy.redy = red_y; - xy.greenx = green_x; - xy.greeny = green_y; - xy.bluex = blue_x; - xy.bluey = blue_y; - xy.whitex = white_x; - xy.whitey = white_y; - - if (png_colorspace_set_chromaticities(png_ptr, &info_ptr->colorspace, &xy, - 2/* override with app values*/) != 0) - info_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM; - - png_colorspace_sync_info(png_ptr, info_ptr); -} - -void PNGFAPI -png_set_cHRM_XYZ_fixed(png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point int_red_X, png_fixed_point int_red_Y, - png_fixed_point int_red_Z, png_fixed_point int_green_X, - png_fixed_point int_green_Y, png_fixed_point int_green_Z, - png_fixed_point int_blue_X, png_fixed_point int_blue_Y, - png_fixed_point int_blue_Z) -{ - png_XYZ XYZ; - - png_debug1(1, "in %s storage function", "cHRM XYZ fixed"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - XYZ.red_X = int_red_X; - XYZ.red_Y = int_red_Y; - XYZ.red_Z = int_red_Z; - XYZ.green_X = int_green_X; - XYZ.green_Y = int_green_Y; - XYZ.green_Z = int_green_Z; - XYZ.blue_X = int_blue_X; - XYZ.blue_Y = int_blue_Y; - XYZ.blue_Z = int_blue_Z; - - if (png_colorspace_set_endpoints(png_ptr, &info_ptr->colorspace, - &XYZ, 2) != 0) - info_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM; - - png_colorspace_sync_info(png_ptr, info_ptr); -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_cHRM(png_const_structrp png_ptr, png_inforp info_ptr, - double white_x, double white_y, double red_x, double red_y, - double green_x, double green_y, double blue_x, double blue_y) -{ - png_set_cHRM_fixed(png_ptr, info_ptr, - png_fixed(png_ptr, white_x, "cHRM White X"), - png_fixed(png_ptr, white_y, "cHRM White Y"), - png_fixed(png_ptr, red_x, "cHRM Red X"), - png_fixed(png_ptr, red_y, "cHRM Red Y"), - png_fixed(png_ptr, green_x, "cHRM Green X"), - png_fixed(png_ptr, green_y, "cHRM Green Y"), - png_fixed(png_ptr, blue_x, "cHRM Blue X"), - png_fixed(png_ptr, blue_y, "cHRM Blue Y")); -} - -void PNGAPI -png_set_cHRM_XYZ(png_const_structrp png_ptr, png_inforp info_ptr, double red_X, - double red_Y, double red_Z, double green_X, double green_Y, double green_Z, - double blue_X, double blue_Y, double blue_Z) -{ - png_set_cHRM_XYZ_fixed(png_ptr, info_ptr, - png_fixed(png_ptr, red_X, "cHRM Red X"), - png_fixed(png_ptr, red_Y, "cHRM Red Y"), - png_fixed(png_ptr, red_Z, "cHRM Red Z"), - png_fixed(png_ptr, green_X, "cHRM Green X"), - png_fixed(png_ptr, green_Y, "cHRM Green Y"), - png_fixed(png_ptr, green_Z, "cHRM Green Z"), - png_fixed(png_ptr, blue_X, "cHRM Blue X"), - png_fixed(png_ptr, blue_Y, "cHRM Blue Y"), - png_fixed(png_ptr, blue_Z, "cHRM Blue Z")); -} -# endif /* FLOATING_POINT */ - -#endif /* cHRM */ - -#ifdef PNG_eXIf_SUPPORTED -void PNGAPI -png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr, - const png_bytep eXIf_buf) -{ - png_warning(png_ptr, "png_set_eXIf does not work; use png_set_eXIf_1"); - PNG_UNUSED(info_ptr) - PNG_UNUSED(eXIf_buf) -} - -void PNGAPI -png_set_eXIf_1(png_const_structrp png_ptr, png_inforp info_ptr, - const png_uint_32 num_exif, const png_bytep eXIf_buf) -{ - int i; - - png_debug1(1, "in %s storage function", "eXIf"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (info_ptr->exif) - { - png_free(png_ptr, info_ptr->exif); - info_ptr->exif = NULL; - } - - info_ptr->num_exif = num_exif; - - info_ptr->exif = png_voidcast(png_bytep, png_malloc_warn(png_ptr, - info_ptr->num_exif)); - - if (info_ptr->exif == NULL) - { - png_warning(png_ptr, "Insufficient memory for eXIf chunk data"); - return; - } - - info_ptr->free_me |= PNG_FREE_EXIF; - - for (i = 0; i < (int) info_ptr->num_exif; i++) - info_ptr->exif[i] = eXIf_buf[i]; - - info_ptr->valid |= PNG_INFO_eXIf; -} -#endif /* eXIf */ - -#ifdef PNG_gAMA_SUPPORTED -void PNGFAPI -png_set_gAMA_fixed(png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point file_gamma) -{ - png_debug1(1, "in %s storage function", "gAMA"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_colorspace_set_gamma(png_ptr, &info_ptr->colorspace, file_gamma); - png_colorspace_sync_info(png_ptr, info_ptr); -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_gAMA(png_const_structrp png_ptr, png_inforp info_ptr, double file_gamma) -{ - png_set_gAMA_fixed(png_ptr, info_ptr, png_fixed(png_ptr, file_gamma, - "png_set_gAMA")); -} -# endif -#endif - -#ifdef PNG_hIST_SUPPORTED -void PNGAPI -png_set_hIST(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_uint_16p hist) -{ - int i; - - png_debug1(1, "in %s storage function", "hIST"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (info_ptr->num_palette == 0 || info_ptr->num_palette - > PNG_MAX_PALETTE_LENGTH) - { - png_warning(png_ptr, - "Invalid palette size, hIST allocation skipped"); - - return; - } - - png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0); - - /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in - * version 1.2.1 - */ - info_ptr->hist = png_voidcast(png_uint_16p, png_malloc_warn(png_ptr, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_uint_16)))); - - if (info_ptr->hist == NULL) - { - png_warning(png_ptr, "Insufficient memory for hIST chunk data"); - - return; - } - - info_ptr->free_me |= PNG_FREE_HIST; - - for (i = 0; i < info_ptr->num_palette; i++) - info_ptr->hist[i] = hist[i]; - - info_ptr->valid |= PNG_INFO_hIST; -} -#endif - -void PNGAPI -png_set_IHDR(png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type) -{ - png_debug1(1, "in %s storage function", "IHDR"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->width = width; - info_ptr->height = height; - info_ptr->bit_depth = (png_byte)bit_depth; - info_ptr->color_type = (png_byte)color_type; - info_ptr->compression_type = (png_byte)compression_type; - info_ptr->filter_type = (png_byte)filter_type; - info_ptr->interlace_type = (png_byte)interlace_type; - - png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type, - info_ptr->compression_type, info_ptr->filter_type); - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - info_ptr->channels = 1; - - else if ((info_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - info_ptr->channels = 3; - - else - info_ptr->channels = 1; - - if ((info_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0) - info_ptr->channels++; - - info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth); - - info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width); -} - -#ifdef PNG_oFFs_SUPPORTED -void PNGAPI -png_set_oFFs(png_const_structrp png_ptr, png_inforp info_ptr, - png_int_32 offset_x, png_int_32 offset_y, int unit_type) -{ - png_debug1(1, "in %s storage function", "oFFs"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_offset = offset_x; - info_ptr->y_offset = offset_y; - info_ptr->offset_unit_type = (png_byte)unit_type; - info_ptr->valid |= PNG_INFO_oFFs; -} -#endif - -#ifdef PNG_pCAL_SUPPORTED -void PNGAPI -png_set_pCAL(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, - int nparams, png_const_charp units, png_charpp params) -{ - png_size_t length; - int i; - - png_debug1(1, "in %s storage function", "pCAL"); - - if (png_ptr == NULL || info_ptr == NULL || purpose == NULL || units == NULL - || (nparams > 0 && params == NULL)) - return; - - length = strlen(purpose) + 1; - png_debug1(3, "allocating purpose for info (%lu bytes)", - (unsigned long)length); - - /* TODO: validate format of calibration name and unit name */ - - /* Check that the type matches the specification. */ - if (type < 0 || type > 3) - { - png_chunk_report(png_ptr, "Invalid pCAL equation type", - PNG_CHUNK_WRITE_ERROR); - return; - } - - if (nparams < 0 || nparams > 255) - { - png_chunk_report(png_ptr, "Invalid pCAL parameter count", - PNG_CHUNK_WRITE_ERROR); - return; - } - - /* Validate params[nparams] */ - for (i=0; ipcal_purpose = png_voidcast(png_charp, - png_malloc_warn(png_ptr, length)); - - if (info_ptr->pcal_purpose == NULL) - { - png_chunk_report(png_ptr, "Insufficient memory for pCAL purpose", - PNG_CHUNK_WRITE_ERROR); - return; - } - - memcpy(info_ptr->pcal_purpose, purpose, length); - - png_debug(3, "storing X0, X1, type, and nparams in info"); - info_ptr->pcal_X0 = X0; - info_ptr->pcal_X1 = X1; - info_ptr->pcal_type = (png_byte)type; - info_ptr->pcal_nparams = (png_byte)nparams; - - length = strlen(units) + 1; - png_debug1(3, "allocating units for info (%lu bytes)", - (unsigned long)length); - - info_ptr->pcal_units = png_voidcast(png_charp, - png_malloc_warn(png_ptr, length)); - - if (info_ptr->pcal_units == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL units"); - - return; - } - - memcpy(info_ptr->pcal_units, units, length); - - info_ptr->pcal_params = png_voidcast(png_charpp, png_malloc_warn(png_ptr, - (png_size_t)(((unsigned int)nparams + 1) * (sizeof (png_charp))))); - - if (info_ptr->pcal_params == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL params"); - - return; - } - - memset(info_ptr->pcal_params, 0, ((unsigned int)nparams + 1) * - (sizeof (png_charp))); - - for (i = 0; i < nparams; i++) - { - length = strlen(params[i]) + 1; - png_debug2(3, "allocating parameter %d for info (%lu bytes)", i, - (unsigned long)length); - - info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length); - - if (info_ptr->pcal_params[i] == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL parameter"); - - return; - } - - memcpy(info_ptr->pcal_params[i], params[i], length); - } - - info_ptr->valid |= PNG_INFO_pCAL; - info_ptr->free_me |= PNG_FREE_PCAL; -} -#endif - -#ifdef PNG_sCAL_SUPPORTED -void PNGAPI -png_set_sCAL_s(png_const_structrp png_ptr, png_inforp info_ptr, - int unit, png_const_charp swidth, png_const_charp sheight) -{ - png_size_t lengthw = 0, lengthh = 0; - - png_debug1(1, "in %s storage function", "sCAL"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* Double check the unit (should never get here with an invalid - * unit unless this is an API call.) - */ - if (unit != 1 && unit != 2) - png_error(png_ptr, "Invalid sCAL unit"); - - if (swidth == NULL || (lengthw = strlen(swidth)) == 0 || - swidth[0] == 45 /* '-' */ || !png_check_fp_string(swidth, lengthw)) - png_error(png_ptr, "Invalid sCAL width"); - - if (sheight == NULL || (lengthh = strlen(sheight)) == 0 || - sheight[0] == 45 /* '-' */ || !png_check_fp_string(sheight, lengthh)) - png_error(png_ptr, "Invalid sCAL height"); - - info_ptr->scal_unit = (png_byte)unit; - - ++lengthw; - - png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthw); - - info_ptr->scal_s_width = png_voidcast(png_charp, - png_malloc_warn(png_ptr, lengthw)); - - if (info_ptr->scal_s_width == NULL) - { - png_warning(png_ptr, "Memory allocation failed while processing sCAL"); - - return; - } - - memcpy(info_ptr->scal_s_width, swidth, lengthw); - - ++lengthh; - - png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthh); - - info_ptr->scal_s_height = png_voidcast(png_charp, - png_malloc_warn(png_ptr, lengthh)); - - if (info_ptr->scal_s_height == NULL) - { - png_free (png_ptr, info_ptr->scal_s_width); - info_ptr->scal_s_width = NULL; - - png_warning(png_ptr, "Memory allocation failed while processing sCAL"); - - return; - } - - memcpy(info_ptr->scal_s_height, sheight, lengthh); - - info_ptr->valid |= PNG_INFO_sCAL; - info_ptr->free_me |= PNG_FREE_SCAL; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_sCAL(png_const_structrp png_ptr, png_inforp info_ptr, int unit, - double width, double height) -{ - png_debug1(1, "in %s storage function", "sCAL"); - - /* Check the arguments. */ - if (width <= 0) - png_warning(png_ptr, "Invalid sCAL width ignored"); - - else if (height <= 0) - png_warning(png_ptr, "Invalid sCAL height ignored"); - - else - { - /* Convert 'width' and 'height' to ASCII. */ - char swidth[PNG_sCAL_MAX_DIGITS+1]; - char sheight[PNG_sCAL_MAX_DIGITS+1]; - - png_ascii_from_fp(png_ptr, swidth, (sizeof swidth), width, - PNG_sCAL_PRECISION); - png_ascii_from_fp(png_ptr, sheight, (sizeof sheight), height, - PNG_sCAL_PRECISION); - - png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight); - } -} -# endif - -# ifdef PNG_FIXED_POINT_SUPPORTED -void PNGAPI -png_set_sCAL_fixed(png_const_structrp png_ptr, png_inforp info_ptr, int unit, - png_fixed_point width, png_fixed_point height) -{ - png_debug1(1, "in %s storage function", "sCAL"); - - /* Check the arguments. */ - if (width <= 0) - png_warning(png_ptr, "Invalid sCAL width ignored"); - - else if (height <= 0) - png_warning(png_ptr, "Invalid sCAL height ignored"); - - else - { - /* Convert 'width' and 'height' to ASCII. */ - char swidth[PNG_sCAL_MAX_DIGITS+1]; - char sheight[PNG_sCAL_MAX_DIGITS+1]; - - png_ascii_from_fixed(png_ptr, swidth, (sizeof swidth), width); - png_ascii_from_fixed(png_ptr, sheight, (sizeof sheight), height); - - png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight); - } -} -# endif -#endif - -#ifdef PNG_pHYs_SUPPORTED -void PNGAPI -png_set_pHYs(png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 res_x, png_uint_32 res_y, int unit_type) -{ - png_debug1(1, "in %s storage function", "pHYs"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_pixels_per_unit = res_x; - info_ptr->y_pixels_per_unit = res_y; - info_ptr->phys_unit_type = (png_byte)unit_type; - info_ptr->valid |= PNG_INFO_pHYs; -} -#endif - -void PNGAPI -png_set_PLTE(png_structrp png_ptr, png_inforp info_ptr, - png_const_colorp palette, int num_palette) -{ - - png_uint_32 max_palette_length; - - png_debug1(1, "in %s storage function", "PLTE"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - max_palette_length = (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ? - (1 << info_ptr->bit_depth) : PNG_MAX_PALETTE_LENGTH; - - if (num_palette < 0 || num_palette > (int) max_palette_length) - { - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_error(png_ptr, "Invalid palette length"); - - else - { - png_warning(png_ptr, "Invalid palette length"); - - return; - } - } - - if ((num_palette > 0 && palette == NULL) || - (num_palette == 0 -# ifdef PNG_MNG_FEATURES_SUPPORTED - && (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0 -# endif - )) - { - png_error(png_ptr, "Invalid palette"); - } - - /* It may not actually be necessary to set png_ptr->palette here; - * we do it for backward compatibility with the way the png_handle_tRNS - * function used to do the allocation. - * - * 1.6.0: the above statement appears to be incorrect; something has to set - * the palette inside png_struct on read. - */ - png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0); - - /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead - * of num_palette entries, in case of an invalid PNG file or incorrect - * call to png_set_PLTE() with too-large sample values. - */ - png_ptr->palette = png_voidcast(png_colorp, png_calloc(png_ptr, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_color)))); - - if (num_palette > 0) - memcpy(png_ptr->palette, palette, (unsigned int)num_palette * - (sizeof (png_color))); - info_ptr->palette = png_ptr->palette; - info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette; - - info_ptr->free_me |= PNG_FREE_PLTE; - - info_ptr->valid |= PNG_INFO_PLTE; -} - -#ifdef PNG_sBIT_SUPPORTED -void PNGAPI -png_set_sBIT(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_color_8p sig_bit) -{ - png_debug1(1, "in %s storage function", "sBIT"); - - if (png_ptr == NULL || info_ptr == NULL || sig_bit == NULL) - return; - - info_ptr->sig_bit = *sig_bit; - info_ptr->valid |= PNG_INFO_sBIT; -} -#endif - -#ifdef PNG_sRGB_SUPPORTED -void PNGAPI -png_set_sRGB(png_const_structrp png_ptr, png_inforp info_ptr, int srgb_intent) -{ - png_debug1(1, "in %s storage function", "sRGB"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - (void)png_colorspace_set_sRGB(png_ptr, &info_ptr->colorspace, srgb_intent); - png_colorspace_sync_info(png_ptr, info_ptr); -} - -void PNGAPI -png_set_sRGB_gAMA_and_cHRM(png_const_structrp png_ptr, png_inforp info_ptr, - int srgb_intent) -{ - png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (png_colorspace_set_sRGB(png_ptr, &info_ptr->colorspace, - srgb_intent) != 0) - { - /* This causes the gAMA and cHRM to be written too */ - info_ptr->colorspace.flags |= - PNG_COLORSPACE_FROM_gAMA|PNG_COLORSPACE_FROM_cHRM; - } - - png_colorspace_sync_info(png_ptr, info_ptr); -} -#endif /* sRGB */ - - -#ifdef PNG_iCCP_SUPPORTED -void PNGAPI -png_set_iCCP(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_charp name, int compression_type, - png_const_bytep profile, png_uint_32 proflen) -{ - png_charp new_iccp_name; - png_bytep new_iccp_profile; - png_size_t length; - - png_debug1(1, "in %s storage function", "iCCP"); - - if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL) - return; - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - png_app_error(png_ptr, "Invalid iCCP compression method"); - - /* Set the colorspace first because this validates the profile; do not - * override previously set app cHRM or gAMA here (because likely as not the - * application knows better than libpng what the correct values are.) Pass - * the info_ptr color_type field to png_colorspace_set_ICC because in the - * write case it has not yet been stored in png_ptr. - */ - { - int result = png_colorspace_set_ICC(png_ptr, &info_ptr->colorspace, name, - proflen, profile, info_ptr->color_type); - - png_colorspace_sync_info(png_ptr, info_ptr); - - /* Don't do any of the copying if the profile was bad, or inconsistent. */ - if (result == 0) - return; - - /* But do write the gAMA and cHRM chunks from the profile. */ - info_ptr->colorspace.flags |= - PNG_COLORSPACE_FROM_gAMA|PNG_COLORSPACE_FROM_cHRM; - } - - length = strlen(name)+1; - new_iccp_name = png_voidcast(png_charp, png_malloc_warn(png_ptr, length)); - - if (new_iccp_name == NULL) - { - png_benign_error(png_ptr, "Insufficient memory to process iCCP chunk"); - - return; - } - - memcpy(new_iccp_name, name, length); - new_iccp_profile = png_voidcast(png_bytep, - png_malloc_warn(png_ptr, proflen)); - - if (new_iccp_profile == NULL) - { - png_free(png_ptr, new_iccp_name); - png_benign_error(png_ptr, - "Insufficient memory to process iCCP profile"); - - return; - } - - memcpy(new_iccp_profile, profile, proflen); - - png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0); - - info_ptr->iccp_proflen = proflen; - info_ptr->iccp_name = new_iccp_name; - info_ptr->iccp_profile = new_iccp_profile; - info_ptr->free_me |= PNG_FREE_ICCP; - info_ptr->valid |= PNG_INFO_iCCP; -} -#endif - -#ifdef PNG_TEXT_SUPPORTED -void PNGAPI -png_set_text(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_textp text_ptr, int num_text) -{ - int ret; - ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text); - - if (ret != 0) - png_error(png_ptr, "Insufficient memory to store text"); -} - -int /* PRIVATE */ -png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_textp text_ptr, int num_text) -{ - int i; - - png_debug1(1, "in %lx storage function", png_ptr == NULL ? 0xabadca11U : - (unsigned long)png_ptr->chunk_name); - - if (png_ptr == NULL || info_ptr == NULL || num_text <= 0 || text_ptr == NULL) - return(0); - - /* Make sure we have enough space in the "text" array in info_struct - * to hold all of the incoming text_ptr objects. This compare can't overflow - * because max_text >= num_text (anyway, subtract of two positive integers - * can't overflow in any case.) - */ - if (num_text > info_ptr->max_text - info_ptr->num_text) - { - int old_num_text = info_ptr->num_text; - int max_text; - png_textp new_text = NULL; - - /* Calculate an appropriate max_text, checking for overflow. */ - max_text = old_num_text; - if (num_text <= INT_MAX - max_text) - { - max_text += num_text; - - /* Round up to a multiple of 8 */ - if (max_text < INT_MAX-8) - max_text = (max_text + 8) & ~0x7; - - else - max_text = INT_MAX; - - /* Now allocate a new array and copy the old members in; this does all - * the overflow checks. - */ - new_text = png_voidcast(png_textp,png_realloc_array(png_ptr, - info_ptr->text, old_num_text, max_text-old_num_text, - sizeof *new_text)); - } - - if (new_text == NULL) - { - png_chunk_report(png_ptr, "too many text chunks", - PNG_CHUNK_WRITE_ERROR); - - return 1; - } - - png_free(png_ptr, info_ptr->text); - - info_ptr->text = new_text; - info_ptr->free_me |= PNG_FREE_TEXT; - info_ptr->max_text = max_text; - /* num_text is adjusted below as the entries are copied in */ - - png_debug1(3, "allocated %d entries for info_ptr->text", max_text); - } - - for (i = 0; i < num_text; i++) - { - size_t text_length, key_len; - size_t lang_len, lang_key_len; - png_textp textp = &(info_ptr->text[info_ptr->num_text]); - - if (text_ptr[i].key == NULL) - continue; - - if (text_ptr[i].compression < PNG_TEXT_COMPRESSION_NONE || - text_ptr[i].compression >= PNG_TEXT_COMPRESSION_LAST) - { - png_chunk_report(png_ptr, "text compression mode is out of range", - PNG_CHUNK_WRITE_ERROR); - continue; - } - - key_len = strlen(text_ptr[i].key); - - if (text_ptr[i].compression <= 0) - { - lang_len = 0; - lang_key_len = 0; - } - - else -# ifdef PNG_iTXt_SUPPORTED - { - /* Set iTXt data */ - - if (text_ptr[i].lang != NULL) - lang_len = strlen(text_ptr[i].lang); - - else - lang_len = 0; - - if (text_ptr[i].lang_key != NULL) - lang_key_len = strlen(text_ptr[i].lang_key); - - else - lang_key_len = 0; - } -# else /* iTXt */ - { - png_chunk_report(png_ptr, "iTXt chunk not supported", - PNG_CHUNK_WRITE_ERROR); - continue; - } -# endif - - if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0') - { - text_length = 0; -# ifdef PNG_iTXt_SUPPORTED - if (text_ptr[i].compression > 0) - textp->compression = PNG_ITXT_COMPRESSION_NONE; - - else -# endif - textp->compression = PNG_TEXT_COMPRESSION_NONE; - } - - else - { - text_length = strlen(text_ptr[i].text); - textp->compression = text_ptr[i].compression; - } - - textp->key = png_voidcast(png_charp,png_malloc_base(png_ptr, - key_len + text_length + lang_len + lang_key_len + 4)); - - if (textp->key == NULL) - { - png_chunk_report(png_ptr, "text chunk: out of memory", - PNG_CHUNK_WRITE_ERROR); - - return 1; - } - - png_debug2(2, "Allocated %lu bytes at %p in png_set_text", - (unsigned long)(png_uint_32) - (key_len + lang_len + lang_key_len + text_length + 4), - textp->key); - - memcpy(textp->key, text_ptr[i].key, key_len); - *(textp->key + key_len) = '\0'; - - if (text_ptr[i].compression > 0) - { - textp->lang = textp->key + key_len + 1; - memcpy(textp->lang, text_ptr[i].lang, lang_len); - *(textp->lang + lang_len) = '\0'; - textp->lang_key = textp->lang + lang_len + 1; - memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len); - *(textp->lang_key + lang_key_len) = '\0'; - textp->text = textp->lang_key + lang_key_len + 1; - } - - else - { - textp->lang=NULL; - textp->lang_key=NULL; - textp->text = textp->key + key_len + 1; - } - - if (text_length != 0) - memcpy(textp->text, text_ptr[i].text, text_length); - - *(textp->text + text_length) = '\0'; - -# ifdef PNG_iTXt_SUPPORTED - if (textp->compression > 0) - { - textp->text_length = 0; - textp->itxt_length = text_length; - } - - else -# endif - { - textp->text_length = text_length; - textp->itxt_length = 0; - } - - info_ptr->num_text++; - png_debug1(3, "transferred text chunk %d", info_ptr->num_text); - } - - return(0); -} -#endif - -#ifdef PNG_tIME_SUPPORTED -void PNGAPI -png_set_tIME(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_timep mod_time) -{ - png_debug1(1, "in %s storage function", "tIME"); - - if (png_ptr == NULL || info_ptr == NULL || mod_time == NULL || - (png_ptr->mode & PNG_WROTE_tIME) != 0) - return; - - if (mod_time->month == 0 || mod_time->month > 12 || - mod_time->day == 0 || mod_time->day > 31 || - mod_time->hour > 23 || mod_time->minute > 59 || - mod_time->second > 60) - { - png_warning(png_ptr, "Ignoring invalid time value"); - - return; - } - - info_ptr->mod_time = *mod_time; - info_ptr->valid |= PNG_INFO_tIME; -} -#endif - -#ifdef PNG_tRNS_SUPPORTED -void PNGAPI -png_set_tRNS(png_structrp png_ptr, png_inforp info_ptr, - png_const_bytep trans_alpha, int num_trans, png_const_color_16p trans_color) -{ - png_debug1(1, "in %s storage function", "tRNS"); - - if (png_ptr == NULL || info_ptr == NULL) - - return; - - if (trans_alpha != NULL) - { - /* It may not actually be necessary to set png_ptr->trans_alpha here; - * we do it for backward compatibility with the way the png_handle_tRNS - * function used to do the allocation. - * - * 1.6.0: The above statement is incorrect; png_handle_tRNS effectively - * relies on png_set_tRNS storing the information in png_struct - * (otherwise it won't be there for the code in pngrtran.c). - */ - - png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0); - - if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH) - { - /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */ - info_ptr->trans_alpha = png_voidcast(png_bytep, - png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH)); - memcpy(info_ptr->trans_alpha, trans_alpha, (png_size_t)num_trans); - } - png_ptr->trans_alpha = info_ptr->trans_alpha; - } - - if (trans_color != NULL) - { -#ifdef PNG_WARNINGS_SUPPORTED - if (info_ptr->bit_depth < 16) - { - int sample_max = (1 << info_ptr->bit_depth) - 1; - - if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY && - trans_color->gray > sample_max) || - (info_ptr->color_type == PNG_COLOR_TYPE_RGB && - (trans_color->red > sample_max || - trans_color->green > sample_max || - trans_color->blue > sample_max))) - png_warning(png_ptr, - "tRNS chunk has out-of-range samples for bit_depth"); - } -#endif - - info_ptr->trans_color = *trans_color; - - if (num_trans == 0) - num_trans = 1; - } - - info_ptr->num_trans = (png_uint_16)num_trans; - - if (num_trans != 0) - { - info_ptr->valid |= PNG_INFO_tRNS; - info_ptr->free_me |= PNG_FREE_TRNS; - } -} -#endif - -#ifdef PNG_sPLT_SUPPORTED -void PNGAPI -png_set_sPLT(png_const_structrp png_ptr, - png_inforp info_ptr, png_const_sPLT_tp entries, int nentries) -/* - * entries - array of png_sPLT_t structures - * to be added to the list of palettes - * in the info structure. - * - * nentries - number of palette structures to be - * added. - */ -{ - png_sPLT_tp np; - - if (png_ptr == NULL || info_ptr == NULL || nentries <= 0 || entries == NULL) - return; - - /* Use the internal realloc function, which checks for all the possible - * overflows. Notice that the parameters are (int) and (size_t) - */ - np = png_voidcast(png_sPLT_tp,png_realloc_array(png_ptr, - info_ptr->splt_palettes, info_ptr->splt_palettes_num, nentries, - sizeof *np)); - - if (np == NULL) - { - /* Out of memory or too many chunks */ - png_chunk_report(png_ptr, "too many sPLT chunks", PNG_CHUNK_WRITE_ERROR); - - return; - } - - png_free(png_ptr, info_ptr->splt_palettes); - info_ptr->splt_palettes = np; - info_ptr->free_me |= PNG_FREE_SPLT; - - np += info_ptr->splt_palettes_num; - - do - { - png_size_t length; - - /* Skip invalid input entries */ - if (entries->name == NULL || entries->entries == NULL) - { - /* png_handle_sPLT doesn't do this, so this is an app error */ - png_app_error(png_ptr, "png_set_sPLT: invalid sPLT"); - /* Just skip the invalid entry */ - continue; - } - - np->depth = entries->depth; - - /* In the event of out-of-memory just return - there's no point keeping - * on trying to add sPLT chunks. - */ - length = strlen(entries->name) + 1; - np->name = png_voidcast(png_charp, png_malloc_base(png_ptr, length)); - - if (np->name == NULL) - break; - - memcpy(np->name, entries->name, length); - - /* IMPORTANT: we have memory now that won't get freed if something else - * goes wrong; this code must free it. png_malloc_array produces no - * warnings; use a png_chunk_report (below) if there is an error. - */ - np->entries = png_voidcast(png_sPLT_entryp, png_malloc_array(png_ptr, - entries->nentries, sizeof (png_sPLT_entry))); - - if (np->entries == NULL) - { - png_free(png_ptr, np->name); - np->name = NULL; - break; - } - - np->nentries = entries->nentries; - /* This multiply can't overflow because png_malloc_array has already - * checked it when doing the allocation. - */ - memcpy(np->entries, entries->entries, - (unsigned int)entries->nentries * sizeof (png_sPLT_entry)); - - /* Note that 'continue' skips the advance of the out pointer and out - * count, so an invalid entry is not added. - */ - info_ptr->valid |= PNG_INFO_sPLT; - ++(info_ptr->splt_palettes_num); - ++np; - ++entries; - } - while (--nentries); - - if (nentries > 0) - png_chunk_report(png_ptr, "sPLT out of memory", PNG_CHUNK_WRITE_ERROR); -} -#endif /* sPLT */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -static png_byte -check_location(png_const_structrp png_ptr, int location) -{ - location &= (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT); - - /* New in 1.6.0; copy the location and check it. This is an API - * change; previously the app had to use the - * png_set_unknown_chunk_location API below for each chunk. - */ - if (location == 0 && (png_ptr->mode & PNG_IS_READ_STRUCT) == 0) - { - /* Write struct, so unknown chunks come from the app */ - png_app_warning(png_ptr, - "png_set_unknown_chunks now expects a valid location"); - /* Use the old behavior */ - location = (png_byte)(png_ptr->mode & - (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT)); - } - - /* This need not be an internal error - if the app calls - * png_set_unknown_chunks on a read pointer it must get the location right. - */ - if (location == 0) - png_error(png_ptr, "invalid location in png_set_unknown_chunks"); - - /* Now reduce the location to the top-most set bit by removing each least - * significant bit in turn. - */ - while (location != (location & -location)) - location &= ~(location & -location); - - /* The cast is safe because 'location' is a bit mask and only the low four - * bits are significant. - */ - return (png_byte)location; -} - -void PNGAPI -png_set_unknown_chunks(png_const_structrp png_ptr, - png_inforp info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns) -{ - png_unknown_chunkp np; - - if (png_ptr == NULL || info_ptr == NULL || num_unknowns <= 0 || - unknowns == NULL) - return; - - /* Check for the failure cases where support has been disabled at compile - * time. This code is hardly ever compiled - it's here because - * STORE_UNKNOWN_CHUNKS is set by both read and write code (compiling in this - * code) but may be meaningless if the read or write handling of unknown - * chunks is not compiled in. - */ -# if !defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) && \ - defined(PNG_READ_SUPPORTED) - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0) - { - png_app_error(png_ptr, "no unknown chunk support on read"); - - return; - } -# endif -# if !defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) && \ - defined(PNG_WRITE_SUPPORTED) - if ((png_ptr->mode & PNG_IS_READ_STRUCT) == 0) - { - png_app_error(png_ptr, "no unknown chunk support on write"); - - return; - } -# endif - - /* Prior to 1.6.0 this code used png_malloc_warn; however, this meant that - * unknown critical chunks could be lost with just a warning resulting in - * undefined behavior. Now png_chunk_report is used to provide behavior - * appropriate to read or write. - */ - np = png_voidcast(png_unknown_chunkp, png_realloc_array(png_ptr, - info_ptr->unknown_chunks, info_ptr->unknown_chunks_num, num_unknowns, - sizeof *np)); - - if (np == NULL) - { - png_chunk_report(png_ptr, "too many unknown chunks", - PNG_CHUNK_WRITE_ERROR); - - return; - } - - png_free(png_ptr, info_ptr->unknown_chunks); - info_ptr->unknown_chunks = np; /* safe because it is initialized */ - info_ptr->free_me |= PNG_FREE_UNKN; - - np += info_ptr->unknown_chunks_num; - - /* Increment unknown_chunks_num each time round the loop to protect the - * just-allocated chunk data. - */ - for (; num_unknowns > 0; --num_unknowns, ++unknowns) - { - memcpy(np->name, unknowns->name, (sizeof np->name)); - np->name[(sizeof np->name)-1] = '\0'; - np->location = check_location(png_ptr, unknowns->location); - - if (unknowns->size == 0) - { - np->data = NULL; - np->size = 0; - } - - else - { - np->data = png_voidcast(png_bytep, - png_malloc_base(png_ptr, unknowns->size)); - - if (np->data == NULL) - { - png_chunk_report(png_ptr, "unknown chunk: out of memory", - PNG_CHUNK_WRITE_ERROR); - /* But just skip storing the unknown chunk */ - continue; - } - - memcpy(np->data, unknowns->data, unknowns->size); - np->size = unknowns->size; - } - - /* These increments are skipped on out-of-memory for the data - the - * unknown chunk entry gets overwritten if the png_chunk_report returns. - * This is correct in the read case (the chunk is just dropped.) - */ - ++np; - ++(info_ptr->unknown_chunks_num); - } -} - -void PNGAPI -png_set_unknown_chunk_location(png_const_structrp png_ptr, png_inforp info_ptr, - int chunk, int location) -{ - /* This API is pretty pointless in 1.6.0 because the location can be set - * before the call to png_set_unknown_chunks. - * - * TODO: add a png_app_warning in 1.7 - */ - if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && - chunk < info_ptr->unknown_chunks_num) - { - if ((location & (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT)) == 0) - { - png_app_error(png_ptr, "invalid unknown chunk location"); - /* Fake out the pre 1.6.0 behavior: */ - if (((unsigned int)location & PNG_HAVE_IDAT) != 0) /* undocumented! */ - location = PNG_AFTER_IDAT; - - else - location = PNG_HAVE_IHDR; /* also undocumented */ - } - - info_ptr->unknown_chunks[chunk].location = - check_location(png_ptr, location); - } -} -#endif /* STORE_UNKNOWN_CHUNKS */ - -#ifdef PNG_MNG_FEATURES_SUPPORTED -png_uint_32 PNGAPI -png_permit_mng_features (png_structrp png_ptr, png_uint_32 mng_features) -{ - png_debug(1, "in png_permit_mng_features"); - - if (png_ptr == NULL) - return 0; - - png_ptr->mng_features_permitted = mng_features & PNG_ALL_MNG_FEATURES; - - return png_ptr->mng_features_permitted; -} -#endif - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -static unsigned int -add_one_chunk(png_bytep list, unsigned int count, png_const_bytep add, int keep) -{ - unsigned int i; - - /* Utility function: update the 'keep' state of a chunk if it is already in - * the list, otherwise add it to the list. - */ - for (i=0; i= PNG_HANDLE_CHUNK_LAST) - { - png_app_error(png_ptr, "png_set_keep_unknown_chunks: invalid keep"); - - return; - } - - if (num_chunks_in <= 0) - { - png_ptr->unknown_default = keep; - - /* '0' means just set the flags, so stop here */ - if (num_chunks_in == 0) - return; - } - - if (num_chunks_in < 0) - { - /* Ignore all unknown chunks and all chunks recognized by - * libpng except for IHDR, PLTE, tRNS, IDAT, and IEND - */ - static PNG_CONST png_byte chunks_to_ignore[] = { - 98, 75, 71, 68, '\0', /* bKGD */ - 99, 72, 82, 77, '\0', /* cHRM */ - 101, 88, 73, 102, '\0', /* eXIf */ - 103, 65, 77, 65, '\0', /* gAMA */ - 104, 73, 83, 84, '\0', /* hIST */ - 105, 67, 67, 80, '\0', /* iCCP */ - 105, 84, 88, 116, '\0', /* iTXt */ - 111, 70, 70, 115, '\0', /* oFFs */ - 112, 67, 65, 76, '\0', /* pCAL */ - 112, 72, 89, 115, '\0', /* pHYs */ - 115, 66, 73, 84, '\0', /* sBIT */ - 115, 67, 65, 76, '\0', /* sCAL */ - 115, 80, 76, 84, '\0', /* sPLT */ - 115, 84, 69, 82, '\0', /* sTER */ - 115, 82, 71, 66, '\0', /* sRGB */ - 116, 69, 88, 116, '\0', /* tEXt */ - 116, 73, 77, 69, '\0', /* tIME */ - 122, 84, 88, 116, '\0' /* zTXt */ - }; - - chunk_list = chunks_to_ignore; - num_chunks = (unsigned int)/*SAFE*/(sizeof chunks_to_ignore)/5U; - } - - else /* num_chunks_in > 0 */ - { - if (chunk_list == NULL) - { - /* Prior to 1.6.0 this was silently ignored, now it is an app_error - * which can be switched off. - */ - png_app_error(png_ptr, "png_set_keep_unknown_chunks: no chunk list"); - - return; - } - - num_chunks = (unsigned int)num_chunks_in; - } - - old_num_chunks = png_ptr->num_chunk_list; - if (png_ptr->chunk_list == NULL) - old_num_chunks = 0; - - /* Since num_chunks is always restricted to UINT_MAX/5 this can't overflow. - */ - if (num_chunks + old_num_chunks > UINT_MAX/5) - { - png_app_error(png_ptr, "png_set_keep_unknown_chunks: too many chunks"); - - return; - } - - /* If these chunks are being reset to the default then no more memory is - * required because add_one_chunk above doesn't extend the list if the 'keep' - * parameter is the default. - */ - if (keep != 0) - { - new_list = png_voidcast(png_bytep, png_malloc(png_ptr, - 5 * (num_chunks + old_num_chunks))); - - if (old_num_chunks > 0) - memcpy(new_list, png_ptr->chunk_list, 5*old_num_chunks); - } - - else if (old_num_chunks > 0) - new_list = png_ptr->chunk_list; - - else - new_list = NULL; - - /* Add the new chunks together with each one's handling code. If the chunk - * already exists the code is updated, otherwise the chunk is added to the - * end. (In libpng 1.6.0 order no longer matters because this code enforces - * the earlier convention that the last setting is the one that is used.) - */ - if (new_list != NULL) - { - png_const_bytep inlist; - png_bytep outlist; - unsigned int i; - - for (i=0; ichunk_list != new_list) - png_free(png_ptr, new_list); - - new_list = NULL; - } - } - - else - num_chunks = 0; - - png_ptr->num_chunk_list = num_chunks; - - if (png_ptr->chunk_list != new_list) - { - if (png_ptr->chunk_list != NULL) - png_free(png_ptr, png_ptr->chunk_list); - - png_ptr->chunk_list = new_list; - } -} -#endif - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -void PNGAPI -png_set_read_user_chunk_fn(png_structrp png_ptr, png_voidp user_chunk_ptr, - png_user_chunk_ptr read_user_chunk_fn) -{ - png_debug(1, "in png_set_read_user_chunk_fn"); - - if (png_ptr == NULL) - return; - - png_ptr->read_user_chunk_fn = read_user_chunk_fn; - png_ptr->user_chunk_ptr = user_chunk_ptr; -} -#endif - -#ifdef PNG_INFO_IMAGE_SUPPORTED -void PNGAPI -png_set_rows(png_const_structrp png_ptr, png_inforp info_ptr, - png_bytepp row_pointers) -{ - png_debug1(1, "in %s storage function", "rows"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (info_ptr->row_pointers != NULL && - (info_ptr->row_pointers != row_pointers)) - png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0); - - info_ptr->row_pointers = row_pointers; - - if (row_pointers != NULL) - info_ptr->valid |= PNG_INFO_IDAT; -} -#endif - -void PNGAPI -png_set_compression_buffer_size(png_structrp png_ptr, png_size_t size) -{ - if (png_ptr == NULL) - return; - - if (size == 0 || size > PNG_UINT_31_MAX) - png_error(png_ptr, "invalid compression buffer size"); - -# ifdef PNG_SEQUENTIAL_READ_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0) - { - png_ptr->IDAT_read_size = (png_uint_32)size; /* checked above */ - return; - } -# endif - -# ifdef PNG_WRITE_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) == 0) - { - if (png_ptr->zowner != 0) - { - png_warning(png_ptr, - "Compression buffer size cannot be changed because it is in use"); - - return; - } - -#ifndef __COVERITY__ - /* Some compilers complain that this is always false. However, it - * can be true when integer overflow happens. - */ - if (size > ZLIB_IO_MAX) - { - png_warning(png_ptr, - "Compression buffer size limited to system maximum"); - size = ZLIB_IO_MAX; /* must fit */ - } -#endif - - if (size < 6) - { - /* Deflate will potentially go into an infinite loop on a SYNC_FLUSH - * if this is permitted. - */ - png_warning(png_ptr, - "Compression buffer size cannot be reduced below 6"); - - return; - } - - if (png_ptr->zbuffer_size != size) - { - png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list); - png_ptr->zbuffer_size = (uInt)size; - } - } -# endif -} - -void PNGAPI -png_set_invalid(png_const_structrp png_ptr, png_inforp info_ptr, int mask) -{ - if (png_ptr != NULL && info_ptr != NULL) - info_ptr->valid &= (unsigned int)(~mask); -} - - -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -/* This function was added to libpng 1.2.6 */ -void PNGAPI -png_set_user_limits (png_structrp png_ptr, png_uint_32 user_width_max, - png_uint_32 user_height_max) -{ - /* Images with dimensions larger than these limits will be - * rejected by png_set_IHDR(). To accept any PNG datastream - * regardless of dimensions, set both limits to 0x7fffffff. - */ - if (png_ptr == NULL) - return; - - png_ptr->user_width_max = user_width_max; - png_ptr->user_height_max = user_height_max; -} - -/* This function was added to libpng 1.4.0 */ -void PNGAPI -png_set_chunk_cache_max (png_structrp png_ptr, png_uint_32 user_chunk_cache_max) -{ - if (png_ptr != NULL) - png_ptr->user_chunk_cache_max = user_chunk_cache_max; -} - -/* This function was added to libpng 1.4.1 */ -void PNGAPI -png_set_chunk_malloc_max (png_structrp png_ptr, - png_alloc_size_t user_chunk_malloc_max) -{ - if (png_ptr != NULL) - png_ptr->user_chunk_malloc_max = user_chunk_malloc_max; -} -#endif /* ?SET_USER_LIMITS */ - - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -void PNGAPI -png_set_benign_errors(png_structrp png_ptr, int allowed) -{ - png_debug(1, "in png_set_benign_errors"); - - /* If allowed is 1, png_benign_error() is treated as a warning. - * - * If allowed is 0, png_benign_error() is treated as an error (which - * is the default behavior if png_set_benign_errors() is not called). - */ - - if (allowed != 0) - png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN | - PNG_FLAG_APP_WARNINGS_WARN | PNG_FLAG_APP_ERRORS_WARN; - - else - png_ptr->flags &= ~(PNG_FLAG_BENIGN_ERRORS_WARN | - PNG_FLAG_APP_WARNINGS_WARN | PNG_FLAG_APP_ERRORS_WARN); -} -#endif /* BENIGN_ERRORS */ - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Whether to report invalid palette index; added at libng-1.5.10. - * It is possible for an indexed (color-type==3) PNG file to contain - * pixels with invalid (out-of-range) indexes if the PLTE chunk has - * fewer entries than the image's bit-depth would allow. We recover - * from this gracefully by filling any incomplete palette with zeros - * (opaque black). By default, when this occurs libpng will issue - * a benign error. This API can be used to override that behavior. - */ -void PNGAPI -png_set_check_for_invalid_index(png_structrp png_ptr, int allowed) -{ - png_debug(1, "in png_set_check_for_invalid_index"); - - if (allowed > 0) - png_ptr->num_palette_max = 0; - - else - png_ptr->num_palette_max = -1; -} -#endif - -#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_pCAL_SUPPORTED) || \ - defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) -/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification, - * and if invalid, correct the keyword rather than discarding the entire - * chunk. The PNG 1.0 specification requires keywords 1-79 characters in - * length, forbids leading or trailing whitespace, multiple internal spaces, - * and the non-break space (0x80) from ISO 8859-1. Returns keyword length. - * - * The 'new_key' buffer must be 80 characters in size (for the keyword plus a - * trailing '\0'). If this routine returns 0 then there was no keyword, or a - * valid one could not be generated, and the caller must png_error. - */ -png_uint_32 /* PRIVATE */ -png_check_keyword(png_structrp png_ptr, png_const_charp key, png_bytep new_key) -{ -#ifdef PNG_WARNINGS_SUPPORTED - png_const_charp orig_key = key; -#endif - png_uint_32 key_len = 0; - int bad_character = 0; - int space = 1; - - png_debug(1, "in png_check_keyword"); - - if (key == NULL) - { - *new_key = 0; - return 0; - } - - while (*key && key_len < 79) - { - png_byte ch = (png_byte)*key++; - - if ((ch > 32 && ch <= 126) || (ch >= 161 /*&& ch <= 255*/)) - { - *new_key++ = ch; ++key_len; space = 0; - } - - else if (space == 0) - { - /* A space or an invalid character when one wasn't seen immediately - * before; output just a space. - */ - *new_key++ = 32; ++key_len; space = 1; - - /* If the character was not a space then it is invalid. */ - if (ch != 32) - bad_character = ch; - } - - else if (bad_character == 0) - bad_character = ch; /* just skip it, record the first error */ - } - - if (key_len > 0 && space != 0) /* trailing space */ - { - --key_len; --new_key; - if (bad_character == 0) - bad_character = 32; - } - - /* Terminate the keyword */ - *new_key = 0; - - if (key_len == 0) - return 0; - -#ifdef PNG_WARNINGS_SUPPORTED - /* Try to only output one warning per keyword: */ - if (*key != 0) /* keyword too long */ - png_warning(png_ptr, "keyword truncated"); - - else if (bad_character != 0) - { - PNG_WARNING_PARAMETERS(p) - - png_warning_parameter(p, 1, orig_key); - png_warning_parameter_signed(p, 2, PNG_NUMBER_FORMAT_02x, bad_character); - - png_formatted_warning(png_ptr, p, "keyword \"@1\": bad character '0x@2'"); - } -#else /* !WARNINGS */ - PNG_UNUSED(png_ptr) -#endif /* !WARNINGS */ - - return key_len; -} -#endif /* TEXT || pCAL || iCCP || sPLT */ -#endif /* READ || WRITE */ diff --git a/src/png/libpng/pngstruct.h b/src/png/libpng/pngstruct.h deleted file mode 100644 index d83f97125..000000000 --- a/src/png/libpng/pngstruct.h +++ /dev/null @@ -1,483 +0,0 @@ - -/* pngstruct.h - header file for PNG reference library - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* The structure that holds the information to read and write PNG files. - * The only people who need to care about what is inside of this are the - * people who will be modifying the library for their own special needs. - * It should NOT be accessed directly by an application. - */ - -#ifndef PNGSTRUCT_H -#define PNGSTRUCT_H -/* zlib.h defines the structure z_stream, an instance of which is included - * in this structure and is required for decompressing the LZ compressed - * data in PNG files. - */ -#ifndef ZLIB_CONST - /* We must ensure that zlib uses 'const' in declarations. */ -# define ZLIB_CONST -#endif -#include "zlib.h" -#ifdef const - /* zlib.h sometimes #defines const to nothing, undo this. */ -# undef const -#endif - -/* zlib.h has mediocre z_const use before 1.2.6, this stuff is for compatibility - * with older builds. - */ -#if ZLIB_VERNUM < 0x1260 -# define PNGZ_MSG_CAST(s) png_constcast(char*,s) -# define PNGZ_INPUT_CAST(b) png_constcast(png_bytep,b) -#else -# define PNGZ_MSG_CAST(s) (s) -# define PNGZ_INPUT_CAST(b) (b) -#endif - -/* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib - * can handle at once. This type need be no larger than 16 bits (so maximum of - * 65535), this define allows us to discover how big it is, but limited by the - * maximuum for png_size_t. The value can be overriden in a library build - * (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably - * lower value (e.g. 255 works). A lower value may help memory usage (slightly) - * and may even improve performance on some systems (and degrade it on others.) - */ -#ifndef ZLIB_IO_MAX -# define ZLIB_IO_MAX ((uInt)-1) -#endif - -#ifdef PNG_WRITE_SUPPORTED -/* The type of a compression buffer list used by the write code. */ -typedef struct png_compression_buffer -{ - struct png_compression_buffer *next; - png_byte output[1]; /* actually zbuf_size */ -} png_compression_buffer, *png_compression_bufferp; - -#define PNG_COMPRESSION_BUFFER_SIZE(pp)\ - (offsetof(png_compression_buffer, output) + (pp)->zbuffer_size) -#endif - -/* Colorspace support; structures used in png_struct, png_info and in internal - * functions to hold and communicate information about the color space. - * - * PNG_COLORSPACE_SUPPORTED is only required if the application will perform - * colorspace corrections, otherwise all the colorspace information can be - * skipped and the size of libpng can be reduced (significantly) by compiling - * out the colorspace support. - */ -#ifdef PNG_COLORSPACE_SUPPORTED -/* The chromaticities of the red, green and blue colorants and the chromaticity - * of the corresponding white point (i.e. of rgb(1.0,1.0,1.0)). - */ -typedef struct png_xy -{ - png_fixed_point redx, redy; - png_fixed_point greenx, greeny; - png_fixed_point bluex, bluey; - png_fixed_point whitex, whitey; -} png_xy; - -/* The same data as above but encoded as CIE XYZ values. When this data comes - * from chromaticities the sum of the Y values is assumed to be 1.0 - */ -typedef struct png_XYZ -{ - png_fixed_point red_X, red_Y, red_Z; - png_fixed_point green_X, green_Y, green_Z; - png_fixed_point blue_X, blue_Y, blue_Z; -} png_XYZ; -#endif /* COLORSPACE */ - -#if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED) -/* A colorspace is all the above plus, potentially, profile information; - * however at present libpng does not use the profile internally so it is only - * stored in the png_info struct (if iCCP is supported.) The rendering intent - * is retained here and is checked. - * - * The file gamma encoding information is also stored here and gamma correction - * is done by libpng, whereas color correction must currently be done by the - * application. - */ -typedef struct png_colorspace -{ -#ifdef PNG_GAMMA_SUPPORTED - png_fixed_point gamma; /* File gamma */ -#endif - -#ifdef PNG_COLORSPACE_SUPPORTED - png_xy end_points_xy; /* End points as chromaticities */ - png_XYZ end_points_XYZ; /* End points as CIE XYZ colorant values */ - png_uint_16 rendering_intent; /* Rendering intent of a profile */ -#endif - - /* Flags are always defined to simplify the code. */ - png_uint_16 flags; /* As defined below */ -} png_colorspace, * PNG_RESTRICT png_colorspacerp; - -typedef const png_colorspace * PNG_RESTRICT png_const_colorspacerp; - -/* General flags for the 'flags' field */ -#define PNG_COLORSPACE_HAVE_GAMMA 0x0001 -#define PNG_COLORSPACE_HAVE_ENDPOINTS 0x0002 -#define PNG_COLORSPACE_HAVE_INTENT 0x0004 -#define PNG_COLORSPACE_FROM_gAMA 0x0008 -#define PNG_COLORSPACE_FROM_cHRM 0x0010 -#define PNG_COLORSPACE_FROM_sRGB 0x0020 -#define PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB 0x0040 -#define PNG_COLORSPACE_MATCHES_sRGB 0x0080 /* exact match on profile */ -#define PNG_COLORSPACE_INVALID 0x8000 -#define PNG_COLORSPACE_CANCEL(flags) (0xffff ^ (flags)) -#endif /* COLORSPACE || GAMMA */ - -struct png_struct_def -{ -#ifdef PNG_SETJMP_SUPPORTED - jmp_buf jmp_buf_local; /* New name in 1.6.0 for jmp_buf in png_struct */ - png_longjmp_ptr longjmp_fn;/* setjmp non-local goto function. */ - jmp_buf *jmp_buf_ptr; /* passed to longjmp_fn */ - size_t jmp_buf_size; /* size of the above, if allocated */ -#endif - png_error_ptr error_fn; /* function for printing errors and aborting */ -#ifdef PNG_WARNINGS_SUPPORTED - png_error_ptr warning_fn; /* function for printing warnings */ -#endif - png_voidp error_ptr; /* user supplied struct for error functions */ - png_rw_ptr write_data_fn; /* function for writing output data */ - png_rw_ptr read_data_fn; /* function for reading input data */ - png_voidp io_ptr; /* ptr to application struct for I/O functions */ - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr read_user_transform_fn; /* user read transform */ -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr write_user_transform_fn; /* user write transform */ -#endif - -/* These were added in libpng-1.0.2 */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - png_voidp user_transform_ptr; /* user supplied struct for user transform */ - png_byte user_transform_depth; /* bit depth of user transformed pixels */ - png_byte user_transform_channels; /* channels in user transformed pixels */ -#endif -#endif - - png_uint_32 mode; /* tells us where we are in the PNG file */ - png_uint_32 flags; /* flags indicating various things to libpng */ - png_uint_32 transformations; /* which transformations to perform */ - - png_uint_32 zowner; /* ID (chunk type) of zstream owner, 0 if none */ - z_stream zstream; /* decompression structure */ - -#ifdef PNG_WRITE_SUPPORTED - png_compression_bufferp zbuffer_list; /* Created on demand during write */ - uInt zbuffer_size; /* size of the actual buffer */ - - int zlib_level; /* holds zlib compression level */ - int zlib_method; /* holds zlib compression method */ - int zlib_window_bits; /* holds zlib compression window bits */ - int zlib_mem_level; /* holds zlib compression memory level */ - int zlib_strategy; /* holds zlib compression strategy */ -#endif -/* Added at libpng 1.5.4 */ -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED - int zlib_text_level; /* holds zlib compression level */ - int zlib_text_method; /* holds zlib compression method */ - int zlib_text_window_bits; /* holds zlib compression window bits */ - int zlib_text_mem_level; /* holds zlib compression memory level */ - int zlib_text_strategy; /* holds zlib compression strategy */ -#endif -/* End of material added at libpng 1.5.4 */ -/* Added at libpng 1.6.0 */ -#ifdef PNG_WRITE_SUPPORTED - int zlib_set_level; /* Actual values set into the zstream on write */ - int zlib_set_method; - int zlib_set_window_bits; - int zlib_set_mem_level; - int zlib_set_strategy; -#endif - - png_uint_32 width; /* width of image in pixels */ - png_uint_32 height; /* height of image in pixels */ - png_uint_32 num_rows; /* number of rows in current pass */ - png_uint_32 usr_width; /* width of row at start of write */ - png_size_t rowbytes; /* size of row in bytes */ - png_uint_32 iwidth; /* width of current interlaced row in pixels */ - png_uint_32 row_number; /* current row in interlace pass */ - png_uint_32 chunk_name; /* PNG_CHUNK() id of current chunk */ - png_bytep prev_row; /* buffer to save previous (unfiltered) row. - * While reading this is a pointer into - * big_prev_row; while writing it is separately - * allocated if needed. - */ - png_bytep row_buf; /* buffer to save current (unfiltered) row. - * While reading, this is a pointer into - * big_row_buf; while writing it is separately - * allocated. - */ -#ifdef PNG_WRITE_FILTER_SUPPORTED - png_bytep try_row; /* buffer to save trial row when filtering */ - png_bytep tst_row; /* buffer to save best trial row when filtering */ -#endif - png_size_t info_rowbytes; /* Added in 1.5.4: cache of updated row bytes */ - - png_uint_32 idat_size; /* current IDAT size for read */ - png_uint_32 crc; /* current chunk CRC value */ - png_colorp palette; /* palette from the input file */ - png_uint_16 num_palette; /* number of color entries in palette */ - -/* Added at libpng-1.5.10 */ -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED - int num_palette_max; /* maximum palette index found in IDAT */ -#endif - - png_uint_16 num_trans; /* number of transparency values */ - png_byte compression; /* file compression type (always 0) */ - png_byte filter; /* file filter type (always 0) */ - png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ - png_byte pass; /* current interlace pass (0 - 6) */ - png_byte do_filter; /* row filter flags (see PNG_FILTER_ in png.h ) */ - png_byte color_type; /* color type of file */ - png_byte bit_depth; /* bit depth of file */ - png_byte usr_bit_depth; /* bit depth of users row: write only */ - png_byte pixel_depth; /* number of bits per pixel */ - png_byte channels; /* number of channels in file */ -#ifdef PNG_WRITE_SUPPORTED - png_byte usr_channels; /* channels at start of write: write only */ -#endif - png_byte sig_bytes; /* magic bytes read/written from start of file */ - png_byte maximum_pixel_depth; - /* pixel depth used for the row buffers */ - png_byte transformed_pixel_depth; - /* pixel depth after read/write transforms */ -#if ZLIB_VERNUM >= 0x1240 - png_byte zstream_start; /* at start of an input zlib stream */ -#endif /* Zlib >= 1.2.4 */ -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) - png_uint_16 filler; /* filler bytes for pixel expansion */ -#endif - -#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - png_byte background_gamma_type; - png_fixed_point background_gamma; - png_color_16 background; /* background color in screen gamma space */ -#ifdef PNG_READ_GAMMA_SUPPORTED - png_color_16 background_1; /* background normalized to gamma 1.0 */ -#endif -#endif /* bKGD */ - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_flush_ptr output_flush_fn; /* Function for flushing output */ - png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */ - png_uint_32 flush_rows; /* number of rows written since last flush */ -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED - int gamma_shift; /* number of "insignificant" bits in 16-bit gamma */ - png_fixed_point screen_gamma; /* screen gamma value (display_exponent) */ - - png_bytep gamma_table; /* gamma table for 8-bit depth files */ - png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */ -#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) - png_bytep gamma_from_1; /* converts from 1.0 to screen */ - png_bytep gamma_to_1; /* converts from file to 1.0 */ - png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */ - png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */ -#endif /* READ_BACKGROUND || READ_ALPHA_MODE || RGB_TO_GRAY */ -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) - png_color_8 sig_bit; /* significant bits in each available channel */ -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) - png_color_8 shift; /* shift for significant bit tranformation */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ - || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep trans_alpha; /* alpha values for paletted files */ - png_color_16 trans_color; /* transparent color for non-paletted files */ -#endif - - png_read_status_ptr read_row_fn; /* called after each row is decoded */ - png_write_status_ptr write_row_fn; /* called after each row is encoded */ -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_progressive_info_ptr info_fn; /* called after header data fully read */ - png_progressive_row_ptr row_fn; /* called after a prog. row is decoded */ - png_progressive_end_ptr end_fn; /* called after image is complete */ - png_bytep save_buffer_ptr; /* current location in save_buffer */ - png_bytep save_buffer; /* buffer for previously read data */ - png_bytep current_buffer_ptr; /* current location in current_buffer */ - png_bytep current_buffer; /* buffer for recently used data */ - png_uint_32 push_length; /* size of current input chunk */ - png_uint_32 skip_length; /* bytes to skip in input data */ - png_size_t save_buffer_size; /* amount of data now in save_buffer */ - png_size_t save_buffer_max; /* total size of save_buffer */ - png_size_t buffer_size; /* total amount of available input data */ - png_size_t current_buffer_size; /* amount of data now in current_buffer */ - int process_mode; /* what push library is currently doing */ - int cur_palette; /* current push library palette index */ - -#endif /* PROGRESSIVE_READ */ - -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -/* For the Borland special 64K segment handler */ - png_bytepp offset_table_ptr; - png_bytep offset_table; - png_uint_16 offset_table_number; - png_uint_16 offset_table_count; - png_uint_16 offset_table_count_free; -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - png_bytep palette_lookup; /* lookup table for quantizing */ - png_bytep quantize_index; /* index translation for palette files */ -#endif - -/* Options */ -#ifdef PNG_SET_OPTION_SUPPORTED - png_uint_32 options; /* On/off state (up to 16 options) */ -#endif - -#if PNG_LIBPNG_VER < 10700 -/* To do: remove this from libpng-1.7 */ -#ifdef PNG_TIME_RFC1123_SUPPORTED - char time_buffer[29]; /* String to hold RFC 1123 time text */ -#endif -#endif - -/* New members added in libpng-1.0.6 */ - - png_uint_32 free_me; /* flags items libpng is responsible for freeing */ - -#ifdef PNG_USER_CHUNKS_SUPPORTED - png_voidp user_chunk_ptr; -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED - png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */ -#endif -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - int unknown_default; /* As PNG_HANDLE_* */ - unsigned int num_chunk_list; /* Number of entries in the list */ - png_bytep chunk_list; /* List of png_byte[5]; the textual chunk name - * followed by a PNG_HANDLE_* byte */ -#endif - -/* New members added in libpng-1.0.3 */ -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - png_byte rgb_to_gray_status; - /* Added in libpng 1.5.5 to record setting of coefficients: */ - png_byte rgb_to_gray_coefficients_set; - /* These were changed from png_byte in libpng-1.0.6 */ - png_uint_16 rgb_to_gray_red_coeff; - png_uint_16 rgb_to_gray_green_coeff; - /* deleted in 1.5.5: rgb_to_gray_blue_coeff; */ -#endif - -/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ -#if defined(PNG_MNG_FEATURES_SUPPORTED) -/* Changed from png_byte to png_uint_32 at version 1.2.0 */ - png_uint_32 mng_features_permitted; -#endif - -/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_byte filter_type; -#endif - -/* New members added in libpng-1.2.0 */ - -/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ -#ifdef PNG_USER_MEM_SUPPORTED - png_voidp mem_ptr; /* user supplied struct for mem functions */ - png_malloc_ptr malloc_fn; /* function for allocating memory */ - png_free_ptr free_fn; /* function for freeing memory */ -#endif - -/* New member added in libpng-1.0.13 and 1.2.0 */ - png_bytep big_row_buf; /* buffer to save current (unfiltered) row */ - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* The following three members were added at version 1.0.14 and 1.2.4 */ - png_bytep quantize_sort; /* working sort array */ - png_bytep index_to_palette; /* where the original index currently is - in the palette */ - png_bytep palette_to_index; /* which original index points to this - palette color */ -#endif - -/* New members added in libpng-1.0.16 and 1.2.6 */ - png_byte compression_type; - -#ifdef PNG_USER_LIMITS_SUPPORTED - png_uint_32 user_width_max; - png_uint_32 user_height_max; - - /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown - * chunks that can be stored (0 means unlimited). - */ - png_uint_32 user_chunk_cache_max; - - /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk - * can occupy when decompressed. 0 means unlimited. - */ - png_alloc_size_t user_chunk_malloc_max; -#endif - -/* New member added in libpng-1.0.25 and 1.2.17 */ -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED - /* Temporary storage for unknown chunk that the library doesn't recognize, - * used while reading the chunk. - */ - png_unknown_chunk unknown_chunk; -#endif - -/* New member added in libpng-1.2.26 */ - png_size_t old_big_row_buf_size; - -#ifdef PNG_READ_SUPPORTED -/* New member added in libpng-1.2.30 */ - png_bytep read_buffer; /* buffer for reading chunk data */ - png_alloc_size_t read_buffer_size; /* current size of the buffer */ -#endif -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED - uInt IDAT_read_size; /* limit on read buffer size for IDAT */ -#endif - -#ifdef PNG_IO_STATE_SUPPORTED -/* New member added in libpng-1.4.0 */ - png_uint_32 io_state; -#endif - -/* New member added in libpng-1.5.6 */ - png_bytep big_prev_row; - -/* New member added in libpng-1.5.7 */ - void (*read_filter[PNG_FILTER_VALUE_LAST-1])(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row); - -#ifdef PNG_READ_SUPPORTED -#if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED) - png_colorspace colorspace; -#endif -#endif -}; -#endif /* PNGSTRUCT_H */ diff --git a/src/png/libpng/pngtest.c b/src/png/libpng/pngtest.c deleted file mode 100644 index 9d5075791..000000000 --- a/src/png/libpng/pngtest.c +++ /dev/null @@ -1,2156 +0,0 @@ - -/* pngtest.c - a simple test program to test libpng - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This program reads in a PNG image, writes it out again, and then - * compares the two files. If the files are identical, this shows that - * the basic chunk handling, filtering, and (de)compression code is working - * properly. It does not currently test all of the transforms, although - * it probably should. - * - * The program will report "FAIL" in certain legitimate cases: - * 1) when the compression level or filter selection method is changed. - * 2) when the maximum IDAT size (PNG_ZBUF_SIZE in pngconf.h) is not 8192. - * 3) unknown unsafe-to-copy ancillary chunks or unknown critical chunks - * exist in the input file. - * 4) others not listed here... - * In these cases, it is best to check with another tool such as "pngcheck" - * to see what the differences between the two files are. - * - * If a filename is given on the command-line, then this file is used - * for the input, rather than the default "pngtest.png". This allows - * testing a wide variety of files easily. You can also test a number - * of files at once by typing "pngtest -m file1.png file2.png ..." - */ - -#define _POSIX_SOURCE 1 - -#include -#include -#include - -/* Defined so I can write to a file on gui/windowing platforms */ -/* #define STDERR stderr */ -#define STDERR stdout /* For DOS */ - -#include "png.h" - -/* Known chunks that exist in pngtest.png must be supported or pngtest will fail - * simply as a result of re-ordering them. This may be fixed in 1.7 - * - * pngtest allocates a single row buffer for each row and overwrites it, - * therefore if the write side doesn't support the writing of interlaced images - * nothing can be done for an interlaced image (and the code below will fail - * horribly trying to write extra data after writing garbage). - */ -#if defined PNG_READ_SUPPORTED && /* else nothing can be done */\ - defined PNG_READ_bKGD_SUPPORTED &&\ - defined PNG_READ_cHRM_SUPPORTED &&\ - defined PNG_READ_gAMA_SUPPORTED &&\ - defined PNG_READ_oFFs_SUPPORTED &&\ - defined PNG_READ_pCAL_SUPPORTED &&\ - defined PNG_READ_pHYs_SUPPORTED &&\ - defined PNG_READ_sBIT_SUPPORTED &&\ - defined PNG_READ_sCAL_SUPPORTED &&\ - defined PNG_READ_sRGB_SUPPORTED &&\ - defined PNG_READ_sPLT_SUPPORTED &&\ - defined PNG_READ_tEXt_SUPPORTED &&\ - defined PNG_READ_tIME_SUPPORTED &&\ - defined PNG_READ_zTXt_SUPPORTED &&\ - (defined PNG_WRITE_INTERLACING_SUPPORTED || PNG_LIBPNG_VER >= 10700) - -#ifdef PNG_ZLIB_HEADER -# include PNG_ZLIB_HEADER /* defined by pnglibconf.h from 1.7 */ -#else -# include "zlib.h" -#endif - -/* Copied from pngpriv.h but only used in error messages below. */ -#ifndef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 8192 -#endif -#define FCLOSE(file) fclose(file) - -#ifndef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - -/* Makes pngtest verbose so we can find problems. */ -#ifndef PNG_DEBUG -# define PNG_DEBUG 0 -#endif - -#if PNG_DEBUG > 1 -# define pngtest_debug(m) ((void)fprintf(stderr, m "\n")) -# define pngtest_debug1(m,p1) ((void)fprintf(stderr, m "\n", p1)) -# define pngtest_debug2(m,p1,p2) ((void)fprintf(stderr, m "\n", p1, p2)) -#else -# define pngtest_debug(m) ((void)0) -# define pngtest_debug1(m,p1) ((void)0) -# define pngtest_debug2(m,p1,p2) ((void)0) -#endif - -#if !PNG_DEBUG -# define SINGLE_ROWBUF_ALLOC /* Makes buffer overruns easier to nail */ -#endif - -#ifndef PNG_UNUSED -# define PNG_UNUSED(param) (void)param; -#endif - -/* Turn on CPU timing -#define PNGTEST_TIMING -*/ - -#ifndef PNG_FLOATING_POINT_SUPPORTED -#undef PNGTEST_TIMING -#endif - -#ifdef PNGTEST_TIMING -static float t_start, t_stop, t_decode, t_encode, t_misc; -#include -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED -#define PNG_tIME_STRING_LENGTH 29 -static int tIME_chunk_present = 0; -static char tIME_string[PNG_tIME_STRING_LENGTH] = "tIME chunk is not present"; - -#if PNG_LIBPNG_VER < 10619 -#define png_convert_to_rfc1123_buffer(ts, t) tIME_to_str(read_ptr, ts, t) - -static int -tIME_to_str(png_structp png_ptr, png_charp ts, png_const_timep t) -{ - png_const_charp str = png_convert_to_rfc1123(png_ptr, t); - - if (str == NULL) - return 0; - - strcpy(ts, str); - return 1; -} -#endif /* older libpng */ -#endif - -static int verbose = 0; -static int strict = 0; -static int relaxed = 0; -static int xfail = 0; -static int unsupported_chunks = 0; /* chunk unsupported by libpng in input */ -static int error_count = 0; /* count calls to png_error */ -static int warning_count = 0; /* count calls to png_warning */ - -/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */ -#ifndef png_jmpbuf -# define png_jmpbuf(png_ptr) png_ptr->jmpbuf -#endif - -/* Defines for unknown chunk handling if required. */ -#ifndef PNG_HANDLE_CHUNK_ALWAYS -# define PNG_HANDLE_CHUNK_ALWAYS 3 -#endif -#ifndef PNG_HANDLE_CHUNK_IF_SAFE -# define PNG_HANDLE_CHUNK_IF_SAFE 2 -#endif - -/* Utility to save typing/errors, the argument must be a name */ -#define MEMZERO(var) ((void)memset(&var, 0, sizeof var)) - -/* Example of using row callbacks to make a simple progress meter */ -static int status_pass = 1; -static int status_dots_requested = 0; -static int status_dots = 1; - -static void PNGCBAPI -read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass) -{ - if (png_ptr == NULL || row_number > PNG_UINT_31_MAX) - return; - - if (status_pass != pass) - { - fprintf(stdout, "\n Pass %d: ", pass); - status_pass = pass; - status_dots = 31; - } - - status_dots--; - - if (status_dots == 0) - { - fprintf(stdout, "\n "); - status_dots=30; - } - - fprintf(stdout, "r"); -} - -#ifdef PNG_WRITE_SUPPORTED -static void PNGCBAPI -write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass) -{ - if (png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7) - return; - - fprintf(stdout, "w"); -} -#endif - - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -/* Example of using a user transform callback (doesn't do anything at present). - */ -static void PNGCBAPI -read_user_callback(png_structp png_ptr, png_row_infop row_info, png_bytep data) -{ - PNG_UNUSED(png_ptr) - PNG_UNUSED(row_info) - PNG_UNUSED(data) -} -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -/* Example of using user transform callback (we don't transform anything, - * but merely count the zero samples) - */ - -static png_uint_32 zero_samples; - -static void PNGCBAPI -count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data) -{ - png_bytep dp = data; - if (png_ptr == NULL) - return; - - /* Contents of row_info: - * png_uint_32 width width of row - * png_uint_32 rowbytes number of bytes in row - * png_byte color_type color type of pixels - * png_byte bit_depth bit depth of samples - * png_byte channels number of channels (1-4) - * png_byte pixel_depth bits per pixel (depth*channels) - */ - - /* Counts the number of zero samples (or zero pixels if color_type is 3 */ - - if (row_info->color_type == 0 || row_info->color_type == 3) - { - int pos = 0; - png_uint_32 n, nstop; - - for (n = 0, nstop=row_info->width; nbit_depth == 1) - { - if (((*dp << pos++ ) & 0x80) == 0) - zero_samples++; - - if (pos == 8) - { - pos = 0; - dp++; - } - } - - if (row_info->bit_depth == 2) - { - if (((*dp << (pos+=2)) & 0xc0) == 0) - zero_samples++; - - if (pos == 8) - { - pos = 0; - dp++; - } - } - - if (row_info->bit_depth == 4) - { - if (((*dp << (pos+=4)) & 0xf0) == 0) - zero_samples++; - - if (pos == 8) - { - pos = 0; - dp++; - } - } - - if (row_info->bit_depth == 8) - if (*dp++ == 0) - zero_samples++; - - if (row_info->bit_depth == 16) - { - if ((*dp | *(dp+1)) == 0) - zero_samples++; - dp+=2; - } - } - } - else /* Other color types */ - { - png_uint_32 n, nstop; - int channel; - int color_channels = row_info->channels; - if (row_info->color_type > 3) - color_channels--; - - for (n = 0, nstop=row_info->width; nbit_depth == 8) - if (*dp++ == 0) - zero_samples++; - - if (row_info->bit_depth == 16) - { - if ((*dp | *(dp+1)) == 0) - zero_samples++; - - dp+=2; - } - } - if (row_info->color_type > 3) - { - dp++; - if (row_info->bit_depth == 16) - dp++; - } - } - } -} -#endif /* WRITE_USER_TRANSFORM */ - -#ifndef PNG_STDIO_SUPPORTED -/* START of code to validate stdio-free compilation */ -/* These copies of the default read/write functions come from pngrio.c and - * pngwio.c. They allow "don't include stdio" testing of the library. - * This is the function that does the actual reading of data. If you are - * not reading from a standard C stream, you should create a replacement - * read_data function and use it at run time with png_set_read_fn(), rather - * than changing the library. - */ - -#ifdef PNG_IO_STATE_SUPPORTED -void -pngtest_check_io_state(png_structp png_ptr, png_size_t data_length, - png_uint_32 io_op); -void -pngtest_check_io_state(png_structp png_ptr, png_size_t data_length, - png_uint_32 io_op) -{ - png_uint_32 io_state = png_get_io_state(png_ptr); - int err = 0; - - /* Check if the current operation (reading / writing) is as expected. */ - if ((io_state & PNG_IO_MASK_OP) != io_op) - png_error(png_ptr, "Incorrect operation in I/O state"); - - /* Check if the buffer size specific to the current location - * (file signature / header / data / crc) is as expected. - */ - switch (io_state & PNG_IO_MASK_LOC) - { - case PNG_IO_SIGNATURE: - if (data_length > 8) - err = 1; - break; - case PNG_IO_CHUNK_HDR: - if (data_length != 8) - err = 1; - break; - case PNG_IO_CHUNK_DATA: - break; /* no restrictions here */ - case PNG_IO_CHUNK_CRC: - if (data_length != 4) - err = 1; - break; - default: - err = 1; /* uninitialized */ - } - if (err != 0) - png_error(png_ptr, "Bad I/O state or buffer size"); -} -#endif - -static void PNGCBAPI -pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check = 0; - png_voidp io_ptr; - - /* fread() returns 0 on error, so it is OK to store this in a png_size_t - * instead of an int, which is what fread() actually returns. - */ - io_ptr = png_get_io_ptr(png_ptr); - if (io_ptr != NULL) - { - check = fread(data, 1, length, (png_FILE_p)io_ptr); - } - - if (check != length) - { - png_error(png_ptr, "Read Error"); - } - -#ifdef PNG_IO_STATE_SUPPORTED - pngtest_check_io_state(png_ptr, length, PNG_IO_READING); -#endif -} - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -static void PNGCBAPI -pngtest_flush(png_structp png_ptr) -{ - /* Do nothing; fflush() is said to be just a waste of energy. */ - PNG_UNUSED(png_ptr) /* Stifle compiler warning */ -} -#endif - -/* This is the function that does the actual writing of data. If you are - * not writing to a standard C stream, you should create a replacement - * write_data function and use it at run time with png_set_write_fn(), rather - * than changing the library. - */ -static void PNGCBAPI -pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - check = fwrite(data, 1, length, (png_FILE_p)png_get_io_ptr(png_ptr)); - - if (check != length) - { - png_error(png_ptr, "Write Error"); - } - -#ifdef PNG_IO_STATE_SUPPORTED - pngtest_check_io_state(png_ptr, length, PNG_IO_WRITING); -#endif -} -#endif /* !STDIO */ - -/* This function is called when there is a warning, but the library thinks - * it can continue anyway. Replacement functions don't have to do anything - * here if you don't want to. In the default configuration, png_ptr is - * not used, but it is passed in case it may be useful. - */ -typedef struct -{ - PNG_CONST char *file_name; -} pngtest_error_parameters; - -static void PNGCBAPI -pngtest_warning(png_structp png_ptr, png_const_charp message) -{ - PNG_CONST char *name = "UNKNOWN (ERROR!)"; - pngtest_error_parameters *test = - (pngtest_error_parameters*)png_get_error_ptr(png_ptr); - - ++warning_count; - - if (test != NULL && test->file_name != NULL) - name = test->file_name; - - fprintf(STDERR, "\n%s: libpng warning: %s\n", name, message); -} - -/* This is the default error handling function. Note that replacements for - * this function MUST NOT RETURN, or the program will likely crash. This - * function is used by default, or if the program supplies NULL for the - * error function pointer in png_set_error_fn(). - */ -static void PNGCBAPI -pngtest_error(png_structp png_ptr, png_const_charp message) -{ - ++error_count; - - pngtest_warning(png_ptr, message); - /* We can return because png_error calls the default handler, which is - * actually OK in this case. - */ -} - -/* END of code to validate stdio-free compilation */ - -/* START of code to validate memory allocation and deallocation */ -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - -/* Allocate memory. For reasonable files, size should never exceed - * 64K. However, zlib may allocate more than 64K if you don't tell - * it not to. See zconf.h and png.h for more information. zlib does - * need to allocate exactly 64K, so whatever you call here must - * have the ability to do that. - * - * This piece of code can be compiled to validate max 64K allocations - * by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K. - */ -typedef struct memory_information -{ - png_alloc_size_t size; - png_voidp pointer; - struct memory_information *next; -} memory_information; -typedef memory_information *memory_infop; - -static memory_infop pinformation = NULL; -static int current_allocation = 0; -static int maximum_allocation = 0; -static int total_allocation = 0; -static int num_allocations = 0; - -png_voidp PNGCBAPI png_debug_malloc PNGARG((png_structp png_ptr, - png_alloc_size_t size)); -void PNGCBAPI png_debug_free PNGARG((png_structp png_ptr, png_voidp ptr)); - -png_voidp -PNGCBAPI png_debug_malloc(png_structp png_ptr, png_alloc_size_t size) -{ - - /* png_malloc has already tested for NULL; png_create_struct calls - * png_debug_malloc directly, with png_ptr == NULL which is OK - */ - - if (size == 0) - return (NULL); - - /* This calls the library allocator twice, once to get the requested - buffer and once to get a new free list entry. */ - { - /* Disable malloc_fn and free_fn */ - memory_infop pinfo; - png_set_mem_fn(png_ptr, NULL, NULL, NULL); - pinfo = (memory_infop)png_malloc(png_ptr, - (sizeof *pinfo)); - pinfo->size = size; - current_allocation += size; - total_allocation += size; - num_allocations ++; - - if (current_allocation > maximum_allocation) - maximum_allocation = current_allocation; - - pinfo->pointer = png_malloc(png_ptr, size); - /* Restore malloc_fn and free_fn */ - - png_set_mem_fn(png_ptr, - NULL, png_debug_malloc, png_debug_free); - - if (size != 0 && pinfo->pointer == NULL) - { - current_allocation -= size; - total_allocation -= size; - png_error(png_ptr, - "out of memory in pngtest->png_debug_malloc"); - } - - pinfo->next = pinformation; - pinformation = pinfo; - /* Make sure the caller isn't assuming zeroed memory. */ - memset(pinfo->pointer, 0xdd, pinfo->size); - - if (verbose != 0) - printf("png_malloc %lu bytes at %p\n", (unsigned long)size, - pinfo->pointer); - - return (png_voidp)(pinfo->pointer); - } -} - -/* Free a pointer. It is removed from the list at the same time. */ -void PNGCBAPI -png_debug_free(png_structp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL) - fprintf(STDERR, "NULL pointer to png_debug_free.\n"); - - if (ptr == 0) - { -#if 0 /* This happens all the time. */ - fprintf(STDERR, "WARNING: freeing NULL pointer\n"); -#endif - return; - } - - /* Unlink the element from the list. */ - if (pinformation != NULL) - { - memory_infop *ppinfo = &pinformation; - - for (;;) - { - memory_infop pinfo = *ppinfo; - - if (pinfo->pointer == ptr) - { - *ppinfo = pinfo->next; - current_allocation -= pinfo->size; - if (current_allocation < 0) - fprintf(STDERR, "Duplicate free of memory\n"); - /* We must free the list element too, but first kill - the memory that is to be freed. */ - memset(ptr, 0x55, pinfo->size); - free(pinfo); - pinfo = NULL; - break; - } - - if (pinfo->next == NULL) - { - fprintf(STDERR, "Pointer %p not found\n", ptr); - break; - } - - ppinfo = &pinfo->next; - } - } - - /* Finally free the data. */ - if (verbose != 0) - printf("Freeing %p\n", ptr); - - if (ptr != NULL) - free(ptr); - ptr = NULL; -} -#endif /* USER_MEM && DEBUG */ -/* END of code to test memory allocation/deallocation */ - - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -/* Demonstration of user chunk support of the sTER and vpAg chunks */ - -/* (sTER is a public chunk not yet known by libpng. vpAg is a private -chunk used in ImageMagick to store "virtual page" size). */ - -static struct user_chunk_data -{ - png_const_infop info_ptr; - png_uint_32 vpAg_width, vpAg_height; - png_byte vpAg_units; - png_byte sTER_mode; - int location[2]; -} -user_chunk_data; - -/* Used for location and order; zero means nothing. */ -#define have_sTER 0x01 -#define have_vpAg 0x02 -#define before_PLTE 0x10 -#define before_IDAT 0x20 -#define after_IDAT 0x40 - -static void -init_callback_info(png_const_infop info_ptr) -{ - MEMZERO(user_chunk_data); - user_chunk_data.info_ptr = info_ptr; -} - -static int -set_location(png_structp png_ptr, struct user_chunk_data *data, int what) -{ - int location; - - if ((data->location[0] & what) != 0 || (data->location[1] & what) != 0) - return 0; /* already have one of these */ - - /* Find where we are (the code below zeroes info_ptr to indicate that the - * chunks before the first IDAT have been read.) - */ - if (data->info_ptr == NULL) /* after IDAT */ - location = what | after_IDAT; - - else if (png_get_valid(png_ptr, data->info_ptr, PNG_INFO_PLTE) != 0) - location = what | before_IDAT; - - else - location = what | before_PLTE; - - if (data->location[0] == 0) - data->location[0] = location; - - else - data->location[1] = location; - - return 1; /* handled */ -} - -static int PNGCBAPI -read_user_chunk_callback(png_struct *png_ptr, png_unknown_chunkp chunk) -{ - struct user_chunk_data *my_user_chunk_data = - (struct user_chunk_data*)png_get_user_chunk_ptr(png_ptr); - - if (my_user_chunk_data == NULL) - png_error(png_ptr, "lost user chunk pointer"); - - /* Return one of the following: - * return (-n); chunk had an error - * return (0); did not recognize - * return (n); success - * - * The unknown chunk structure contains the chunk data: - * png_byte name[5]; - * png_byte *data; - * png_size_t size; - * - * Note that libpng has already taken care of the CRC handling. - */ - - if (chunk->name[0] == 115 && chunk->name[1] == 84 && /* s T */ - chunk->name[2] == 69 && chunk->name[3] == 82) /* E R */ - { - /* Found sTER chunk */ - if (chunk->size != 1) - return (-1); /* Error return */ - - if (chunk->data[0] != 0 && chunk->data[0] != 1) - return (-1); /* Invalid mode */ - - if (set_location(png_ptr, my_user_chunk_data, have_sTER) != 0) - { - my_user_chunk_data->sTER_mode=chunk->data[0]; - return (1); - } - - else - return (0); /* duplicate sTER - give it to libpng */ - } - - if (chunk->name[0] != 118 || chunk->name[1] != 112 || /* v p */ - chunk->name[2] != 65 || chunk->name[3] != 103) /* A g */ - return (0); /* Did not recognize */ - - /* Found ImageMagick vpAg chunk */ - - if (chunk->size != 9) - return (-1); /* Error return */ - - if (set_location(png_ptr, my_user_chunk_data, have_vpAg) == 0) - return (0); /* duplicate vpAg */ - - my_user_chunk_data->vpAg_width = png_get_uint_31(png_ptr, chunk->data); - my_user_chunk_data->vpAg_height = png_get_uint_31(png_ptr, chunk->data + 4); - my_user_chunk_data->vpAg_units = chunk->data[8]; - - return (1); -} - -#ifdef PNG_WRITE_SUPPORTED -static void -write_sTER_chunk(png_structp write_ptr) -{ - png_byte sTER[5] = {115, 84, 69, 82, '\0'}; - - if (verbose != 0) - fprintf(STDERR, "\n stereo mode = %d\n", user_chunk_data.sTER_mode); - - png_write_chunk(write_ptr, sTER, &user_chunk_data.sTER_mode, 1); -} - -static void -write_vpAg_chunk(png_structp write_ptr) -{ - png_byte vpAg[5] = {118, 112, 65, 103, '\0'}; - - png_byte vpag_chunk_data[9]; - - if (verbose != 0) - fprintf(STDERR, " vpAg = %lu x %lu, units = %d\n", - (unsigned long)user_chunk_data.vpAg_width, - (unsigned long)user_chunk_data.vpAg_height, - user_chunk_data.vpAg_units); - - png_save_uint_32(vpag_chunk_data, user_chunk_data.vpAg_width); - png_save_uint_32(vpag_chunk_data + 4, user_chunk_data.vpAg_height); - vpag_chunk_data[8] = user_chunk_data.vpAg_units; - png_write_chunk(write_ptr, vpAg, vpag_chunk_data, 9); -} - -static void -write_chunks(png_structp write_ptr, int location) -{ - int i; - - /* Notice that this preserves the original chunk order, however chunks - * intercepted by the callback will be written *after* chunks passed to - * libpng. This will actually reverse a pair of sTER chunks or a pair of - * vpAg chunks, resulting in an error later. This is not worth worrying - * about - the chunks should not be duplicated! - */ - for (i=0; i<2; ++i) - { - if (user_chunk_data.location[i] == (location | have_sTER)) - write_sTER_chunk(write_ptr); - - else if (user_chunk_data.location[i] == (location | have_vpAg)) - write_vpAg_chunk(write_ptr); - } -} -#endif /* WRITE */ -#else /* !READ_USER_CHUNKS */ -# define write_chunks(pp,loc) ((void)0) -#endif -/* END of code to demonstrate user chunk support */ - -/* START of code to check that libpng has the required text support; this only - * checks for the write support because if read support is missing the chunk - * will simply not be reported back to pngtest. - */ -#ifdef PNG_TEXT_SUPPORTED -static void -pngtest_check_text_support(png_structp png_ptr, png_textp text_ptr, - int num_text) -{ - while (num_text > 0) - { - switch (text_ptr[--num_text].compression) - { - case PNG_TEXT_COMPRESSION_NONE: - break; - - case PNG_TEXT_COMPRESSION_zTXt: -# ifndef PNG_WRITE_zTXt_SUPPORTED - ++unsupported_chunks; - /* In libpng 1.7 this now does an app-error, so stop it: */ - text_ptr[num_text].compression = PNG_TEXT_COMPRESSION_NONE; -# endif - break; - - case PNG_ITXT_COMPRESSION_NONE: - case PNG_ITXT_COMPRESSION_zTXt: -# ifndef PNG_WRITE_iTXt_SUPPORTED - ++unsupported_chunks; - text_ptr[num_text].compression = PNG_TEXT_COMPRESSION_NONE; -# endif - break; - - default: - /* This is an error */ - png_error(png_ptr, "invalid text chunk compression field"); - break; - } - } -} -#endif -/* END of code to check that libpng has the required text support */ - -/* Test one file */ -static int -test_one_file(PNG_CONST char *inname, PNG_CONST char *outname) -{ - static png_FILE_p fpin; - static png_FILE_p fpout; /* "static" prevents setjmp corruption */ - pngtest_error_parameters error_parameters; - png_structp read_ptr; - png_infop read_info_ptr, end_info_ptr; -#ifdef PNG_WRITE_SUPPORTED - png_structp write_ptr; - png_infop write_info_ptr; - png_infop write_end_info_ptr; -#ifdef PNG_WRITE_FILTER_SUPPORTED - int interlace_preserved = 1; -#endif /* WRITE_FILTER */ -#else /* !WRITE */ - png_structp write_ptr = NULL; - png_infop write_info_ptr = NULL; - png_infop write_end_info_ptr = NULL; -#endif /* !WRITE */ - png_bytep row_buf; - png_uint_32 y; - png_uint_32 width, height; - volatile int num_passes; - int pass; - int bit_depth, color_type; - - row_buf = NULL; - error_parameters.file_name = inname; - - if ((fpin = fopen(inname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find input file %s\n", inname); - return (1); - } - - if ((fpout = fopen(outname, "wb")) == NULL) - { - fprintf(STDERR, "Could not open output file %s\n", outname); - FCLOSE(fpin); - return (1); - } - - pngtest_debug("Allocating read and write structures"); -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - read_ptr = - png_create_read_struct_2(PNG_LIBPNG_VER_STRING, NULL, - NULL, NULL, NULL, png_debug_malloc, png_debug_free); -#else - read_ptr = - png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); -#endif - png_set_error_fn(read_ptr, &error_parameters, pngtest_error, - pngtest_warning); - -#ifdef PNG_WRITE_SUPPORTED -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - write_ptr = - png_create_write_struct_2(PNG_LIBPNG_VER_STRING, NULL, - NULL, NULL, NULL, png_debug_malloc, png_debug_free); -#else - write_ptr = - png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); -#endif - png_set_error_fn(write_ptr, &error_parameters, pngtest_error, - pngtest_warning); -#endif - pngtest_debug("Allocating read_info, write_info and end_info structures"); - read_info_ptr = png_create_info_struct(read_ptr); - end_info_ptr = png_create_info_struct(read_ptr); -#ifdef PNG_WRITE_SUPPORTED - write_info_ptr = png_create_info_struct(write_ptr); - write_end_info_ptr = png_create_info_struct(write_ptr); -#endif - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED - init_callback_info(read_info_ptr); - png_set_read_user_chunk_fn(read_ptr, &user_chunk_data, - read_user_chunk_callback); -#endif - -#ifdef PNG_SETJMP_SUPPORTED - pngtest_debug("Setting jmpbuf for read struct"); - if (setjmp(png_jmpbuf(read_ptr))) - { - fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname); - png_free(read_ptr, row_buf); - row_buf = NULL; - if (verbose != 0) - fprintf(STDERR, " destroy read structs\n"); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); -#ifdef PNG_WRITE_SUPPORTED - if (verbose != 0) - fprintf(STDERR, " destroy write structs\n"); - png_destroy_info_struct(write_ptr, &write_end_info_ptr); - png_destroy_write_struct(&write_ptr, &write_info_ptr); -#endif - FCLOSE(fpin); - FCLOSE(fpout); - return (1); - } - -#ifdef PNG_WRITE_SUPPORTED - pngtest_debug("Setting jmpbuf for write struct"); - - if (setjmp(png_jmpbuf(write_ptr))) - { - fprintf(STDERR, "%s -> %s: libpng write error\n", inname, outname); - if (verbose != 0) - fprintf(STDERR, " destroying read structs\n"); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); - if (verbose != 0) - fprintf(STDERR, " destroying write structs\n"); - png_destroy_info_struct(write_ptr, &write_end_info_ptr); - png_destroy_write_struct(&write_ptr, &write_info_ptr); - FCLOSE(fpin); - FCLOSE(fpout); - return (1); - } -#endif -#endif - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED - if (strict != 0) - { - /* Treat png_benign_error() as errors on read */ - png_set_benign_errors(read_ptr, 0); - -# ifdef PNG_WRITE_SUPPORTED - /* Treat them as errors on write */ - png_set_benign_errors(write_ptr, 0); -# endif - - /* if strict is not set, then app warnings and errors are treated as - * warnings in release builds, but not in unstable builds; this can be - * changed with '--relaxed'. - */ - } - - else if (relaxed != 0) - { - /* Allow application (pngtest) errors and warnings to pass */ - png_set_benign_errors(read_ptr, 1); - - /* Turn off CRC checking while reading */ - png_set_crc_action(read_ptr, PNG_CRC_QUIET_USE, PNG_CRC_QUIET_USE); - -#ifdef PNG_IGNORE_ADLER32 - /* Turn off ADLER32 checking while reading */ - png_set_option(read_ptr, PNG_IGNORE_ADLER32, PNG_OPTION_ON); -#endif - -# ifdef PNG_WRITE_SUPPORTED - png_set_benign_errors(write_ptr, 1); -# endif - - } -#endif /* BENIGN_ERRORS */ - - pngtest_debug("Initializing input and output streams"); -#ifdef PNG_STDIO_SUPPORTED - png_init_io(read_ptr, fpin); -# ifdef PNG_WRITE_SUPPORTED - png_init_io(write_ptr, fpout); -# endif -#else - png_set_read_fn(read_ptr, (png_voidp)fpin, pngtest_read_data); -# ifdef PNG_WRITE_SUPPORTED - png_set_write_fn(write_ptr, (png_voidp)fpout, pngtest_write_data, -# ifdef PNG_WRITE_FLUSH_SUPPORTED - pngtest_flush); -# else - NULL); -# endif -# endif -#endif - - if (status_dots_requested == 1) - { -#ifdef PNG_WRITE_SUPPORTED - png_set_write_status_fn(write_ptr, write_row_callback); -#endif - png_set_read_status_fn(read_ptr, read_row_callback); - } - - else - { -#ifdef PNG_WRITE_SUPPORTED - png_set_write_status_fn(write_ptr, NULL); -#endif - png_set_read_status_fn(read_ptr, NULL); - } - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_set_read_user_transform_fn(read_ptr, read_user_callback); -#endif -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - zero_samples = 0; - png_set_write_user_transform_fn(write_ptr, count_zero_samples); -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - /* Preserve all the unknown chunks, if possible. If this is disabled then, - * even if the png_{get,set}_unknown_chunks stuff is enabled, we can't use - * libpng to *save* the unknown chunks on read (because we can't switch the - * save option on!) - * - * Notice that if SET_UNKNOWN_CHUNKS is *not* supported read will discard all - * unknown chunks and write will write them all. - */ -#ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - png_set_keep_unknown_chunks(read_ptr, PNG_HANDLE_CHUNK_ALWAYS, - NULL, 0); -#endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_ALWAYS, - NULL, 0); -#endif -#endif - - pngtest_debug("Reading info struct"); - png_read_info(read_ptr, read_info_ptr); - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED - /* This is a bit of a hack; there is no obvious way in the callback function - * to determine that the chunks before the first IDAT have been read, so - * remove the info_ptr (which is only used to determine position relative to - * PLTE) here to indicate that we are after the IDAT. - */ - user_chunk_data.info_ptr = NULL; -#endif - - pngtest_debug("Transferring info struct"); - { - int interlace_type, compression_type, filter_type; - - if (png_get_IHDR(read_ptr, read_info_ptr, &width, &height, &bit_depth, - &color_type, &interlace_type, &compression_type, &filter_type) != 0) - { - png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth, - color_type, interlace_type, compression_type, filter_type); - /* num_passes may not be available below if interlace support is not - * provided by libpng for both read and write. - */ - switch (interlace_type) - { - case PNG_INTERLACE_NONE: - num_passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - num_passes = 7; - break; - - default: - png_error(read_ptr, "invalid interlace type"); - /*NOT REACHED*/ - } - } - - else - png_error(read_ptr, "png_get_IHDR failed"); - } -#ifdef PNG_FIXED_POINT_SUPPORTED -#ifdef PNG_cHRM_SUPPORTED - { - png_fixed_point white_x, white_y, red_x, red_y, green_x, green_y, blue_x, - blue_y; - - if (png_get_cHRM_fixed(read_ptr, read_info_ptr, &white_x, &white_y, - &red_x, &red_y, &green_x, &green_y, &blue_x, &blue_y) != 0) - { - png_set_cHRM_fixed(write_ptr, write_info_ptr, white_x, white_y, red_x, - red_y, green_x, green_y, blue_x, blue_y); - } - } -#endif -#ifdef PNG_gAMA_SUPPORTED - { - png_fixed_point gamma; - - if (png_get_gAMA_fixed(read_ptr, read_info_ptr, &gamma) != 0) - png_set_gAMA_fixed(write_ptr, write_info_ptr, gamma); - } -#endif -#else /* Use floating point versions */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -#ifdef PNG_cHRM_SUPPORTED - { - double white_x, white_y, red_x, red_y, green_x, green_y, blue_x, - blue_y; - - if (png_get_cHRM(read_ptr, read_info_ptr, &white_x, &white_y, &red_x, - &red_y, &green_x, &green_y, &blue_x, &blue_y) != 0) - { - png_set_cHRM(write_ptr, write_info_ptr, white_x, white_y, red_x, - red_y, green_x, green_y, blue_x, blue_y); - } - } -#endif -#ifdef PNG_gAMA_SUPPORTED - { - double gamma; - - if (png_get_gAMA(read_ptr, read_info_ptr, &gamma) != 0) - png_set_gAMA(write_ptr, write_info_ptr, gamma); - } -#endif -#endif /* Floating point */ -#endif /* Fixed point */ -#ifdef PNG_iCCP_SUPPORTED - { - png_charp name; - png_bytep profile; - png_uint_32 proflen; - int compression_type; - - if (png_get_iCCP(read_ptr, read_info_ptr, &name, &compression_type, - &profile, &proflen) != 0) - { - png_set_iCCP(write_ptr, write_info_ptr, name, compression_type, - profile, proflen); - } - } -#endif -#ifdef PNG_sRGB_SUPPORTED - { - int intent; - - if (png_get_sRGB(read_ptr, read_info_ptr, &intent) != 0) - png_set_sRGB(write_ptr, write_info_ptr, intent); - } -#endif - { - png_colorp palette; - int num_palette; - - if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette) != 0) - png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette); - } -#ifdef PNG_bKGD_SUPPORTED - { - png_color_16p background; - - if (png_get_bKGD(read_ptr, read_info_ptr, &background) != 0) - { - png_set_bKGD(write_ptr, write_info_ptr, background); - } - } -#endif -#ifdef PNG_READ_eXIf_SUPPORTED - { - png_bytep exif=NULL; - png_uint_32 exif_length; - - if (png_get_eXIf_1(read_ptr, read_info_ptr, &exif_length, &exif) != 0) - { - if (exif_length > 1) - fprintf(STDERR," eXIf type %c%c, %lu bytes\n",exif[0],exif[1], - (unsigned long)exif_length); -# ifdef PNG_WRITE_eXIf_SUPPORTED - png_set_eXIf_1(write_ptr, write_info_ptr, exif_length, exif); -# endif - } - } -#endif -#ifdef PNG_hIST_SUPPORTED - { - png_uint_16p hist; - - if (png_get_hIST(read_ptr, read_info_ptr, &hist) != 0) - png_set_hIST(write_ptr, write_info_ptr, hist); - } -#endif -#ifdef PNG_oFFs_SUPPORTED - { - png_int_32 offset_x, offset_y; - int unit_type; - - if (png_get_oFFs(read_ptr, read_info_ptr, &offset_x, &offset_y, - &unit_type) != 0) - { - png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type); - } - } -#endif -#ifdef PNG_pCAL_SUPPORTED - { - png_charp purpose, units; - png_charpp params; - png_int_32 X0, X1; - int type, nparams; - - if (png_get_pCAL(read_ptr, read_info_ptr, &purpose, &X0, &X1, &type, - &nparams, &units, ¶ms) != 0) - { - png_set_pCAL(write_ptr, write_info_ptr, purpose, X0, X1, type, - nparams, units, params); - } - } -#endif -#ifdef PNG_pHYs_SUPPORTED - { - png_uint_32 res_x, res_y; - int unit_type; - - if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, - &unit_type) != 0) - png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type); - } -#endif -#ifdef PNG_sBIT_SUPPORTED - { - png_color_8p sig_bit; - - if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit) != 0) - png_set_sBIT(write_ptr, write_info_ptr, sig_bit); - } -#endif -#ifdef PNG_sCAL_SUPPORTED -#if defined(PNG_FLOATING_POINT_SUPPORTED) && \ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) - { - int unit; - double scal_width, scal_height; - - if (png_get_sCAL(read_ptr, read_info_ptr, &unit, &scal_width, - &scal_height) != 0) - { - png_set_sCAL(write_ptr, write_info_ptr, unit, scal_width, scal_height); - } - } -#else -#ifdef PNG_FIXED_POINT_SUPPORTED - { - int unit; - png_charp scal_width, scal_height; - - if (png_get_sCAL_s(read_ptr, read_info_ptr, &unit, &scal_width, - &scal_height) != 0) - { - png_set_sCAL_s(write_ptr, write_info_ptr, unit, scal_width, - scal_height); - } - } -#endif -#endif -#endif - -#ifdef PNG_sPLT_SUPPORTED - { - png_sPLT_tp entries; - - int num_entries = (int) png_get_sPLT(read_ptr, read_info_ptr, &entries); - if (num_entries) - { - png_set_sPLT(write_ptr, write_info_ptr, entries, num_entries); - } - } -#endif - -#ifdef PNG_TEXT_SUPPORTED - { - png_textp text_ptr; - int num_text; - - if (png_get_text(read_ptr, read_info_ptr, &text_ptr, &num_text) > 0) - { - pngtest_debug1("Handling %d iTXt/tEXt/zTXt chunks", num_text); - - pngtest_check_text_support(read_ptr, text_ptr, num_text); - - if (verbose != 0) - { - int i; - - fprintf(STDERR,"\n"); - for (i=0; igray > sample_max) || - (color_type == PNG_COLOR_TYPE_RGB && - ((int)trans_color->red > sample_max || - (int)trans_color->green > sample_max || - (int)trans_color->blue > sample_max)))) - png_set_tRNS(write_ptr, write_info_ptr, trans_alpha, num_trans, - trans_color); - } - } -#endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - { - png_unknown_chunkp unknowns; - int num_unknowns = png_get_unknown_chunks(read_ptr, read_info_ptr, - &unknowns); - - if (num_unknowns != 0) - { - png_set_unknown_chunks(write_ptr, write_info_ptr, unknowns, - num_unknowns); -#if PNG_LIBPNG_VER < 10600 - /* Copy the locations from the read_info_ptr. The automatically - * generated locations in write_end_info_ptr are wrong prior to 1.6.0 - * because they are reset from the write pointer (removed in 1.6.0). - */ - { - int i; - for (i = 0; i < num_unknowns; i++) - png_set_unknown_chunk_location(write_ptr, write_info_ptr, i, - unknowns[i].location); - } -#endif - } - } -#endif - -#ifdef PNG_WRITE_SUPPORTED - pngtest_debug("Writing info struct"); - - /* Write the info in two steps so that if we write the 'unknown' chunks here - * they go to the correct place. - */ - png_write_info_before_PLTE(write_ptr, write_info_ptr); - - write_chunks(write_ptr, before_PLTE); /* before PLTE */ - - png_write_info(write_ptr, write_info_ptr); - - write_chunks(write_ptr, before_IDAT); /* after PLTE */ - - png_write_info(write_ptr, write_end_info_ptr); - - write_chunks(write_ptr, after_IDAT); /* after IDAT */ - -#ifdef PNG_COMPRESSION_COMPAT - /* Test the 'compatibility' setting here, if it is available. */ - png_set_compression(write_ptr, PNG_COMPRESSION_COMPAT); -#endif -#endif - -#ifdef SINGLE_ROWBUF_ALLOC - pngtest_debug("Allocating row buffer..."); - row_buf = (png_bytep)png_malloc(read_ptr, - png_get_rowbytes(read_ptr, read_info_ptr)); - - pngtest_debug1("\t0x%08lx", (unsigned long)row_buf); -#endif /* SINGLE_ROWBUF_ALLOC */ - pngtest_debug("Writing row data"); - -#if defined(PNG_READ_INTERLACING_SUPPORTED) &&\ - defined(PNG_WRITE_INTERLACING_SUPPORTED) - /* Both must be defined for libpng to be able to handle the interlace, - * otherwise it gets handled below by simply reading and writing the passes - * directly. - */ - if (png_set_interlace_handling(read_ptr) != num_passes) - png_error(write_ptr, - "png_set_interlace_handling(read): wrong pass count "); - if (png_set_interlace_handling(write_ptr) != num_passes) - png_error(write_ptr, - "png_set_interlace_handling(write): wrong pass count "); -#else /* png_set_interlace_handling not called on either read or write */ -# define calc_pass_height -#endif /* not using libpng interlace handling */ - -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_misc += (t_stop - t_start); - t_start = t_stop; -#endif - for (pass = 0; pass < num_passes; pass++) - { -# ifdef calc_pass_height - png_uint_32 pass_height; - - if (num_passes == 7) /* interlaced */ - { - if (PNG_PASS_COLS(width, pass) > 0) - pass_height = PNG_PASS_ROWS(height, pass); - - else - pass_height = 0; - } - - else /* not interlaced */ - pass_height = height; -# else -# define pass_height height -# endif - - pngtest_debug1("Writing row data for pass %d", pass); - for (y = 0; y < pass_height; y++) - { -#ifndef SINGLE_ROWBUF_ALLOC - pngtest_debug2("Allocating row buffer (pass %d, y = %u)...", pass, y); - - row_buf = (png_bytep)png_malloc(read_ptr, - png_get_rowbytes(read_ptr, read_info_ptr)); - - pngtest_debug2("\t0x%08lx (%lu bytes)", (unsigned long)row_buf, - (unsigned long)png_get_rowbytes(read_ptr, read_info_ptr)); - -#endif /* !SINGLE_ROWBUF_ALLOC */ - png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1); - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_decode += (t_stop - t_start); - t_start = t_stop; -#endif - png_write_rows(write_ptr, (png_bytepp)&row_buf, 1); -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_encode += (t_stop - t_start); - t_start = t_stop; -#endif -#endif /* WRITE */ - -#ifndef SINGLE_ROWBUF_ALLOC - pngtest_debug2("Freeing row buffer (pass %d, y = %u)", pass, y); - png_free(read_ptr, row_buf); - row_buf = NULL; -#endif /* !SINGLE_ROWBUF_ALLOC */ - } - } - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -# ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED - png_free_data(read_ptr, read_info_ptr, PNG_FREE_UNKN, -1); -# endif -# ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - png_free_data(write_ptr, write_info_ptr, PNG_FREE_UNKN, -1); -# endif -#endif - - pngtest_debug("Reading and writing end_info data"); - - png_read_end(read_ptr, end_info_ptr); -#ifdef PNG_TEXT_SUPPORTED - { - png_textp text_ptr; - int num_text; - - if (png_get_text(read_ptr, end_info_ptr, &text_ptr, &num_text) > 0) - { - pngtest_debug1("Handling %d iTXt/tEXt/zTXt chunks", num_text); - - pngtest_check_text_support(read_ptr, text_ptr, num_text); - - if (verbose != 0) - { - int i; - - fprintf(STDERR,"\n"); - for (i=0; i 1) - fprintf(STDERR," eXIf type %c%c, %lu bytes\n",exif[0],exif[1], - (unsigned long)exif_length); -# ifdef PNG_WRITE_eXIf_SUPPORTED - png_set_eXIf_1(write_ptr, write_end_info_ptr, exif_length, exif); -# endif - } - } -#endif -#ifdef PNG_tIME_SUPPORTED - { - png_timep mod_time; - - if (png_get_tIME(read_ptr, end_info_ptr, &mod_time) != 0) - { - png_set_tIME(write_ptr, write_end_info_ptr, mod_time); -#ifdef PNG_TIME_RFC1123_SUPPORTED - if (png_convert_to_rfc1123_buffer(tIME_string, mod_time) != 0) - tIME_string[(sizeof tIME_string) - 1] = '\0'; - - else - { - strncpy(tIME_string, "*** invalid time ***", sizeof tIME_string); - tIME_string[(sizeof tIME_string)-1] = '\0'; - } - - tIME_chunk_present++; -#endif /* TIME_RFC1123 */ - } - } -#endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - { - png_unknown_chunkp unknowns; - int num_unknowns = png_get_unknown_chunks(read_ptr, end_info_ptr, - &unknowns); - - if (num_unknowns != 0) - { - png_set_unknown_chunks(write_ptr, write_end_info_ptr, unknowns, - num_unknowns); -#if PNG_LIBPNG_VER < 10600 - /* Copy the locations from the read_info_ptr. The automatically - * generated locations in write_end_info_ptr are wrong prior to 1.6.0 - * because they are reset from the write pointer (removed in 1.6.0). - */ - { - int i; - for (i = 0; i < num_unknowns; i++) - png_set_unknown_chunk_location(write_ptr, write_end_info_ptr, i, - unknowns[i].location); - } -#endif - } - } -#endif - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED - /* Normally one would use Z_DEFAULT_STRATEGY for text compression. - * This is here just to make pngtest replicate the results from libpng - * versions prior to 1.5.4, and to test this new API. - */ - png_set_text_compression_strategy(write_ptr, Z_FILTERED); -#endif - - /* When the unknown vpAg/sTER chunks are written by pngtest the only way to - * do it is to write them *before* calling png_write_end. When unknown - * chunks are written by libpng, however, they are written just before IEND. - * There seems to be no way round this, however vpAg/sTER are not expected - * after IDAT. - */ - write_chunks(write_ptr, after_IDAT); - - png_write_end(write_ptr, write_end_info_ptr); -#endif - -#ifdef PNG_EASY_ACCESS_SUPPORTED - if (verbose != 0) - { - png_uint_32 iwidth, iheight; - iwidth = png_get_image_width(write_ptr, write_info_ptr); - iheight = png_get_image_height(write_ptr, write_info_ptr); - fprintf(STDERR, "\n Image width = %lu, height = %lu\n", - (unsigned long)iwidth, (unsigned long)iheight); - } -#endif - - pngtest_debug("Destroying data structs"); -#ifdef SINGLE_ROWBUF_ALLOC - pngtest_debug("destroying row_buf for read_ptr"); - png_free(read_ptr, row_buf); - row_buf = NULL; -#endif /* SINGLE_ROWBUF_ALLOC */ - pngtest_debug("destroying read_ptr, read_info_ptr, end_info_ptr"); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); -#ifdef PNG_WRITE_SUPPORTED - pngtest_debug("destroying write_end_info_ptr"); - png_destroy_info_struct(write_ptr, &write_end_info_ptr); - pngtest_debug("destroying write_ptr, write_info_ptr"); - png_destroy_write_struct(&write_ptr, &write_info_ptr); -#endif - pngtest_debug("Destruction complete."); - - FCLOSE(fpin); - FCLOSE(fpout); - - /* Summarize any warnings or errors and in 'strict' mode fail the test. - * Unsupported chunks can result in warnings, in that case ignore the strict - * setting, otherwise fail the test on warnings as well as errors. - */ - if (error_count > 0) - { - /* We don't really expect to get here because of the setjmp handling - * above, but this is safe. - */ - fprintf(STDERR, "\n %s: %d libpng errors found (%d warnings)", - inname, error_count, warning_count); - - if (strict != 0) - return (1); - } - -# ifdef PNG_WRITE_SUPPORTED - /* If there is no write support nothing was written! */ - else if (unsupported_chunks > 0) - { - fprintf(STDERR, "\n %s: unsupported chunks (%d)%s", - inname, unsupported_chunks, strict ? ": IGNORED --strict!" : ""); - } -# endif - - else if (warning_count > 0) - { - fprintf(STDERR, "\n %s: %d libpng warnings found", - inname, warning_count); - - if (strict != 0) - return (1); - } - - pngtest_debug("Opening files for comparison"); - if ((fpin = fopen(inname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find file %s\n", inname); - return (1); - } - - if ((fpout = fopen(outname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find file %s\n", outname); - FCLOSE(fpin); - return (1); - } - -#if defined (PNG_WRITE_SUPPORTED) /* else nothing was written */ &&\ - defined (PNG_WRITE_FILTER_SUPPORTED) - if (interlace_preserved != 0) /* else the files will be changed */ - { - for (;;) - { - static int wrote_question = 0; - png_size_t num_in, num_out; - char inbuf[256], outbuf[256]; - - num_in = fread(inbuf, 1, sizeof inbuf, fpin); - num_out = fread(outbuf, 1, sizeof outbuf, fpout); - - if (num_in != num_out) - { - fprintf(STDERR, "\nFiles %s and %s are of a different size\n", - inname, outname); - - if (wrote_question == 0 && unsupported_chunks == 0) - { - fprintf(STDERR, - " Was %s written with the same maximum IDAT" - " chunk size (%d bytes),", - inname, PNG_ZBUF_SIZE); - fprintf(STDERR, - "\n filtering heuristic (libpng default), compression"); - fprintf(STDERR, - " level (zlib default),\n and zlib version (%s)?\n\n", - ZLIB_VERSION); - wrote_question = 1; - } - - FCLOSE(fpin); - FCLOSE(fpout); - - if (strict != 0 && unsupported_chunks == 0) - return (1); - - else - return (0); - } - - if (num_in == 0) - break; - - if (memcmp(inbuf, outbuf, num_in)) - { - fprintf(STDERR, "\nFiles %s and %s are different\n", inname, - outname); - - if (wrote_question == 0 && unsupported_chunks == 0) - { - fprintf(STDERR, - " Was %s written with the same maximum" - " IDAT chunk size (%d bytes),", - inname, PNG_ZBUF_SIZE); - fprintf(STDERR, - "\n filtering heuristic (libpng default), compression"); - fprintf(STDERR, - " level (zlib default),\n and zlib version (%s)?\n\n", - ZLIB_VERSION); - wrote_question = 1; - } - - FCLOSE(fpin); - FCLOSE(fpout); - - /* NOTE: the unsupported_chunks escape is permitted here because - * unsupported text chunk compression will result in the compression - * mode being changed (to NONE) yet, in the test case, the result - * can be exactly the same size! - */ - if (strict != 0 && unsupported_chunks == 0) - return (1); - - else - return (0); - } - } - } -#endif /* WRITE && WRITE_FILTER */ - - FCLOSE(fpin); - FCLOSE(fpout); - - return (0); -} - -/* Input and output filenames */ -#ifdef RISCOS -static PNG_CONST char *inname = "pngtest/png"; -static PNG_CONST char *outname = "pngout/png"; -#else -static PNG_CONST char *inname = "pngtest.png"; -static PNG_CONST char *outname = "pngout.png"; -#endif - -int -main(int argc, char *argv[]) -{ - int multiple = 0; - int ierror = 0; - - png_structp dummy_ptr; - - fprintf(STDERR, "\n Testing libpng version %s\n", PNG_LIBPNG_VER_STRING); - fprintf(STDERR, " with zlib version %s\n", ZLIB_VERSION); - fprintf(STDERR, "%s", png_get_copyright(NULL)); - /* Show the version of libpng used in building the library */ - fprintf(STDERR, " library (%lu):%s", - (unsigned long)png_access_version_number(), - png_get_header_version(NULL)); - - /* Show the version of libpng used in building the application */ - fprintf(STDERR, " pngtest (%lu):%s", (unsigned long)PNG_LIBPNG_VER, - PNG_HEADER_VERSION_STRING); - - /* Do some consistency checking on the memory allocation settings, I'm - * not sure this matters, but it is nice to know, the first of these - * tests should be impossible because of the way the macros are set - * in pngconf.h - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) - fprintf(STDERR, " NOTE: Zlib compiled for max 64k, libpng not\n"); -#endif - /* I think the following can happen. */ -#if !defined(MAXSEG_64K) && defined(PNG_MAX_MALLOC_64K) - fprintf(STDERR, " NOTE: libpng compiled for max 64k, zlib not\n"); -#endif - - if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING)) - { - fprintf(STDERR, - "Warning: versions are different between png.h and png.c\n"); - fprintf(STDERR, " png.h version: %s\n", PNG_LIBPNG_VER_STRING); - fprintf(STDERR, " png.c version: %s\n\n", png_libpng_ver); - ++ierror; - } - - if (argc > 1) - { - if (strcmp(argv[1], "-m") == 0) - { - multiple = 1; - status_dots_requested = 0; - } - - else if (strcmp(argv[1], "-mv") == 0 || - strcmp(argv[1], "-vm") == 0 ) - { - multiple = 1; - verbose = 1; - status_dots_requested = 1; - } - - else if (strcmp(argv[1], "-v") == 0) - { - verbose = 1; - status_dots_requested = 1; - inname = argv[2]; - } - - else if (strcmp(argv[1], "--strict") == 0) - { - status_dots_requested = 0; - verbose = 1; - inname = argv[2]; - strict++; - relaxed = 0; - multiple=1; - } - - else if (strcmp(argv[1], "--relaxed") == 0) - { - status_dots_requested = 0; - verbose = 1; - inname = argv[2]; - strict = 0; - relaxed++; - multiple=1; - } - else if (strcmp(argv[1], "--xfail") == 0) - { - status_dots_requested = 0; - verbose = 1; - inname = argv[2]; - strict = 0; - xfail++; - relaxed++; - multiple=1; - } - - else - { - inname = argv[1]; - status_dots_requested = 0; - } - } - - if (multiple == 0 && argc == 3 + verbose) - outname = argv[2 + verbose]; - - if ((multiple == 0 && argc > 3 + verbose) || - (multiple != 0 && argc < 2)) - { - fprintf(STDERR, - "usage: %s [infile.png] [outfile.png]\n\t%s -m {infile.png}\n", - argv[0], argv[0]); - fprintf(STDERR, - " reads/writes one PNG file (without -m) or multiple files (-m)\n"); - fprintf(STDERR, - " with -m %s is used as a temporary file\n", outname); - exit(1); - } - - if (multiple != 0) - { - int i; -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - int allocation_now = current_allocation; -#endif - for (i=2; i 0 - fprintf(STDERR, "\n"); -#endif - kerror = test_one_file(argv[i], outname); - if (kerror == 0) - { -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - fprintf(STDERR, "\n PASS (%lu zero samples)\n", - (unsigned long)zero_samples); -#else - fprintf(STDERR, " PASS\n"); -#endif -#ifdef PNG_TIME_RFC1123_SUPPORTED - if (tIME_chunk_present != 0) - fprintf(STDERR, " tIME = %s\n", tIME_string); - - tIME_chunk_present = 0; -#endif /* TIME_RFC1123 */ - } - - else - { - if (xfail) - fprintf(STDERR, " XFAIL\n"); - else - { - fprintf(STDERR, " FAIL\n"); - ierror += kerror; - } - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - if (allocation_now != current_allocation) - fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n", - current_allocation - allocation_now); - - if (current_allocation != 0) - { - memory_infop pinfo = pinformation; - - fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n", - current_allocation); - - while (pinfo != NULL) - { - fprintf(STDERR, " %lu bytes at %p\n", - (unsigned long)pinfo->size, - pinfo->pointer); - pinfo = pinfo->next; - } - } -#endif - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - fprintf(STDERR, " Current memory allocation: %10d bytes\n", - current_allocation); - fprintf(STDERR, " Maximum memory allocation: %10d bytes\n", - maximum_allocation); - fprintf(STDERR, " Total memory allocation: %10d bytes\n", - total_allocation); - fprintf(STDERR, " Number of allocations: %10d\n", - num_allocations); -#endif - } - - else - { - int i; - for (i = 0; i<3; ++i) - { - int kerror; -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - int allocation_now = current_allocation; -#endif - if (i == 1) - status_dots_requested = 1; - - else if (verbose == 0) - status_dots_requested = 0; - - if (i == 0 || verbose == 1 || ierror != 0) - { - fprintf(STDERR, "\n Testing %s:", inname); -#if PNG_DEBUG > 0 - fprintf(STDERR, "\n"); -#endif - } - - kerror = test_one_file(inname, outname); - - if (kerror == 0) - { - if (verbose == 1 || i == 2) - { -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - fprintf(STDERR, "\n PASS (%lu zero samples)\n", - (unsigned long)zero_samples); -#else - fprintf(STDERR, " PASS\n"); -#endif -#ifdef PNG_TIME_RFC1123_SUPPORTED - if (tIME_chunk_present != 0) - fprintf(STDERR, " tIME = %s\n", tIME_string); -#endif /* TIME_RFC1123 */ - } - } - - else - { - if (verbose == 0 && i != 2) - { - fprintf(STDERR, "\n Testing %s:", inname); -#if PNG_DEBUG > 0 - fprintf(STDERR, "\n"); -#endif - } - - if (xfail) - fprintf(STDERR, " XFAIL\n"); - else - { - fprintf(STDERR, " FAIL\n"); - ierror += kerror; - } - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - if (allocation_now != current_allocation) - fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n", - current_allocation - allocation_now); - - if (current_allocation != 0) - { - memory_infop pinfo = pinformation; - - fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n", - current_allocation); - - while (pinfo != NULL) - { - fprintf(STDERR, " %lu bytes at %p\n", - (unsigned long)pinfo->size, pinfo->pointer); - pinfo = pinfo->next; - } - } -#endif - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - fprintf(STDERR, " Current memory allocation: %10d bytes\n", - current_allocation); - fprintf(STDERR, " Maximum memory allocation: %10d bytes\n", - maximum_allocation); - fprintf(STDERR, " Total memory allocation: %10d bytes\n", - total_allocation); - fprintf(STDERR, " Number of allocations: %10d\n", - num_allocations); -#endif - } - -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_misc += (t_stop - t_start); - t_start = t_stop; - fprintf(STDERR, " CPU time used = %.3f seconds", - (t_misc+t_decode+t_encode)/(float)CLOCKS_PER_SEC); - fprintf(STDERR, " (decoding %.3f,\n", - t_decode/(float)CLOCKS_PER_SEC); - fprintf(STDERR, " encoding %.3f ,", - t_encode/(float)CLOCKS_PER_SEC); - fprintf(STDERR, " other %.3f seconds)\n\n", - t_misc/(float)CLOCKS_PER_SEC); -#endif - - if (ierror == 0) - fprintf(STDERR, " libpng passes test\n"); - - else - fprintf(STDERR, " libpng FAILS test\n"); - - dummy_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - fprintf(STDERR, " Default limits:\n"); - fprintf(STDERR, " width_max = %lu\n", - (unsigned long) png_get_user_width_max(dummy_ptr)); - fprintf(STDERR, " height_max = %lu\n", - (unsigned long) png_get_user_height_max(dummy_ptr)); - if (png_get_chunk_cache_max(dummy_ptr) == 0) - fprintf(STDERR, " cache_max = unlimited\n"); - else - fprintf(STDERR, " cache_max = %lu\n", - (unsigned long) png_get_chunk_cache_max(dummy_ptr)); - if (png_get_chunk_malloc_max(dummy_ptr) == 0) - fprintf(STDERR, " malloc_max = unlimited\n"); - else - fprintf(STDERR, " malloc_max = %lu\n", - (unsigned long) png_get_chunk_malloc_max(dummy_ptr)); - png_destroy_read_struct(&dummy_ptr, NULL, NULL); - - return (int)(ierror != 0); -} -#else -int -main(void) -{ - fprintf(STDERR, - " test ignored because libpng was not built with read support\n"); - /* And skip this test */ - return PNG_LIBPNG_VER < 10600 ? 0 : 77; -} -#endif - -/* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_34 Your_png_h_is_not_version_1_6_34; diff --git a/src/png/libpng/pngtrans.c b/src/png/libpng/pngtrans.c deleted file mode 100644 index 6882f0fd7..000000000 --- a/src/png/libpng/pngtrans.c +++ /dev/null @@ -1,864 +0,0 @@ - -/* pngtrans.c - transforms the data in a row (used by both readers and writers) - * - * Last changed in libpng 1.6.33 [September 28, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Turn on BGR-to-RGB mapping */ -void PNGAPI -png_set_bgr(png_structrp png_ptr) -{ - png_debug(1, "in png_set_bgr"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_BGR; -} -#endif - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Turn on 16-bit byte swapping */ -void PNGAPI -png_set_swap(png_structrp png_ptr) -{ - png_debug(1, "in png_set_swap"); - - if (png_ptr == NULL) - return; - - if (png_ptr->bit_depth == 16) - png_ptr->transformations |= PNG_SWAP_BYTES; -} -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* Turn on pixel packing */ -void PNGAPI -png_set_packing(png_structrp png_ptr) -{ - png_debug(1, "in png_set_packing"); - - if (png_ptr == NULL) - return; - - if (png_ptr->bit_depth < 8) - { - png_ptr->transformations |= PNG_PACK; -# ifdef PNG_WRITE_SUPPORTED - png_ptr->usr_bit_depth = 8; -# endif - } -} -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* Turn on packed pixel swapping */ -void PNGAPI -png_set_packswap(png_structrp png_ptr) -{ - png_debug(1, "in png_set_packswap"); - - if (png_ptr == NULL) - return; - - if (png_ptr->bit_depth < 8) - png_ptr->transformations |= PNG_PACKSWAP; -} -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -void PNGAPI -png_set_shift(png_structrp png_ptr, png_const_color_8p true_bits) -{ - png_debug(1, "in png_set_shift"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_SHIFT; - png_ptr->shift = *true_bits; -} -#endif - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -int PNGAPI -png_set_interlace_handling(png_structrp png_ptr) -{ - png_debug(1, "in png_set_interlace handling"); - - if (png_ptr != 0 && png_ptr->interlaced != 0) - { - png_ptr->transformations |= PNG_INTERLACE; - return (7); - } - - return (1); -} -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte on read, or remove a filler or alpha byte on write. - * The filler type has changed in v0.95 to allow future 2-byte fillers - * for 48-bit input data, as well as to avoid problems with some compilers - * that don't like bytes as parameters. - */ -void PNGAPI -png_set_filler(png_structrp png_ptr, png_uint_32 filler, int filler_loc) -{ - png_debug(1, "in png_set_filler"); - - if (png_ptr == NULL) - return; - - /* In libpng 1.6 it is possible to determine whether this is a read or write - * operation and therefore to do more checking here for a valid call. - */ - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0) - { -# ifdef PNG_READ_FILLER_SUPPORTED - /* On read png_set_filler is always valid, regardless of the base PNG - * format, because other transformations can give a format where the - * filler code can execute (basically an 8 or 16-bit component RGB or G - * format.) - * - * NOTE: usr_channels is not used by the read code! (This has led to - * confusion in the past.) The filler is only used in the read code. - */ - png_ptr->filler = (png_uint_16)filler; -# else - png_app_error(png_ptr, "png_set_filler not supported on read"); - PNG_UNUSED(filler) /* not used in the write case */ - return; -# endif - } - - else /* write */ - { -# ifdef PNG_WRITE_FILLER_SUPPORTED - /* On write the usr_channels parameter must be set correctly at the - * start to record the number of channels in the app-supplied data. - */ - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_RGB: - png_ptr->usr_channels = 4; - break; - - case PNG_COLOR_TYPE_GRAY: - if (png_ptr->bit_depth >= 8) - { - png_ptr->usr_channels = 2; - break; - } - - else - { - /* There simply isn't any code in libpng to strip out bits - * from bytes when the components are less than a byte in - * size! - */ - png_app_error(png_ptr, - "png_set_filler is invalid for" - " low bit depth gray output"); - return; - } - - default: - png_app_error(png_ptr, - "png_set_filler: inappropriate color type"); - return; - } -# else - png_app_error(png_ptr, "png_set_filler not supported on write"); - return; -# endif - } - - /* Here on success - libpng supports the operation, set the transformation - * and the flag to say where the filler channel is. - */ - png_ptr->transformations |= PNG_FILLER; - - if (filler_loc == PNG_FILLER_AFTER) - png_ptr->flags |= PNG_FLAG_FILLER_AFTER; - - else - png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER; -} - -/* Added to libpng-1.2.7 */ -void PNGAPI -png_set_add_alpha(png_structrp png_ptr, png_uint_32 filler, int filler_loc) -{ - png_debug(1, "in png_set_add_alpha"); - - if (png_ptr == NULL) - return; - - png_set_filler(png_ptr, filler, filler_loc); - /* The above may fail to do anything. */ - if ((png_ptr->transformations & PNG_FILLER) != 0) - png_ptr->transformations |= PNG_ADD_ALPHA; -} - -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -void PNGAPI -png_set_swap_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_swap_alpha"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_SWAP_ALPHA; -} -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -void PNGAPI -png_set_invert_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_invert_alpha"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_INVERT_ALPHA; -} -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -void PNGAPI -png_set_invert_mono(png_structrp png_ptr) -{ - png_debug(1, "in png_set_invert_mono"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_INVERT_MONO; -} - -/* Invert monochrome grayscale data */ -void /* PRIVATE */ -png_do_invert(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_invert"); - - /* This test removed from libpng version 1.0.13 and 1.2.0: - * if (row_info->bit_depth == 1 && - */ - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - png_bytep rp = row; - png_size_t i; - png_size_t istop = row_info->rowbytes; - - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(~(*rp)); - rp++; - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && - row_info->bit_depth == 8) - { - png_bytep rp = row; - png_size_t i; - png_size_t istop = row_info->rowbytes; - - for (i = 0; i < istop; i += 2) - { - *rp = (png_byte)(~(*rp)); - rp += 2; - } - } - -#ifdef PNG_16BIT_SUPPORTED - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && - row_info->bit_depth == 16) - { - png_bytep rp = row; - png_size_t i; - png_size_t istop = row_info->rowbytes; - - for (i = 0; i < istop; i += 4) - { - *rp = (png_byte)(~(*rp)); - *(rp + 1) = (png_byte)(~(*(rp + 1))); - rp += 4; - } - } -#endif -} -#endif - -#ifdef PNG_16BIT_SUPPORTED -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Swaps byte order on 16-bit depth images */ -void /* PRIVATE */ -png_do_swap(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_swap"); - - if (row_info->bit_depth == 16) - { - png_bytep rp = row; - png_uint_32 i; - png_uint_32 istop= row_info->width * row_info->channels; - - for (i = 0; i < istop; i++, rp += 2) - { -#ifdef PNG_BUILTIN_BSWAP16_SUPPORTED - /* Feature added to libpng-1.6.11 for testing purposes, not - * enabled by default. - */ - *(png_uint_16*)rp = __builtin_bswap16(*(png_uint_16*)rp); -#else - png_byte t = *rp; - *rp = *(rp + 1); - *(rp + 1) = t; -#endif - } - } -} -#endif -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) -static PNG_CONST png_byte onebppswaptable[256] = { - 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, - 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, - 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, - 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, - 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, - 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, - 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, - 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, - 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, - 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, - 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, - 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, - 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, - 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, - 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, - 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, - 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, - 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, - 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, - 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, - 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, - 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, - 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, - 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, - 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, - 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, - 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, - 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, - 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, - 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, - 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, - 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF -}; - -static PNG_CONST png_byte twobppswaptable[256] = { - 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0, - 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0, - 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4, - 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4, - 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8, - 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, - 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC, - 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC, - 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1, - 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1, - 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5, - 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5, - 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9, - 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9, - 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD, - 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD, - 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2, - 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2, - 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6, - 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6, - 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA, - 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA, - 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE, - 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE, - 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3, - 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3, - 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7, - 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7, - 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB, - 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, - 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF, - 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF -}; - -static PNG_CONST png_byte fourbppswaptable[256] = { - 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, - 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, - 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, - 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1, - 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, - 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2, - 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73, - 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3, - 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74, - 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, - 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75, - 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5, - 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, - 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6, - 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, - 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, - 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, - 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, - 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79, - 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, - 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A, - 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA, - 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, - 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB, - 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, - 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, - 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D, - 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, - 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, - 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE, - 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, - 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF -}; - -/* Swaps pixel packing order within bytes */ -void /* PRIVATE */ -png_do_packswap(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_packswap"); - - if (row_info->bit_depth < 8) - { - png_bytep rp; - png_const_bytep end, table; - - end = row + row_info->rowbytes; - - if (row_info->bit_depth == 1) - table = onebppswaptable; - - else if (row_info->bit_depth == 2) - table = twobppswaptable; - - else if (row_info->bit_depth == 4) - table = fourbppswaptable; - - else - return; - - for (rp = row; rp < end; rp++) - *rp = table[*rp]; - } -} -#endif /* PACKSWAP || WRITE_PACKSWAP */ - -#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ - defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -/* Remove a channel - this used to be 'png_do_strip_filler' but it used a - * somewhat weird combination of flags to determine what to do. All the calls - * to png_do_strip_filler are changed in 1.5.2 to call this instead with the - * correct arguments. - * - * The routine isn't general - the channel must be the channel at the start or - * end (not in the middle) of each pixel. - */ -void /* PRIVATE */ -png_do_strip_channel(png_row_infop row_info, png_bytep row, int at_start) -{ - png_bytep sp = row; /* source pointer */ - png_bytep dp = row; /* destination pointer */ - png_bytep ep = row + row_info->rowbytes; /* One beyond end of row */ - - /* At the start sp will point to the first byte to copy and dp to where - * it is copied to. ep always points just beyond the end of the row, so - * the loop simply copies (channels-1) channels until sp reaches ep. - * - * at_start: 0 -- convert AG, XG, ARGB, XRGB, AAGG, XXGG, etc. - * nonzero -- convert GA, GX, RGBA, RGBX, GGAA, RRGGBBXX, etc. - */ - - /* GA, GX, XG cases */ - if (row_info->channels == 2) - { - if (row_info->bit_depth == 8) - { - if (at_start != 0) /* Skip initial filler */ - ++sp; - else /* Skip initial channel and, for sp, the filler */ - { - sp += 2; ++dp; - } - - /* For a 1 pixel wide image there is nothing to do */ - while (sp < ep) - { - *dp++ = *sp; sp += 2; - } - - row_info->pixel_depth = 8; - } - - else if (row_info->bit_depth == 16) - { - if (at_start != 0) /* Skip initial filler */ - sp += 2; - else /* Skip initial channel and, for sp, the filler */ - { - sp += 4; dp += 2; - } - - while (sp < ep) - { - *dp++ = *sp++; *dp++ = *sp; sp += 3; - } - - row_info->pixel_depth = 16; - } - - else - return; /* bad bit depth */ - - row_info->channels = 1; - - /* Finally fix the color type if it records an alpha channel */ - if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - row_info->color_type = PNG_COLOR_TYPE_GRAY; - } - - /* RGBA, RGBX, XRGB cases */ - else if (row_info->channels == 4) - { - if (row_info->bit_depth == 8) - { - if (at_start != 0) /* Skip initial filler */ - ++sp; - else /* Skip initial channels and, for sp, the filler */ - { - sp += 4; dp += 3; - } - - /* Note that the loop adds 3 to dp and 4 to sp each time. */ - while (sp < ep) - { - *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp; sp += 2; - } - - row_info->pixel_depth = 24; - } - - else if (row_info->bit_depth == 16) - { - if (at_start != 0) /* Skip initial filler */ - sp += 2; - else /* Skip initial channels and, for sp, the filler */ - { - sp += 8; dp += 6; - } - - while (sp < ep) - { - /* Copy 6 bytes, skip 2 */ - *dp++ = *sp++; *dp++ = *sp++; - *dp++ = *sp++; *dp++ = *sp++; - *dp++ = *sp++; *dp++ = *sp; sp += 3; - } - - row_info->pixel_depth = 48; - } - - else - return; /* bad bit depth */ - - row_info->channels = 3; - - /* Finally fix the color type if it records an alpha channel */ - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - row_info->color_type = PNG_COLOR_TYPE_RGB; - } - - else - return; /* The filler channel has gone already */ - - /* Fix the rowbytes value. */ - row_info->rowbytes = (png_size_t)(dp-row); -} -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Swaps red and blue bytes within a pixel */ -void /* PRIVATE */ -png_do_bgr(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_bgr"); - - if ((row_info->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - png_uint_32 row_width = row_info->width; - if (row_info->bit_depth == 8) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 3) - { - png_byte save = *rp; - *rp = *(rp + 2); - *(rp + 2) = save; - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 4) - { - png_byte save = *rp; - *rp = *(rp + 2); - *(rp + 2) = save; - } - } - } - -#ifdef PNG_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 6) - { - png_byte save = *rp; - *rp = *(rp + 4); - *(rp + 4) = save; - save = *(rp + 1); - *(rp + 1) = *(rp + 5); - *(rp + 5) = save; - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 8) - { - png_byte save = *rp; - *rp = *(rp + 4); - *(rp + 4) = save; - save = *(rp + 1); - *(rp + 1) = *(rp + 5); - *(rp + 5) = save; - } - } - } -#endif - } -} -#endif /* READ_BGR || WRITE_BGR */ - -#if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ - defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) -/* Added at libpng-1.5.10 */ -void /* PRIVATE */ -png_do_check_palette_indexes(png_structrp png_ptr, png_row_infop row_info) -{ - if (png_ptr->num_palette < (1 << row_info->bit_depth) && - png_ptr->num_palette > 0) /* num_palette can be 0 in MNG files */ - { - /* Calculations moved outside switch in an attempt to stop different - * compiler warnings. 'padding' is in *bits* within the last byte, it is - * an 'int' because pixel_depth becomes an 'int' in the expression below, - * and this calculation is used because it avoids warnings that other - * forms produced on either GCC or MSVC. - */ - int padding = PNG_PADBITS(row_info->pixel_depth, row_info->width); - png_bytep rp = png_ptr->row_buf + row_info->rowbytes - 1; - - switch (row_info->bit_depth) - { - case 1: - { - /* in this case, all bytes must be 0 so we don't need - * to unpack the pixels except for the rightmost one. - */ - for (; rp > png_ptr->row_buf; rp--) - { - if ((*rp >> padding) != 0) - png_ptr->num_palette_max = 1; - padding = 0; - } - - break; - } - - case 2: - { - for (; rp > png_ptr->row_buf; rp--) - { - int i = ((*rp >> padding) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 2) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 4) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 6) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - padding = 0; - } - - break; - } - - case 4: - { - for (; rp > png_ptr->row_buf; rp--) - { - int i = ((*rp >> padding) & 0x0f); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 4) & 0x0f); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - padding = 0; - } - - break; - } - - case 8: - { - for (; rp > png_ptr->row_buf; rp--) - { - if (*rp > png_ptr->num_palette_max) - png_ptr->num_palette_max = (int) *rp; - } - - break; - } - - default: - break; - } - } -} -#endif /* CHECK_FOR_INVALID_INDEX */ - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -void PNGAPI -png_set_user_transform_info(png_structrp png_ptr, png_voidp - user_transform_ptr, int user_transform_depth, int user_transform_channels) -{ - png_debug(1, "in png_set_user_transform_info"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - (png_ptr->flags & PNG_FLAG_ROW_INIT) != 0) - { - png_app_error(png_ptr, - "info change after png_start_read_image or png_read_update_info"); - return; - } -#endif - - png_ptr->user_transform_ptr = user_transform_ptr; - png_ptr->user_transform_depth = (png_byte)user_transform_depth; - png_ptr->user_transform_channels = (png_byte)user_transform_channels; -} -#endif - -/* This function returns a pointer to the user_transform_ptr associated with - * the user transform functions. The application should free any memory - * associated with this pointer before png_write_destroy and png_read_destroy - * are called. - */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -png_voidp PNGAPI -png_get_user_transform_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return (NULL); - - return png_ptr->user_transform_ptr; -} -#endif - -#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED -png_uint_32 PNGAPI -png_get_current_row_number(png_const_structrp png_ptr) -{ - /* See the comments in png.h - this is the sub-image row when reading an - * interlaced image. - */ - if (png_ptr != NULL) - return png_ptr->row_number; - - return PNG_UINT_32_MAX; /* help the app not to fail silently */ -} - -png_byte PNGAPI -png_get_current_pass_number(png_const_structrp png_ptr) -{ - if (png_ptr != NULL) - return png_ptr->pass; - return 8; /* invalid */ -} -#endif /* USER_TRANSFORM_INFO */ -#endif /* READ_USER_TRANSFORM || WRITE_USER_TRANSFORM */ -#endif /* READ || WRITE */ diff --git a/src/png/libpng/pngusr.dfa b/src/png/libpng/pngusr.dfa deleted file mode 100644 index 83067c38c..000000000 --- a/src/png/libpng/pngusr.dfa +++ /dev/null @@ -1,14 +0,0 @@ -# pngusr.dfa -# -# Build time configuration of libpng -# -# Enter build configuration options in this file -# -# Security settings: by default these limits are unset, you can change them -# here by entering the appropriate values as #defines preceded by '@' (to cause, -# them to be passed through to the build of pnglibconf.h), for example: -# -# @# define PNG_USER_WIDTH_MAX 65535 -# @# define PNG_USER_HEIGHT_MAX 65535 -# @# define PNG_USER_CHUNK_CACHE_MAX 256 -# @# define PNG_USER_CHUNK_MALLOC_MAX 640000 diff --git a/src/png/libpng/pngwio.c b/src/png/libpng/pngwio.c deleted file mode 100644 index 37c7c3a7f..000000000 --- a/src/png/libpng/pngwio.c +++ /dev/null @@ -1,168 +0,0 @@ - -/* pngwio.c - functions for data output - * - * Last changed in libpng 1.6.24 [August 4, 2016] - * Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all output. Users who need - * special handling are expected to write functions that have the same - * arguments as these and perform similar functions, but that possibly - * use different output methods. Note that you shouldn't change these - * functions, but rather write replacement functions and then change - * them at run time with png_set_write_fn(...). - */ - -#include "pngpriv.h" - -#ifdef PNG_WRITE_SUPPORTED - -/* Write the data to whatever output you are using. The default routine - * writes to a file pointer. Note that this routine sometimes gets called - * with very small lengths, so you should implement some kind of simple - * buffering if you are using unbuffered writes. This should never be asked - * to write more than 64K on a 16-bit machine. - */ - -void /* PRIVATE */ -png_write_data(png_structrp png_ptr, png_const_bytep data, png_size_t length) -{ - /* NOTE: write_data_fn must not change the buffer! */ - if (png_ptr->write_data_fn != NULL ) - (*(png_ptr->write_data_fn))(png_ptr, png_constcast(png_bytep,data), - length); - - else - png_error(png_ptr, "Call to NULL write function"); -} - -#ifdef PNG_STDIO_SUPPORTED -/* This is the function that does the actual writing of data. If you are - * not writing to a standard C stream, you should create a replacement - * write_data function and use it at run time with png_set_write_fn(), rather - * than changing the library. - */ -void PNGCBAPI -png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - if (png_ptr == NULL) - return; - - check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); - - if (check != length) - png_error(png_ptr, "Write Error"); -} -#endif - -/* This function is called to output any data pending writing (normally - * to disk). After png_flush is called, there should be no data pending - * writing in any buffers. - */ -#ifdef PNG_WRITE_FLUSH_SUPPORTED -void /* PRIVATE */ -png_flush(png_structrp png_ptr) -{ - if (png_ptr->output_flush_fn != NULL) - (*(png_ptr->output_flush_fn))(png_ptr); -} - -# ifdef PNG_STDIO_SUPPORTED -void PNGCBAPI -png_default_flush(png_structp png_ptr) -{ - png_FILE_p io_ptr; - - if (png_ptr == NULL) - return; - - io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr)); - fflush(io_ptr); -} -# endif -#endif - -/* This function allows the application to supply new output functions for - * libpng if standard C streams aren't being used. - * - * This function takes as its arguments: - * png_ptr - pointer to a png output data structure - * io_ptr - pointer to user supplied structure containing info about - * the output functions. May be NULL. - * write_data_fn - pointer to a new output function that takes as its - * arguments a pointer to a png_struct, a pointer to - * data to be written, and a 32-bit unsigned int that is - * the number of bytes to be written. The new write - * function should call png_error(png_ptr, "Error msg") - * to exit and output any fatal error messages. May be - * NULL, in which case libpng's default function will - * be used. - * flush_data_fn - pointer to a new flush function that takes as its - * arguments a pointer to a png_struct. After a call to - * the flush function, there should be no data in any buffers - * or pending transmission. If the output method doesn't do - * any buffering of output, a function prototype must still be - * supplied although it doesn't have to do anything. If - * PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile - * time, output_flush_fn will be ignored, although it must be - * supplied for compatibility. May be NULL, in which case - * libpng's default function will be used, if - * PNG_WRITE_FLUSH_SUPPORTED is defined. This is not - * a good idea if io_ptr does not point to a standard - * *FILE structure. - */ -void PNGAPI -png_set_write_fn(png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->io_ptr = io_ptr; - -#ifdef PNG_STDIO_SUPPORTED - if (write_data_fn != NULL) - png_ptr->write_data_fn = write_data_fn; - - else - png_ptr->write_data_fn = png_default_write_data; -#else - png_ptr->write_data_fn = write_data_fn; -#endif - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -# ifdef PNG_STDIO_SUPPORTED - - if (output_flush_fn != NULL) - png_ptr->output_flush_fn = output_flush_fn; - - else - png_ptr->output_flush_fn = png_default_flush; - -# else - png_ptr->output_flush_fn = output_flush_fn; -# endif -#else - PNG_UNUSED(output_flush_fn) -#endif /* WRITE_FLUSH */ - -#ifdef PNG_READ_SUPPORTED - /* It is an error to read while writing a png file */ - if (png_ptr->read_data_fn != NULL) - { - png_ptr->read_data_fn = NULL; - - png_warning(png_ptr, - "Can't set both read_data_fn and write_data_fn in the" - " same structure"); - } -#endif -} -#endif /* WRITE */ diff --git a/src/png/libpng/pngwrite.c b/src/png/libpng/pngwrite.c deleted file mode 100644 index a16d77ce0..000000000 --- a/src/png/libpng/pngwrite.c +++ /dev/null @@ -1,2396 +0,0 @@ - -/* pngwrite.c - general routines to write a PNG file - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" -#ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -# include -#endif /* SIMPLIFIED_WRITE_STDIO */ - -#ifdef PNG_WRITE_SUPPORTED - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -/* Write out all the unknown chunks for the current given location */ -static void -write_unknown_chunks(png_structrp png_ptr, png_const_inforp info_ptr, - unsigned int where) -{ - if (info_ptr->unknown_chunks_num != 0) - { - png_const_unknown_chunkp up; - - png_debug(5, "writing extra chunks"); - - for (up = info_ptr->unknown_chunks; - up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num; - ++up) - if ((up->location & where) != 0) - { - /* If per-chunk unknown chunk handling is enabled use it, otherwise - * just write the chunks the application has set. - */ -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - int keep = png_handle_as_unknown(png_ptr, up->name); - - /* NOTE: this code is radically different from the read side in the - * matter of handling an ancillary unknown chunk. In the read side - * the default behavior is to discard it, in the code below the default - * behavior is to write it. Critical chunks are, however, only - * written if explicitly listed or if the default is set to write all - * unknown chunks. - * - * The default handling is also slightly weird - it is not possible to - * stop the writing of all unsafe-to-copy chunks! - * - * TODO: REVIEW: this would seem to be a bug. - */ - if (keep != PNG_HANDLE_CHUNK_NEVER && - ((up->name[3] & 0x20) /* safe-to-copy overrides everything */ || - keep == PNG_HANDLE_CHUNK_ALWAYS || - (keep == PNG_HANDLE_CHUNK_AS_DEFAULT && - png_ptr->unknown_default == PNG_HANDLE_CHUNK_ALWAYS))) -#endif - { - /* TODO: review, what is wrong with a zero length unknown chunk? */ - if (up->size == 0) - png_warning(png_ptr, "Writing zero-length unknown chunk"); - - png_write_chunk(png_ptr, up->name, up->data, up->size); - } - } - } -} -#endif /* WRITE_UNKNOWN_CHUNKS */ - -/* Writes all the PNG information. This is the suggested way to use the - * library. If you have a new chunk to add, make a function to write it, - * and put it in the correct location here. If you want the chunk written - * after the image data, put it in png_write_end(). I strongly encourage - * you to supply a PNG_INFO_ flag, and check info_ptr->valid before writing - * the chunk, as that will keep the code from breaking if you want to just - * write a plain PNG file. If you have long comments, I suggest writing - * them in png_write_end(), and compressing them. - */ -void PNGAPI -png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) -{ - png_debug(1, "in png_write_info_before_PLTE"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if ((png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE) == 0) - { - /* Write PNG signature */ - png_write_sig(png_ptr); - -#ifdef PNG_MNG_FEATURES_SUPPORTED - if ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) != 0 && \ - png_ptr->mng_features_permitted != 0) - { - png_warning(png_ptr, - "MNG features are not allowed in a PNG datastream"); - png_ptr->mng_features_permitted = 0; - } -#endif - - /* Write IHDR information. */ - png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type, - info_ptr->filter_type, -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - info_ptr->interlace_type -#else - 0 -#endif - ); - - /* The rest of these check to see if the valid field has the appropriate - * flag set, and if it does, writes the chunk. - * - * 1.6.0: COLORSPACE support controls the writing of these chunks too, and - * the chunks will be written if the WRITE routine is there and - * information * is available in the COLORSPACE. (See - * png_colorspace_sync_info in png.c for where the valid flags get set.) - * - * Under certain circumstances the colorspace can be invalidated without - * syncing the info_struct 'valid' flags; this happens if libpng detects - * an error and calls png_error while the color space is being set, yet - * the application continues writing the PNG. So check the 'invalid' - * flag here too. - */ -#ifdef PNG_GAMMA_SUPPORTED -# ifdef PNG_WRITE_gAMA_SUPPORTED - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && - (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_gAMA) != 0 && - (info_ptr->valid & PNG_INFO_gAMA) != 0) - png_write_gAMA_fixed(png_ptr, info_ptr->colorspace.gamma); -# endif -#endif - -#ifdef PNG_COLORSPACE_SUPPORTED - /* Write only one of sRGB or an ICC profile. If a profile was supplied - * and it matches one of the known sRGB ones issue a warning. - */ -# ifdef PNG_WRITE_iCCP_SUPPORTED - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && - (info_ptr->valid & PNG_INFO_iCCP) != 0) - { -# ifdef PNG_WRITE_sRGB_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sRGB) != 0) - png_app_warning(png_ptr, - "profile matches sRGB but writing iCCP instead"); -# endif - - png_write_iCCP(png_ptr, info_ptr->iccp_name, - info_ptr->iccp_profile); - } -# ifdef PNG_WRITE_sRGB_SUPPORTED - else -# endif -# endif - -# ifdef PNG_WRITE_sRGB_SUPPORTED - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && - (info_ptr->valid & PNG_INFO_sRGB) != 0) - png_write_sRGB(png_ptr, info_ptr->colorspace.rendering_intent); -# endif /* WRITE_sRGB */ -#endif /* COLORSPACE */ - -#ifdef PNG_WRITE_sBIT_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sBIT) != 0) - png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type); -#endif - -#ifdef PNG_COLORSPACE_SUPPORTED -# ifdef PNG_WRITE_cHRM_SUPPORTED - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && - (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_cHRM) != 0 && - (info_ptr->valid & PNG_INFO_cHRM) != 0) - png_write_cHRM_fixed(png_ptr, &info_ptr->colorspace.end_points_xy); -# endif -#endif - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_IHDR); -#endif - - png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE; - } -} - -void PNGAPI -png_write_info(png_structrp png_ptr, png_const_inforp info_ptr) -{ -#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) - int i; -#endif - - png_debug(1, "in png_write_info"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_write_info_before_PLTE(png_ptr, info_ptr); - - if ((info_ptr->valid & PNG_INFO_PLTE) != 0) - png_write_PLTE(png_ptr, info_ptr->palette, - (png_uint_32)info_ptr->num_palette); - - else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_error(png_ptr, "Valid palette required for paletted images"); - -#ifdef PNG_WRITE_tRNS_SUPPORTED - if ((info_ptr->valid & PNG_INFO_tRNS) !=0) - { -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED - /* Invert the alpha channel (in tRNS) */ - if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0 && - info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - int j, jend; - - jend = info_ptr->num_trans; - if (jend > PNG_MAX_PALETTE_LENGTH) - jend = PNG_MAX_PALETTE_LENGTH; - - for (j = 0; jtrans_alpha[j] = - (png_byte)(255 - info_ptr->trans_alpha[j]); - } -#endif - png_write_tRNS(png_ptr, info_ptr->trans_alpha, &(info_ptr->trans_color), - info_ptr->num_trans, info_ptr->color_type); - } -#endif -#ifdef PNG_WRITE_bKGD_SUPPORTED - if ((info_ptr->valid & PNG_INFO_bKGD) != 0) - png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type); -#endif - -#ifdef PNG_WRITE_eXIf_SUPPORTED - if ((info_ptr->valid & PNG_INFO_eXIf) != 0) - png_write_eXIf(png_ptr, info_ptr->exif, info_ptr->num_exif); -#endif - -#ifdef PNG_WRITE_hIST_SUPPORTED - if ((info_ptr->valid & PNG_INFO_hIST) != 0) - png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette); -#endif - -#ifdef PNG_WRITE_oFFs_SUPPORTED - if ((info_ptr->valid & PNG_INFO_oFFs) != 0) - png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset, - info_ptr->offset_unit_type); -#endif - -#ifdef PNG_WRITE_pCAL_SUPPORTED - if ((info_ptr->valid & PNG_INFO_pCAL) != 0) - png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0, - info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams, - info_ptr->pcal_units, info_ptr->pcal_params); -#endif - -#ifdef PNG_WRITE_sCAL_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sCAL) != 0) - png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit, - info_ptr->scal_s_width, info_ptr->scal_s_height); -#endif /* sCAL */ - -#ifdef PNG_WRITE_pHYs_SUPPORTED - if ((info_ptr->valid & PNG_INFO_pHYs) != 0) - png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit, - info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type); -#endif /* pHYs */ - -#ifdef PNG_WRITE_tIME_SUPPORTED - if ((info_ptr->valid & PNG_INFO_tIME) != 0) - { - png_write_tIME(png_ptr, &(info_ptr->mod_time)); - png_ptr->mode |= PNG_WROTE_tIME; - } -#endif /* tIME */ - -#ifdef PNG_WRITE_sPLT_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sPLT) != 0) - for (i = 0; i < (int)info_ptr->splt_palettes_num; i++) - png_write_sPLT(png_ptr, info_ptr->splt_palettes + i); -#endif /* sPLT */ - -#ifdef PNG_WRITE_TEXT_SUPPORTED - /* Check to see if we need to write text chunks */ - for (i = 0; i < info_ptr->num_text; i++) - { - png_debug2(2, "Writing header text chunk %d, type %d", i, - info_ptr->text[i].compression); - /* An internationalized chunk? */ - if (info_ptr->text[i].compression > 0) - { -#ifdef PNG_WRITE_iTXt_SUPPORTED - /* Write international chunk */ - png_write_iTXt(png_ptr, - info_ptr->text[i].compression, - info_ptr->text[i].key, - info_ptr->text[i].lang, - info_ptr->text[i].lang_key, - info_ptr->text[i].text); - /* Mark this chunk as written */ - if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - else - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; -#else - png_warning(png_ptr, "Unable to write international text"); -#endif - } - - /* If we want a compressed text chunk */ - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt) - { -#ifdef PNG_WRITE_zTXt_SUPPORTED - /* Write compressed chunk */ - png_write_zTXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, info_ptr->text[i].compression); - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; -#else - png_warning(png_ptr, "Unable to write compressed text"); -#endif - } - - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - { -#ifdef PNG_WRITE_tEXt_SUPPORTED - /* Write uncompressed chunk */ - png_write_tEXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, - 0); - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; -#else - /* Can't get here */ - png_warning(png_ptr, "Unable to write uncompressed text"); -#endif - } - } -#endif /* tEXt */ - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_PLTE); -#endif -} - -/* Writes the end of the PNG file. If you don't want to write comments or - * time information, you can pass NULL for info. If you already wrote these - * in png_write_info(), do not write them again here. If you have long - * comments, I suggest writing them here, and compressing them. - */ -void PNGAPI -png_write_end(png_structrp png_ptr, png_inforp info_ptr) -{ - png_debug(1, "in png_write_end"); - - if (png_ptr == NULL) - return; - - if ((png_ptr->mode & PNG_HAVE_IDAT) == 0) - png_error(png_ptr, "No IDATs written into file"); - -#ifdef PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED - if (png_ptr->num_palette_max > png_ptr->num_palette) - png_benign_error(png_ptr, "Wrote palette index exceeding num_palette"); -#endif - - /* See if user wants us to write information chunks */ - if (info_ptr != NULL) - { -#ifdef PNG_WRITE_TEXT_SUPPORTED - int i; /* local index variable */ -#endif -#ifdef PNG_WRITE_tIME_SUPPORTED - /* Check to see if user has supplied a time chunk */ - if ((info_ptr->valid & PNG_INFO_tIME) != 0 && - (png_ptr->mode & PNG_WROTE_tIME) == 0) - png_write_tIME(png_ptr, &(info_ptr->mod_time)); - -#endif -#ifdef PNG_WRITE_TEXT_SUPPORTED - /* Loop through comment chunks */ - for (i = 0; i < info_ptr->num_text; i++) - { - png_debug2(2, "Writing trailer text chunk %d, type %d", i, - info_ptr->text[i].compression); - /* An internationalized chunk? */ - if (info_ptr->text[i].compression > 0) - { -#ifdef PNG_WRITE_iTXt_SUPPORTED - /* Write international chunk */ - png_write_iTXt(png_ptr, - info_ptr->text[i].compression, - info_ptr->text[i].key, - info_ptr->text[i].lang, - info_ptr->text[i].lang_key, - info_ptr->text[i].text); - /* Mark this chunk as written */ - if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - else - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; -#else - png_warning(png_ptr, "Unable to write international text"); -#endif - } - - else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt) - { -#ifdef PNG_WRITE_zTXt_SUPPORTED - /* Write compressed chunk */ - png_write_zTXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, info_ptr->text[i].compression); - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; -#else - png_warning(png_ptr, "Unable to write compressed text"); -#endif - } - - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - { -#ifdef PNG_WRITE_tEXt_SUPPORTED - /* Write uncompressed chunk */ - png_write_tEXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, 0); - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; -#else - png_warning(png_ptr, "Unable to write uncompressed text"); -#endif - } - } -#endif - -#ifdef PNG_WRITE_eXIf_SUPPORTED - if ((info_ptr->valid & PNG_INFO_eXIf) != 0) - png_write_eXIf(png_ptr, info_ptr->exif, info_ptr->num_exif); -#endif - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_AFTER_IDAT); -#endif - } - - png_ptr->mode |= PNG_AFTER_IDAT; - - /* Write end of PNG file */ - png_write_IEND(png_ptr); - - /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03, - * and restored again in libpng-1.2.30, may cause some applications that - * do not set png_ptr->output_flush_fn to crash. If your application - * experiences a problem, please try building libpng with - * PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED defined, and report the event to - * png-mng-implement at lists.sf.net . - */ -#ifdef PNG_WRITE_FLUSH_SUPPORTED -# ifdef PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED - png_flush(png_ptr); -# endif -#endif -} - -#ifdef PNG_CONVERT_tIME_SUPPORTED -void PNGAPI -png_convert_from_struct_tm(png_timep ptime, PNG_CONST struct tm * ttime) -{ - png_debug(1, "in png_convert_from_struct_tm"); - - ptime->year = (png_uint_16)(1900 + ttime->tm_year); - ptime->month = (png_byte)(ttime->tm_mon + 1); - ptime->day = (png_byte)ttime->tm_mday; - ptime->hour = (png_byte)ttime->tm_hour; - ptime->minute = (png_byte)ttime->tm_min; - ptime->second = (png_byte)ttime->tm_sec; -} - -void PNGAPI -png_convert_from_time_t(png_timep ptime, time_t ttime) -{ - struct tm *tbuf; - - png_debug(1, "in png_convert_from_time_t"); - - tbuf = gmtime(&ttime); - png_convert_from_struct_tm(ptime, tbuf); -} -#endif - -/* Initialize png_ptr structure, and allocate any memory needed */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_write_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED) -{ -#ifndef PNG_USER_MEM_SUPPORTED - png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, NULL, NULL, NULL); -#else - return png_create_write_struct_2(user_png_ver, error_ptr, error_fn, - warn_fn, NULL, NULL, NULL); -} - -/* Alternate initialize png_ptr structure, and allocate any memory needed */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_write_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) -{ - png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); -#endif /* USER_MEM */ - if (png_ptr != NULL) - { - /* Set the zlib control values to defaults; they can be overridden by the - * application after the struct has been created. - */ - png_ptr->zbuffer_size = PNG_ZBUF_SIZE; - - /* The 'zlib_strategy' setting is irrelevant because png_default_claim in - * pngwutil.c defaults it according to whether or not filters will be - * used, and ignores this setting. - */ - png_ptr->zlib_strategy = PNG_Z_DEFAULT_STRATEGY; - png_ptr->zlib_level = PNG_Z_DEFAULT_COMPRESSION; - png_ptr->zlib_mem_level = 8; - png_ptr->zlib_window_bits = 15; - png_ptr->zlib_method = 8; - -#ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED - png_ptr->zlib_text_strategy = PNG_TEXT_Z_DEFAULT_STRATEGY; - png_ptr->zlib_text_level = PNG_TEXT_Z_DEFAULT_COMPRESSION; - png_ptr->zlib_text_mem_level = 8; - png_ptr->zlib_text_window_bits = 15; - png_ptr->zlib_text_method = 8; -#endif /* WRITE_COMPRESSED_TEXT */ - - /* This is a highly dubious configuration option; by default it is off, - * but it may be appropriate for private builds that are testing - * extensions not conformant to the current specification, or of - * applications that must not fail to write at all costs! - */ -#ifdef PNG_BENIGN_WRITE_ERRORS_SUPPORTED - /* In stable builds only warn if an application error can be completely - * handled. - */ - png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN; -#endif - - /* App warnings are warnings in release (or release candidate) builds but - * are errors during development. - */ -#if PNG_RELEASE_BUILD - png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN; -#endif - - /* TODO: delay this, it can be done in png_init_io() (if the app doesn't - * do it itself) avoiding setting the default function if it is not - * required. - */ - png_set_write_fn(png_ptr, NULL, NULL, NULL); - } - - return png_ptr; -} - - -/* Write a few rows of image data. If the image is interlaced, - * either you will have to write the 7 sub images, or, if you - * have called png_set_interlace_handling(), you will have to - * "write" the image seven times. - */ -void PNGAPI -png_write_rows(png_structrp png_ptr, png_bytepp row, - png_uint_32 num_rows) -{ - png_uint_32 i; /* row counter */ - png_bytepp rp; /* row pointer */ - - png_debug(1, "in png_write_rows"); - - if (png_ptr == NULL) - return; - - /* Loop through the rows */ - for (i = 0, rp = row; i < num_rows; i++, rp++) - { - png_write_row(png_ptr, *rp); - } -} - -/* Write the image. You only need to call this function once, even - * if you are writing an interlaced image. - */ -void PNGAPI -png_write_image(png_structrp png_ptr, png_bytepp image) -{ - png_uint_32 i; /* row index */ - int pass, num_pass; /* pass variables */ - png_bytepp rp; /* points to current row */ - - if (png_ptr == NULL) - return; - - png_debug(1, "in png_write_image"); - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Initialize interlace handling. If image is not interlaced, - * this will set pass to 1 - */ - num_pass = png_set_interlace_handling(png_ptr); -#else - num_pass = 1; -#endif - /* Loop through passes */ - for (pass = 0; pass < num_pass; pass++) - { - /* Loop through image */ - for (i = 0, rp = image; i < png_ptr->height; i++, rp++) - { - png_write_row(png_ptr, *rp); - } - } -} - -#ifdef PNG_MNG_FEATURES_SUPPORTED -/* Performs intrapixel differencing */ -static void -png_do_write_intrapixel(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_intrapixel"); - - if ((row_info->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - int bytes_per_pixel; - png_uint_32 row_width = row_info->width; - if (row_info->bit_depth == 8) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 3; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 4; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - *(rp) = (png_byte)(*rp - *(rp + 1)); - *(rp + 2) = (png_byte)(*(rp + 2) - *(rp + 1)); - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 6; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 8; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - png_uint_32 s0 = (png_uint_32)(*(rp ) << 8) | *(rp + 1); - png_uint_32 s1 = (png_uint_32)(*(rp + 2) << 8) | *(rp + 3); - png_uint_32 s2 = (png_uint_32)(*(rp + 4) << 8) | *(rp + 5); - png_uint_32 red = (png_uint_32)((s0 - s1) & 0xffffL); - png_uint_32 blue = (png_uint_32)((s2 - s1) & 0xffffL); - *(rp ) = (png_byte)(red >> 8); - *(rp + 1) = (png_byte)red; - *(rp + 4) = (png_byte)(blue >> 8); - *(rp + 5) = (png_byte)blue; - } - } -#endif /* WRITE_16BIT */ - } -} -#endif /* MNG_FEATURES */ - -/* Called by user to write a row of image data */ -void PNGAPI -png_write_row(png_structrp png_ptr, png_const_bytep row) -{ - /* 1.5.6: moved from png_struct to be a local structure: */ - png_row_info row_info; - - if (png_ptr == NULL) - return; - - png_debug2(1, "in png_write_row (row %u, pass %d)", - png_ptr->row_number, png_ptr->pass); - - /* Initialize transformations and other stuff if first time */ - if (png_ptr->row_number == 0 && png_ptr->pass == 0) - { - /* Make sure we wrote the header info */ - if ((png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE) == 0) - png_error(png_ptr, - "png_write_info was never called before png_write_row"); - - /* Check for transforms that have been set but were defined out */ -#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED) - if ((png_ptr->transformations & PNG_INVERT_MONO) != 0) - png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED) - if ((png_ptr->transformations & PNG_FILLER) != 0) - png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined"); -#endif -#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \ - defined(PNG_READ_PACKSWAP_SUPPORTED) - if ((png_ptr->transformations & PNG_PACKSWAP) != 0) - png_warning(png_ptr, - "PNG_WRITE_PACKSWAP_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED) - if ((png_ptr->transformations & PNG_PACK) != 0) - png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED) - if ((png_ptr->transformations & PNG_SHIFT) != 0) - png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED) - if ((png_ptr->transformations & PNG_BGR) != 0) - png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED) - if ((png_ptr->transformations & PNG_SWAP_BYTES) != 0) - png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined"); -#endif - - png_write_start_row(png_ptr); - } - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* If interlaced and not interested in row, return */ - if (png_ptr->interlaced != 0 && - (png_ptr->transformations & PNG_INTERLACE) != 0) - { - switch (png_ptr->pass) - { - case 0: - if ((png_ptr->row_number & 0x07) != 0) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 1: - if ((png_ptr->row_number & 0x07) != 0 || png_ptr->width < 5) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 2: - if ((png_ptr->row_number & 0x07) != 4) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 3: - if ((png_ptr->row_number & 0x03) != 0 || png_ptr->width < 3) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 4: - if ((png_ptr->row_number & 0x03) != 2) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 5: - if ((png_ptr->row_number & 0x01) != 0 || png_ptr->width < 2) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 6: - if ((png_ptr->row_number & 0x01) == 0) - { - png_write_finish_row(png_ptr); - return; - } - break; - - default: /* error: ignore it */ - break; - } - } -#endif - - /* Set up row info for transformations */ - row_info.color_type = png_ptr->color_type; - row_info.width = png_ptr->usr_width; - row_info.channels = png_ptr->usr_channels; - row_info.bit_depth = png_ptr->usr_bit_depth; - row_info.pixel_depth = (png_byte)(row_info.bit_depth * row_info.channels); - row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width); - - png_debug1(3, "row_info->color_type = %d", row_info.color_type); - png_debug1(3, "row_info->width = %u", row_info.width); - png_debug1(3, "row_info->channels = %d", row_info.channels); - png_debug1(3, "row_info->bit_depth = %d", row_info.bit_depth); - png_debug1(3, "row_info->pixel_depth = %d", row_info.pixel_depth); - png_debug1(3, "row_info->rowbytes = %lu", (unsigned long)row_info.rowbytes); - - /* Copy user's row into buffer, leaving room for filter byte. */ - memcpy(png_ptr->row_buf + 1, row, row_info.rowbytes); - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Handle interlacing */ - if (png_ptr->interlaced && png_ptr->pass < 6 && - (png_ptr->transformations & PNG_INTERLACE) != 0) - { - png_do_write_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass); - /* This should always get caught above, but still ... */ - if (row_info.width == 0) - { - png_write_finish_row(png_ptr); - return; - } - } -#endif - -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED - /* Handle other transformations */ - if (png_ptr->transformations != 0) - png_do_write_transformations(png_ptr, &row_info); -#endif - - /* At this point the row_info pixel depth must match the 'transformed' depth, - * which is also the output depth. - */ - if (row_info.pixel_depth != png_ptr->pixel_depth || - row_info.pixel_depth != png_ptr->transformed_pixel_depth) - png_error(png_ptr, "internal write transform logic error"); - -#ifdef PNG_MNG_FEATURES_SUPPORTED - /* Write filter_method 64 (intrapixel differencing) only if - * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and - * 2. Libpng did not write a PNG signature (this filter_method is only - * used in PNG datastreams that are embedded in MNG datastreams) and - * 3. The application called png_permit_mng_features with a mask that - * included PNG_FLAG_MNG_FILTER_64 and - * 4. The filter_method is 64 and - * 5. The color_type is RGB or RGBA - */ - if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 && - (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING)) - { - /* Intrapixel differencing */ - png_do_write_intrapixel(&row_info, png_ptr->row_buf + 1); - } -#endif - -/* Added at libpng-1.5.10 */ -#ifdef PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Check for out-of-range palette index */ - if (row_info.color_type == PNG_COLOR_TYPE_PALETTE && - png_ptr->num_palette_max >= 0) - png_do_check_palette_indexes(png_ptr, &row_info); -#endif - - /* Find a filter if necessary, filter the row and write it out. */ - png_write_find_filter(png_ptr, &row_info); - - if (png_ptr->write_row_fn != NULL) - (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); -} - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -/* Set the automatic flush interval or 0 to turn flushing off */ -void PNGAPI -png_set_flush(png_structrp png_ptr, int nrows) -{ - png_debug(1, "in png_set_flush"); - - if (png_ptr == NULL) - return; - - png_ptr->flush_dist = (nrows < 0 ? 0 : (png_uint_32)nrows); -} - -/* Flush the current output buffers now */ -void PNGAPI -png_write_flush(png_structrp png_ptr) -{ - png_debug(1, "in png_write_flush"); - - if (png_ptr == NULL) - return; - - /* We have already written out all of the data */ - if (png_ptr->row_number >= png_ptr->num_rows) - return; - - png_compress_IDAT(png_ptr, NULL, 0, Z_SYNC_FLUSH); - png_ptr->flush_rows = 0; - png_flush(png_ptr); -} -#endif /* WRITE_FLUSH */ - -/* Free any memory used in png_ptr struct without freeing the struct itself. */ -static void -png_write_destroy(png_structrp png_ptr) -{ - png_debug(1, "in png_write_destroy"); - - /* Free any memory zlib uses */ - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0) - deflateEnd(&png_ptr->zstream); - - /* Free our memory. png_free checks NULL for us. */ - png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list); - png_free(png_ptr, png_ptr->row_buf); - png_ptr->row_buf = NULL; -#ifdef PNG_WRITE_FILTER_SUPPORTED - png_free(png_ptr, png_ptr->prev_row); - png_free(png_ptr, png_ptr->try_row); - png_free(png_ptr, png_ptr->tst_row); - png_ptr->prev_row = NULL; - png_ptr->try_row = NULL; - png_ptr->tst_row = NULL; -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - png_free(png_ptr, png_ptr->chunk_list); - png_ptr->chunk_list = NULL; -#endif - - /* The error handling and memory handling information is left intact at this - * point: the jmp_buf may still have to be freed. See png_destroy_png_struct - * for how this happens. - */ -} - -/* Free all memory used by the write. - * In libpng 1.6.0 this API changed quietly to no longer accept a NULL value for - * *png_ptr_ptr. Prior to 1.6.0 it would accept such a value and it would free - * the passed in info_structs but it would quietly fail to free any of the data - * inside them. In 1.6.0 it quietly does nothing (it has to be quiet because it - * has no png_ptr.) - */ -void PNGAPI -png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr) -{ - png_debug(1, "in png_destroy_write_struct"); - - if (png_ptr_ptr != NULL) - { - png_structrp png_ptr = *png_ptr_ptr; - - if (png_ptr != NULL) /* added in libpng 1.6.0 */ - { - png_destroy_info_struct(png_ptr, info_ptr_ptr); - - *png_ptr_ptr = NULL; - png_write_destroy(png_ptr); - png_destroy_png_struct(png_ptr); - } - } -} - -/* Allow the application to select one or more row filters to use. */ -void PNGAPI -png_set_filter(png_structrp png_ptr, int method, int filters) -{ - png_debug(1, "in png_set_filter"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_MNG_FEATURES_SUPPORTED - if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 && - (method == PNG_INTRAPIXEL_DIFFERENCING)) - method = PNG_FILTER_TYPE_BASE; - -#endif - if (method == PNG_FILTER_TYPE_BASE) - { - switch (filters & (PNG_ALL_FILTERS | 0x07)) - { -#ifdef PNG_WRITE_FILTER_SUPPORTED - case 5: - case 6: - case 7: png_app_error(png_ptr, "Unknown row filter for method 0"); -#endif /* WRITE_FILTER */ - /* FALLTHROUGH */ - case PNG_FILTER_VALUE_NONE: - png_ptr->do_filter = PNG_FILTER_NONE; break; - -#ifdef PNG_WRITE_FILTER_SUPPORTED - case PNG_FILTER_VALUE_SUB: - png_ptr->do_filter = PNG_FILTER_SUB; break; - - case PNG_FILTER_VALUE_UP: - png_ptr->do_filter = PNG_FILTER_UP; break; - - case PNG_FILTER_VALUE_AVG: - png_ptr->do_filter = PNG_FILTER_AVG; break; - - case PNG_FILTER_VALUE_PAETH: - png_ptr->do_filter = PNG_FILTER_PAETH; break; - - default: - png_ptr->do_filter = (png_byte)filters; break; -#else - default: - png_app_error(png_ptr, "Unknown row filter for method 0"); -#endif /* WRITE_FILTER */ - } - -#ifdef PNG_WRITE_FILTER_SUPPORTED - /* If we have allocated the row_buf, this means we have already started - * with the image and we should have allocated all of the filter buffers - * that have been selected. If prev_row isn't already allocated, then - * it is too late to start using the filters that need it, since we - * will be missing the data in the previous row. If an application - * wants to start and stop using particular filters during compression, - * it should start out with all of the filters, and then remove them - * or add them back after the start of compression. - * - * NOTE: this is a nasty constraint on the code, because it means that the - * prev_row buffer must be maintained even if there are currently no - * 'prev_row' requiring filters active. - */ - if (png_ptr->row_buf != NULL) - { - int num_filters; - png_alloc_size_t buf_size; - - /* Repeat the checks in png_write_start_row; 1 pixel high or wide - * images cannot benefit from certain filters. If this isn't done here - * the check below will fire on 1 pixel high images. - */ - if (png_ptr->height == 1) - filters &= ~(PNG_FILTER_UP|PNG_FILTER_AVG|PNG_FILTER_PAETH); - - if (png_ptr->width == 1) - filters &= ~(PNG_FILTER_SUB|PNG_FILTER_AVG|PNG_FILTER_PAETH); - - if ((filters & (PNG_FILTER_UP|PNG_FILTER_AVG|PNG_FILTER_PAETH)) != 0 - && png_ptr->prev_row == NULL) - { - /* This is the error case, however it is benign - the previous row - * is not available so the filter can't be used. Just warn here. - */ - png_app_warning(png_ptr, - "png_set_filter: UP/AVG/PAETH cannot be added after start"); - filters &= ~(PNG_FILTER_UP|PNG_FILTER_AVG|PNG_FILTER_PAETH); - } - - num_filters = 0; - - if (filters & PNG_FILTER_SUB) - num_filters++; - - if (filters & PNG_FILTER_UP) - num_filters++; - - if (filters & PNG_FILTER_AVG) - num_filters++; - - if (filters & PNG_FILTER_PAETH) - num_filters++; - - /* Allocate needed row buffers if they have not already been - * allocated. - */ - buf_size = PNG_ROWBYTES(png_ptr->usr_channels * png_ptr->usr_bit_depth, - png_ptr->width) + 1; - - if (png_ptr->try_row == NULL) - png_ptr->try_row = png_voidcast(png_bytep, - png_malloc(png_ptr, buf_size)); - - if (num_filters > 1) - { - if (png_ptr->tst_row == NULL) - png_ptr->tst_row = png_voidcast(png_bytep, - png_malloc(png_ptr, buf_size)); - } - } - png_ptr->do_filter = (png_byte)filters; -#endif - } - else - png_error(png_ptr, "Unknown custom filter method"); -} - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ -/* Provide floating and fixed point APIs */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_filter_heuristics(png_structrp png_ptr, int heuristic_method, - int num_weights, png_const_doublep filter_weights, - png_const_doublep filter_costs) -{ - PNG_UNUSED(png_ptr) - PNG_UNUSED(heuristic_method) - PNG_UNUSED(num_weights) - PNG_UNUSED(filter_weights) - PNG_UNUSED(filter_costs) -} -#endif /* FLOATING_POINT */ - -#ifdef PNG_FIXED_POINT_SUPPORTED -void PNGAPI -png_set_filter_heuristics_fixed(png_structrp png_ptr, int heuristic_method, - int num_weights, png_const_fixed_point_p filter_weights, - png_const_fixed_point_p filter_costs) -{ - PNG_UNUSED(png_ptr) - PNG_UNUSED(heuristic_method) - PNG_UNUSED(num_weights) - PNG_UNUSED(filter_weights) - PNG_UNUSED(filter_costs) -} -#endif /* FIXED_POINT */ -#endif /* WRITE_WEIGHTED_FILTER */ - -#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -void PNGAPI -png_set_compression_level(png_structrp png_ptr, int level) -{ - png_debug(1, "in png_set_compression_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_level = level; -} - -void PNGAPI -png_set_compression_mem_level(png_structrp png_ptr, int mem_level) -{ - png_debug(1, "in png_set_compression_mem_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_mem_level = mem_level; -} - -void PNGAPI -png_set_compression_strategy(png_structrp png_ptr, int strategy) -{ - png_debug(1, "in png_set_compression_strategy"); - - if (png_ptr == NULL) - return; - - /* The flag setting here prevents the libpng dynamic selection of strategy. - */ - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY; - png_ptr->zlib_strategy = strategy; -} - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -void PNGAPI -png_set_compression_window_bits(png_structrp png_ptr, int window_bits) -{ - if (png_ptr == NULL) - return; - - /* Prior to 1.6.0 this would warn but then set the window_bits value. This - * meant that negative window bits values could be selected that would cause - * libpng to write a non-standard PNG file with raw deflate or gzip - * compressed IDAT or ancillary chunks. Such files can be read and there is - * no warning on read, so this seems like a very bad idea. - */ - if (window_bits > 15) - { - png_warning(png_ptr, "Only compression windows <= 32k supported by PNG"); - window_bits = 15; - } - - else if (window_bits < 8) - { - png_warning(png_ptr, "Only compression windows >= 256 supported by PNG"); - window_bits = 8; - } - - png_ptr->zlib_window_bits = window_bits; -} - -void PNGAPI -png_set_compression_method(png_structrp png_ptr, int method) -{ - png_debug(1, "in png_set_compression_method"); - - if (png_ptr == NULL) - return; - - /* This would produce an invalid PNG file if it worked, but it doesn't and - * deflate will fault it, so it is harmless to just warn here. - */ - if (method != 8) - png_warning(png_ptr, "Only compression method 8 is supported by PNG"); - - png_ptr->zlib_method = method; -} -#endif /* WRITE_CUSTOMIZE_COMPRESSION */ - -/* The following were added to libpng-1.5.4 */ -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -void PNGAPI -png_set_text_compression_level(png_structrp png_ptr, int level) -{ - png_debug(1, "in png_set_text_compression_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_text_level = level; -} - -void PNGAPI -png_set_text_compression_mem_level(png_structrp png_ptr, int mem_level) -{ - png_debug(1, "in png_set_text_compression_mem_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_text_mem_level = mem_level; -} - -void PNGAPI -png_set_text_compression_strategy(png_structrp png_ptr, int strategy) -{ - png_debug(1, "in png_set_text_compression_strategy"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_text_strategy = strategy; -} - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -void PNGAPI -png_set_text_compression_window_bits(png_structrp png_ptr, int window_bits) -{ - if (png_ptr == NULL) - return; - - if (window_bits > 15) - { - png_warning(png_ptr, "Only compression windows <= 32k supported by PNG"); - window_bits = 15; - } - - else if (window_bits < 8) - { - png_warning(png_ptr, "Only compression windows >= 256 supported by PNG"); - window_bits = 8; - } - - png_ptr->zlib_text_window_bits = window_bits; -} - -void PNGAPI -png_set_text_compression_method(png_structrp png_ptr, int method) -{ - png_debug(1, "in png_set_text_compression_method"); - - if (png_ptr == NULL) - return; - - if (method != 8) - png_warning(png_ptr, "Only compression method 8 is supported by PNG"); - - png_ptr->zlib_text_method = method; -} -#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ -/* end of API added to libpng-1.5.4 */ - -void PNGAPI -png_set_write_status_fn(png_structrp png_ptr, png_write_status_ptr write_row_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->write_row_fn = write_row_fn; -} - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -void PNGAPI -png_set_write_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr - write_user_transform_fn) -{ - png_debug(1, "in png_set_write_user_transform_fn"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_USER_TRANSFORM; - png_ptr->write_user_transform_fn = write_user_transform_fn; -} -#endif - - -#ifdef PNG_INFO_IMAGE_SUPPORTED -void PNGAPI -png_write_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, voidp params) -{ - if (png_ptr == NULL || info_ptr == NULL) - return; - - if ((info_ptr->valid & PNG_INFO_IDAT) == 0) - { - png_app_error(png_ptr, "no rows for png_write_image to write"); - return; - } - - /* Write the file header information. */ - png_write_info(png_ptr, info_ptr); - - /* ------ these transformations don't touch the info structure ------- */ - - /* Invert monochrome pixels */ - if ((transforms & PNG_TRANSFORM_INVERT_MONO) != 0) -#ifdef PNG_WRITE_INVERT_SUPPORTED - png_set_invert_mono(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_MONO not supported"); -#endif - - /* Shift the pixels up to a legal bit depth and fill in - * as appropriate to correctly scale the image. - */ - if ((transforms & PNG_TRANSFORM_SHIFT) != 0) -#ifdef PNG_WRITE_SHIFT_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sBIT) != 0) - png_set_shift(png_ptr, &info_ptr->sig_bit); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SHIFT not supported"); -#endif - - /* Pack pixels into bytes */ - if ((transforms & PNG_TRANSFORM_PACKING) != 0) -#ifdef PNG_WRITE_PACK_SUPPORTED - png_set_packing(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_PACKING not supported"); -#endif - - /* Swap location of alpha bytes from ARGB to RGBA */ - if ((transforms & PNG_TRANSFORM_SWAP_ALPHA) != 0) -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED - png_set_swap_alpha(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ALPHA not supported"); -#endif - - /* Remove a filler (X) from XRGB/RGBX/AG/GA into to convert it into - * RGB, note that the code expects the input color type to be G or RGB; no - * alpha channel. - */ - if ((transforms & (PNG_TRANSFORM_STRIP_FILLER_AFTER| - PNG_TRANSFORM_STRIP_FILLER_BEFORE)) != 0) - { -#ifdef PNG_WRITE_FILLER_SUPPORTED - if ((transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER) != 0) - { - if ((transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE) != 0) - png_app_error(png_ptr, - "PNG_TRANSFORM_STRIP_FILLER: BEFORE+AFTER not supported"); - - /* Continue if ignored - this is the pre-1.6.10 behavior */ - png_set_filler(png_ptr, 0, PNG_FILLER_AFTER); - } - - else if ((transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE) != 0) - png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_STRIP_FILLER not supported"); -#endif - } - - /* Flip BGR pixels to RGB */ - if ((transforms & PNG_TRANSFORM_BGR) != 0) -#ifdef PNG_WRITE_BGR_SUPPORTED - png_set_bgr(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_BGR not supported"); -#endif - - /* Swap bytes of 16-bit files to most significant byte first */ - if ((transforms & PNG_TRANSFORM_SWAP_ENDIAN) != 0) -#ifdef PNG_WRITE_SWAP_SUPPORTED - png_set_swap(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ENDIAN not supported"); -#endif - - /* Swap bits of 1-bit, 2-bit, 4-bit packed pixel formats */ - if ((transforms & PNG_TRANSFORM_PACKSWAP) != 0) -#ifdef PNG_WRITE_PACKSWAP_SUPPORTED - png_set_packswap(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_PACKSWAP not supported"); -#endif - - /* Invert the alpha channel from opacity to transparency */ - if ((transforms & PNG_TRANSFORM_INVERT_ALPHA) != 0) -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED - png_set_invert_alpha(png_ptr); -#else - png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_ALPHA not supported"); -#endif - - /* ----------------------- end of transformations ------------------- */ - - /* Write the bits */ - png_write_image(png_ptr, info_ptr->row_pointers); - - /* It is REQUIRED to call this to finish writing the rest of the file */ - png_write_end(png_ptr, info_ptr); - - PNG_UNUSED(params) -} -#endif - - -#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED -/* Initialize the write structure - general purpose utility. */ -static int -png_image_write_init(png_imagep image) -{ - png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, image, - png_safe_error, png_safe_warning); - - if (png_ptr != NULL) - { - png_infop info_ptr = png_create_info_struct(png_ptr); - - if (info_ptr != NULL) - { - png_controlp control = png_voidcast(png_controlp, - png_malloc_warn(png_ptr, (sizeof *control))); - - if (control != NULL) - { - memset(control, 0, (sizeof *control)); - - control->png_ptr = png_ptr; - control->info_ptr = info_ptr; - control->for_write = 1; - - image->opaque = control; - return 1; - } - - /* Error clean up */ - png_destroy_info_struct(png_ptr, &info_ptr); - } - - png_destroy_write_struct(&png_ptr, NULL); - } - - return png_image_error(image, "png_image_write_: out of memory"); -} - -/* Arguments to png_image_write_main: */ -typedef struct -{ - /* Arguments: */ - png_imagep image; - png_const_voidp buffer; - png_int_32 row_stride; - png_const_voidp colormap; - int convert_to_8bit; - /* Local variables: */ - png_const_voidp first_row; - ptrdiff_t row_bytes; - png_voidp local_row; - /* Byte count for memory writing */ - png_bytep memory; - png_alloc_size_t memory_bytes; /* not used for STDIO */ - png_alloc_size_t output_bytes; /* running total */ -} png_image_write_control; - -/* Write png_uint_16 input to a 16-bit PNG; the png_ptr has already been set to - * do any necessary byte swapping. The component order is defined by the - * png_image format value. - */ -static int -png_write_image_16bit(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - - png_const_uint_16p input_row = png_voidcast(png_const_uint_16p, - display->first_row); - png_uint_16p output_row = png_voidcast(png_uint_16p, display->local_row); - png_uint_16p row_end; - const unsigned int channels = (image->format & PNG_FORMAT_FLAG_COLOR) != 0 ? - 3 : 1; - int aindex = 0; - png_uint_32 y = image->height; - - if ((image->format & PNG_FORMAT_FLAG_ALPHA) != 0) - { -# ifdef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED - if ((image->format & PNG_FORMAT_FLAG_AFIRST) != 0) - { - aindex = -1; - ++input_row; /* To point to the first component */ - ++output_row; - } - else - aindex = (int)channels; -# else - aindex = (int)channels; -# endif - } - - else - png_error(png_ptr, "png_write_image: internal call error"); - - /* Work out the output row end and count over this, note that the increment - * above to 'row' means that row_end can actually be beyond the end of the - * row; this is correct. - */ - row_end = output_row + image->width * (channels+1); - - for (; y > 0; --y) - { - png_const_uint_16p in_ptr = input_row; - png_uint_16p out_ptr = output_row; - - while (out_ptr < row_end) - { - const png_uint_16 alpha = in_ptr[aindex]; - png_uint_32 reciprocal = 0; - int c; - - out_ptr[aindex] = alpha; - - /* Calculate a reciprocal. The correct calculation is simply - * component/alpha*65535 << 15. (I.e. 15 bits of precision); this - * allows correct rounding by adding .5 before the shift. 'reciprocal' - * is only initialized when required. - */ - if (alpha > 0 && alpha < 65535) - reciprocal = ((0xffff<<15)+(alpha>>1))/alpha; - - c = (int)channels; - do /* always at least one channel */ - { - png_uint_16 component = *in_ptr++; - - /* The following gives 65535 for an alpha of 0, which is fine, - * otherwise if 0/0 is represented as some other value there is more - * likely to be a discontinuity which will probably damage - * compression when moving from a fully transparent area to a - * nearly transparent one. (The assumption here is that opaque - * areas tend not to be 0 intensity.) - */ - if (component >= alpha) - component = 65535; - - /* component 0 && alpha < 65535) - { - png_uint_32 calc = component * reciprocal; - calc += 16384; /* round to nearest */ - component = (png_uint_16)(calc >> 15); - } - - *out_ptr++ = component; - } - while (--c > 0); - - /* Skip to next component (skip the intervening alpha channel) */ - ++in_ptr; - ++out_ptr; - } - - png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row)); - input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); - } - - return 1; -} - -/* Given 16-bit input (1 to 4 channels) write 8-bit output. If an alpha channel - * is present it must be removed from the components, the components are then - * written in sRGB encoding. No components are added or removed. - * - * Calculate an alpha reciprocal to reverse pre-multiplication. As above the - * calculation can be done to 15 bits of accuracy; however, the output needs to - * be scaled in the range 0..255*65535, so include that scaling here. - */ -# define UNP_RECIPROCAL(alpha) ((((0xffff*0xff)<<7)+(alpha>>1))/alpha) - -static png_byte -png_unpremultiply(png_uint_32 component, png_uint_32 alpha, - png_uint_32 reciprocal/*from the above macro*/) -{ - /* The following gives 1.0 for an alpha of 0, which is fine, otherwise if 0/0 - * is represented as some other value there is more likely to be a - * discontinuity which will probably damage compression when moving from a - * fully transparent area to a nearly transparent one. (The assumption here - * is that opaque areas tend not to be 0 intensity.) - * - * There is a rounding problem here; if alpha is less than 128 it will end up - * as 0 when scaled to 8 bits. To avoid introducing spurious colors into the - * output change for this too. - */ - if (component >= alpha || alpha < 128) - return 255; - - /* component 0) - { - /* The test is that alpha/257 (rounded) is less than 255, the first value - * that becomes 255 is 65407. - * NOTE: this must agree with the PNG_DIV257 macro (which must, therefore, - * be exact!) [Could also test reciprocal != 0] - */ - if (alpha < 65407) - { - component *= reciprocal; - component += 64; /* round to nearest */ - component >>= 7; - } - - else - component *= 255; - - /* Convert the component to sRGB. */ - return (png_byte)PNG_sRGB_FROM_LINEAR(component); - } - - else - return 0; -} - -static int -png_write_image_8bit(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - - png_const_uint_16p input_row = png_voidcast(png_const_uint_16p, - display->first_row); - png_bytep output_row = png_voidcast(png_bytep, display->local_row); - png_uint_32 y = image->height; - const unsigned int channels = (image->format & PNG_FORMAT_FLAG_COLOR) != 0 ? - 3 : 1; - - if ((image->format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - png_bytep row_end; - int aindex; - -# ifdef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED - if ((image->format & PNG_FORMAT_FLAG_AFIRST) != 0) - { - aindex = -1; - ++input_row; /* To point to the first component */ - ++output_row; - } - - else -# endif - aindex = (int)channels; - - /* Use row_end in place of a loop counter: */ - row_end = output_row + image->width * (channels+1); - - for (; y > 0; --y) - { - png_const_uint_16p in_ptr = input_row; - png_bytep out_ptr = output_row; - - while (out_ptr < row_end) - { - png_uint_16 alpha = in_ptr[aindex]; - png_byte alphabyte = (png_byte)PNG_DIV257(alpha); - png_uint_32 reciprocal = 0; - int c; - - /* Scale and write the alpha channel. */ - out_ptr[aindex] = alphabyte; - - if (alphabyte > 0 && alphabyte < 255) - reciprocal = UNP_RECIPROCAL(alpha); - - c = (int)channels; - do /* always at least one channel */ - *out_ptr++ = png_unpremultiply(*in_ptr++, alpha, reciprocal); - while (--c > 0); - - /* Skip to next component (skip the intervening alpha channel) */ - ++in_ptr; - ++out_ptr; - } /* while out_ptr < row_end */ - - png_write_row(png_ptr, png_voidcast(png_const_bytep, - display->local_row)); - input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); - } /* while y */ - } - - else - { - /* No alpha channel, so the row_end really is the end of the row and it - * is sufficient to loop over the components one by one. - */ - png_bytep row_end = output_row + image->width * channels; - - for (; y > 0; --y) - { - png_const_uint_16p in_ptr = input_row; - png_bytep out_ptr = output_row; - - while (out_ptr < row_end) - { - png_uint_32 component = *in_ptr++; - - component *= 255; - *out_ptr++ = (png_byte)PNG_sRGB_FROM_LINEAR(component); - } - - png_write_row(png_ptr, output_row); - input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); - } - } - - return 1; -} - -static void -png_image_set_PLTE(png_image_write_control *display) -{ - const png_imagep image = display->image; - const void *cmap = display->colormap; - const int entries = image->colormap_entries > 256 ? 256 : - (int)image->colormap_entries; - - /* NOTE: the caller must check for cmap != NULL and entries != 0 */ - const png_uint_32 format = image->format; - const unsigned int channels = PNG_IMAGE_SAMPLE_CHANNELS(format); - -# if defined(PNG_FORMAT_BGR_SUPPORTED) &&\ - defined(PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED) - const int afirst = (format & PNG_FORMAT_FLAG_AFIRST) != 0 && - (format & PNG_FORMAT_FLAG_ALPHA) != 0; -# else -# define afirst 0 -# endif - -# ifdef PNG_FORMAT_BGR_SUPPORTED - const int bgr = (format & PNG_FORMAT_FLAG_BGR) != 0 ? 2 : 0; -# else -# define bgr 0 -# endif - - int i, num_trans; - png_color palette[256]; - png_byte tRNS[256]; - - memset(tRNS, 255, (sizeof tRNS)); - memset(palette, 0, (sizeof palette)); - - for (i=num_trans=0; i= 3) /* RGB */ - { - palette[i].blue = (png_byte)PNG_sRGB_FROM_LINEAR(255 * - entry[(2 ^ bgr)]); - palette[i].green = (png_byte)PNG_sRGB_FROM_LINEAR(255 * - entry[1]); - palette[i].red = (png_byte)PNG_sRGB_FROM_LINEAR(255 * - entry[bgr]); - } - - else /* Gray */ - palette[i].blue = palette[i].red = palette[i].green = - (png_byte)PNG_sRGB_FROM_LINEAR(255 * *entry); - } - - else /* alpha */ - { - png_uint_16 alpha = entry[afirst ? 0 : channels-1]; - png_byte alphabyte = (png_byte)PNG_DIV257(alpha); - png_uint_32 reciprocal = 0; - - /* Calculate a reciprocal, as in the png_write_image_8bit code above - * this is designed to produce a value scaled to 255*65535 when - * divided by 128 (i.e. asr 7). - */ - if (alphabyte > 0 && alphabyte < 255) - reciprocal = (((0xffff*0xff)<<7)+(alpha>>1))/alpha; - - tRNS[i] = alphabyte; - if (alphabyte < 255) - num_trans = i+1; - - if (channels >= 3) /* RGB */ - { - palette[i].blue = png_unpremultiply(entry[afirst + (2 ^ bgr)], - alpha, reciprocal); - palette[i].green = png_unpremultiply(entry[afirst + 1], alpha, - reciprocal); - palette[i].red = png_unpremultiply(entry[afirst + bgr], alpha, - reciprocal); - } - - else /* gray */ - palette[i].blue = palette[i].red = palette[i].green = - png_unpremultiply(entry[afirst], alpha, reciprocal); - } - } - - else /* Color-map has sRGB values */ - { - png_const_bytep entry = png_voidcast(png_const_bytep, cmap); - - entry += (unsigned int)i * channels; - - switch (channels) - { - case 4: - tRNS[i] = entry[afirst ? 0 : 3]; - if (tRNS[i] < 255) - num_trans = i+1; - /* FALLTHROUGH */ - case 3: - palette[i].blue = entry[afirst + (2 ^ bgr)]; - palette[i].green = entry[afirst + 1]; - palette[i].red = entry[afirst + bgr]; - break; - - case 2: - tRNS[i] = entry[1 ^ afirst]; - if (tRNS[i] < 255) - num_trans = i+1; - /* FALLTHROUGH */ - case 1: - palette[i].blue = palette[i].red = palette[i].green = - entry[afirst]; - break; - - default: - break; - } - } - } - -# ifdef afirst -# undef afirst -# endif -# ifdef bgr -# undef bgr -# endif - - png_set_PLTE(image->opaque->png_ptr, image->opaque->info_ptr, palette, - entries); - - if (num_trans > 0) - png_set_tRNS(image->opaque->png_ptr, image->opaque->info_ptr, tRNS, - num_trans, NULL); - - image->colormap_entries = (png_uint_32)entries; -} - -static int -png_image_write_main(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - png_uint_32 format = image->format; - - /* The following four ints are actually booleans */ - int colormap = (format & PNG_FORMAT_FLAG_COLORMAP); - int linear = !colormap && (format & PNG_FORMAT_FLAG_LINEAR); /* input */ - int alpha = !colormap && (format & PNG_FORMAT_FLAG_ALPHA); - int write_16bit = linear && (display->convert_to_8bit == 0); - -# ifdef PNG_BENIGN_ERRORS_SUPPORTED - /* Make sure we error out on any bad situation */ - png_set_benign_errors(png_ptr, 0/*error*/); -# endif - - /* Default the 'row_stride' parameter if required, also check the row stride - * and total image size to ensure that they are within the system limits. - */ - { - const unsigned int channels = PNG_IMAGE_PIXEL_CHANNELS(image->format); - - if (image->width <= 0x7fffffffU/channels) /* no overflow */ - { - png_uint_32 check; - const png_uint_32 png_row_stride = image->width * channels; - - if (display->row_stride == 0) - display->row_stride = (png_int_32)/*SAFE*/png_row_stride; - - if (display->row_stride < 0) - check = (png_uint_32)(-display->row_stride); - - else - check = (png_uint_32)display->row_stride; - - if (check >= png_row_stride) - { - /* Now check for overflow of the image buffer calculation; this - * limits the whole image size to 32 bits for API compatibility with - * the current, 32-bit, PNG_IMAGE_BUFFER_SIZE macro. - */ - if (image->height > 0xffffffffU/png_row_stride) - png_error(image->opaque->png_ptr, "memory image too large"); - } - - else - png_error(image->opaque->png_ptr, "supplied row stride too small"); - } - - else - png_error(image->opaque->png_ptr, "image row stride too large"); - } - - /* Set the required transforms then write the rows in the correct order. */ - if ((format & PNG_FORMAT_FLAG_COLORMAP) != 0) - { - if (display->colormap != NULL && image->colormap_entries > 0) - { - png_uint_32 entries = image->colormap_entries; - - png_set_IHDR(png_ptr, info_ptr, image->width, image->height, - entries > 16 ? 8 : (entries > 4 ? 4 : (entries > 2 ? 2 : 1)), - PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - png_image_set_PLTE(display); - } - - else - png_error(image->opaque->png_ptr, - "no color-map for color-mapped image"); - } - - else - png_set_IHDR(png_ptr, info_ptr, image->width, image->height, - write_16bit ? 16 : 8, - ((format & PNG_FORMAT_FLAG_COLOR) ? PNG_COLOR_MASK_COLOR : 0) + - ((format & PNG_FORMAT_FLAG_ALPHA) ? PNG_COLOR_MASK_ALPHA : 0), - PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - /* Counter-intuitively the data transformations must be called *after* - * png_write_info, not before as in the read code, but the 'set' functions - * must still be called before. Just set the color space information, never - * write an interlaced image. - */ - - if (write_16bit != 0) - { - /* The gamma here is 1.0 (linear) and the cHRM chunk matches sRGB. */ - png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_LINEAR); - - if ((image->flags & PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB) == 0) - png_set_cHRM_fixed(png_ptr, info_ptr, - /* color x y */ - /* white */ 31270, 32900, - /* red */ 64000, 33000, - /* green */ 30000, 60000, - /* blue */ 15000, 6000 - ); - } - - else if ((image->flags & PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB) == 0) - png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_PERCEPTUAL); - - /* Else writing an 8-bit file and the *colors* aren't sRGB, but the 8-bit - * space must still be gamma encoded. - */ - else - png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_sRGB_INVERSE); - - /* Write the file header. */ - png_write_info(png_ptr, info_ptr); - - /* Now set up the data transformations (*after* the header is written), - * remove the handled transformations from the 'format' flags for checking. - * - * First check for a little endian system if writing 16-bit files. - */ - if (write_16bit != 0) - { - PNG_CONST png_uint_16 le = 0x0001; - - if ((*(png_const_bytep) & le) != 0) - png_set_swap(png_ptr); - } - -# ifdef PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED - if ((format & PNG_FORMAT_FLAG_BGR) != 0) - { - if (colormap == 0 && (format & PNG_FORMAT_FLAG_COLOR) != 0) - png_set_bgr(png_ptr); - format &= ~PNG_FORMAT_FLAG_BGR; - } -# endif - -# ifdef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED - if ((format & PNG_FORMAT_FLAG_AFIRST) != 0) - { - if (colormap == 0 && (format & PNG_FORMAT_FLAG_ALPHA) != 0) - png_set_swap_alpha(png_ptr); - format &= ~PNG_FORMAT_FLAG_AFIRST; - } -# endif - - /* If there are 16 or fewer color-map entries we wrote a lower bit depth - * above, but the application data is still byte packed. - */ - if (colormap != 0 && image->colormap_entries <= 16) - png_set_packing(png_ptr); - - /* That should have handled all (both) the transforms. */ - if ((format & ~(png_uint_32)(PNG_FORMAT_FLAG_COLOR | PNG_FORMAT_FLAG_LINEAR | - PNG_FORMAT_FLAG_ALPHA | PNG_FORMAT_FLAG_COLORMAP)) != 0) - png_error(png_ptr, "png_write_image: unsupported transformation"); - - { - png_const_bytep row = png_voidcast(png_const_bytep, display->buffer); - ptrdiff_t row_bytes = display->row_stride; - - if (linear != 0) - row_bytes *= (sizeof (png_uint_16)); - - if (row_bytes < 0) - row += (image->height-1) * (-row_bytes); - - display->first_row = row; - display->row_bytes = row_bytes; - } - - /* Apply 'fast' options if the flag is set. */ - if ((image->flags & PNG_IMAGE_FLAG_FAST) != 0) - { - png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, PNG_NO_FILTERS); - /* NOTE: determined by experiment using pngstest, this reflects some - * balance between the time to write the image once and the time to read - * it about 50 times. The speed-up in pngstest was about 10-20% of the - * total (user) time on a heavily loaded system. - */ -# ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED - png_set_compression_level(png_ptr, 3); -# endif - } - - /* Check for the cases that currently require a pre-transform on the row - * before it is written. This only applies when the input is 16-bit and - * either there is an alpha channel or it is converted to 8-bit. - */ - if ((linear != 0 && alpha != 0 ) || - (colormap == 0 && display->convert_to_8bit != 0)) - { - png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr, - png_get_rowbytes(png_ptr, info_ptr))); - int result; - - display->local_row = row; - if (write_16bit != 0) - result = png_safe_execute(image, png_write_image_16bit, display); - else - result = png_safe_execute(image, png_write_image_8bit, display); - display->local_row = NULL; - - png_free(png_ptr, row); - - /* Skip the 'write_end' on error: */ - if (result == 0) - return 0; - } - - /* Otherwise this is the case where the input is in a format currently - * supported by the rest of the libpng write code; call it directly. - */ - else - { - png_const_bytep row = png_voidcast(png_const_bytep, display->first_row); - ptrdiff_t row_bytes = display->row_bytes; - png_uint_32 y = image->height; - - for (; y > 0; --y) - { - png_write_row(png_ptr, row); - row += row_bytes; - } - } - - png_write_end(png_ptr, info_ptr); - return 1; -} - - -static void (PNGCBAPI -image_memory_write)(png_structp png_ptr, png_bytep/*const*/ data, - png_size_t size) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - png_ptr->io_ptr/*backdoor: png_get_io_ptr(png_ptr)*/); - const png_alloc_size_t ob = display->output_bytes; - - /* Check for overflow; this should never happen: */ - if (size <= ((png_alloc_size_t)-1) - ob) - { - /* I don't think libpng ever does this, but just in case: */ - if (size > 0) - { - if (display->memory_bytes >= ob+size) /* writing */ - memcpy(display->memory+ob, data, size); - - /* Always update the size: */ - display->output_bytes = ob+size; - } - } - - else - png_error(png_ptr, "png_image_write_to_memory: PNG too big"); -} - -static void (PNGCBAPI -image_memory_flush)(png_structp png_ptr) -{ - PNG_UNUSED(png_ptr) -} - -static int -png_image_write_memory(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - - /* The rest of the memory-specific init and write_main in an error protected - * environment. This case needs to use callbacks for the write operations - * since libpng has no built in support for writing to memory. - */ - png_set_write_fn(display->image->opaque->png_ptr, display/*io_ptr*/, - image_memory_write, image_memory_flush); - - return png_image_write_main(display); -} - -int PNGAPI -png_image_write_to_memory(png_imagep image, void *memory, - png_alloc_size_t * PNG_RESTRICT memory_bytes, int convert_to_8bit, - const void *buffer, png_int_32 row_stride, const void *colormap) -{ - /* Write the image to the given buffer, or count the bytes if it is NULL */ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (memory_bytes != NULL && buffer != NULL) - { - /* This is to give the caller an easier error detection in the NULL - * case and guard against uninitialized variable problems: - */ - if (memory == NULL) - *memory_bytes = 0; - - if (png_image_write_init(image) != 0) - { - png_image_write_control display; - int result; - - memset(&display, 0, (sizeof display)); - display.image = image; - display.buffer = buffer; - display.row_stride = row_stride; - display.colormap = colormap; - display.convert_to_8bit = convert_to_8bit; - display.memory = png_voidcast(png_bytep, memory); - display.memory_bytes = *memory_bytes; - display.output_bytes = 0; - - result = png_safe_execute(image, png_image_write_memory, &display); - png_image_free(image); - - /* write_memory returns true even if we ran out of buffer. */ - if (result) - { - /* On out-of-buffer this function returns '0' but still updates - * memory_bytes: - */ - if (memory != NULL && display.output_bytes > *memory_bytes) - result = 0; - - *memory_bytes = display.output_bytes; - } - - return result; - } - - else - return 0; - } - - else - return png_image_error(image, - "png_image_write_to_memory: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_write_to_memory: incorrect PNG_IMAGE_VERSION"); - - else - return 0; -} - -#ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -int PNGAPI -png_image_write_to_stdio(png_imagep image, FILE *file, int convert_to_8bit, - const void *buffer, png_int_32 row_stride, const void *colormap) -{ - /* Write the image to the given (FILE*). */ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file != NULL && buffer != NULL) - { - if (png_image_write_init(image) != 0) - { - png_image_write_control display; - int result; - - /* This is slightly evil, but png_init_io doesn't do anything other - * than this and we haven't changed the standard IO functions so - * this saves a 'safe' function. - */ - image->opaque->png_ptr->io_ptr = file; - - memset(&display, 0, (sizeof display)); - display.image = image; - display.buffer = buffer; - display.row_stride = row_stride; - display.colormap = colormap; - display.convert_to_8bit = convert_to_8bit; - - result = png_safe_execute(image, png_image_write_main, &display); - png_image_free(image); - return result; - } - - else - return 0; - } - - else - return png_image_error(image, - "png_image_write_to_stdio: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_write_to_stdio: incorrect PNG_IMAGE_VERSION"); - - else - return 0; -} - -int PNGAPI -png_image_write_to_file(png_imagep image, const char *file_name, - int convert_to_8bit, const void *buffer, png_int_32 row_stride, - const void *colormap) -{ - /* Write the image to the named file. */ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file_name != NULL && buffer != NULL) - { - FILE *fp = fopen(file_name, "wb"); - - if (fp != NULL) - { - if (png_image_write_to_stdio(image, fp, convert_to_8bit, buffer, - row_stride, colormap) != 0) - { - int error; /* from fflush/fclose */ - - /* Make sure the file is flushed correctly. */ - if (fflush(fp) == 0 && ferror(fp) == 0) - { - if (fclose(fp) == 0) - return 1; - - error = errno; /* from fclose */ - } - - else - { - error = errno; /* from fflush or ferror */ - (void)fclose(fp); - } - - (void)remove(file_name); - /* The image has already been cleaned up; this is just used to - * set the error (because the original write succeeded). - */ - return png_image_error(image, strerror(error)); - } - - else - { - /* Clean up: just the opened file. */ - (void)fclose(fp); - (void)remove(file_name); - return 0; - } - } - - else - return png_image_error(image, strerror(errno)); - } - - else - return png_image_error(image, - "png_image_write_to_file: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_write_to_file: incorrect PNG_IMAGE_VERSION"); - - else - return 0; -} -#endif /* SIMPLIFIED_WRITE_STDIO */ -#endif /* SIMPLIFIED_WRITE */ -#endif /* WRITE */ diff --git a/src/png/libpng/pngwtran.c b/src/png/libpng/pngwtran.c deleted file mode 100644 index 377b43e5c..000000000 --- a/src/png/libpng/pngwtran.c +++ /dev/null @@ -1,576 +0,0 @@ - -/* pngwtran.c - transforms the data in a row for PNG writers - * - * Last changed in libpng 1.6.26 [October 20, 2016] - * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED - -#ifdef PNG_WRITE_PACK_SUPPORTED -/* Pack pixels into bytes. Pass the true bit depth in bit_depth. The - * row_info bit depth should be 8 (one pixel per byte). The channels - * should be 1 (this only happens on grayscale and paletted images). - */ -static void -png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth) -{ - png_debug(1, "in png_do_pack"); - - if (row_info->bit_depth == 8 && - row_info->channels == 1) - { - switch ((int)bit_depth) - { - case 1: - { - png_bytep sp, dp; - int mask, v; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - sp = row; - dp = row; - mask = 0x80; - v = 0; - - for (i = 0; i < row_width; i++) - { - if (*sp != 0) - v |= mask; - - sp++; - - if (mask > 1) - mask >>= 1; - - else - { - mask = 0x80; - *dp = (png_byte)v; - dp++; - v = 0; - } - } - - if (mask != 0x80) - *dp = (png_byte)v; - - break; - } - - case 2: - { - png_bytep sp, dp; - unsigned int shift; - int v; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - sp = row; - dp = row; - shift = 6; - v = 0; - - for (i = 0; i < row_width; i++) - { - png_byte value; - - value = (png_byte)(*sp & 0x03); - v |= (value << shift); - - if (shift == 0) - { - shift = 6; - *dp = (png_byte)v; - dp++; - v = 0; - } - - else - shift -= 2; - - sp++; - } - - if (shift != 6) - *dp = (png_byte)v; - - break; - } - - case 4: - { - png_bytep sp, dp; - unsigned int shift; - int v; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - sp = row; - dp = row; - shift = 4; - v = 0; - - for (i = 0; i < row_width; i++) - { - png_byte value; - - value = (png_byte)(*sp & 0x0f); - v |= (value << shift); - - if (shift == 0) - { - shift = 4; - *dp = (png_byte)v; - dp++; - v = 0; - } - - else - shift -= 4; - - sp++; - } - - if (shift != 4) - *dp = (png_byte)v; - - break; - } - - default: - break; - } - - row_info->bit_depth = (png_byte)bit_depth; - row_info->pixel_depth = (png_byte)(bit_depth * row_info->channels); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, - row_info->width); - } -} -#endif - -#ifdef PNG_WRITE_SHIFT_SUPPORTED -/* Shift pixel values to take advantage of whole range. Pass the - * true number of bits in bit_depth. The row should be packed - * according to row_info->bit_depth. Thus, if you had a row of - * bit depth 4, but the pixels only had values from 0 to 7, you - * would pass 3 as bit_depth, and this routine would translate the - * data to 0 to 15. - */ -static void -png_do_shift(png_row_infop row_info, png_bytep row, - png_const_color_8p bit_depth) -{ - png_debug(1, "in png_do_shift"); - - if (row_info->color_type != PNG_COLOR_TYPE_PALETTE) - { - int shift_start[4], shift_dec[4]; - unsigned int channels = 0; - - if ((row_info->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - shift_start[channels] = row_info->bit_depth - bit_depth->red; - shift_dec[channels] = bit_depth->red; - channels++; - - shift_start[channels] = row_info->bit_depth - bit_depth->green; - shift_dec[channels] = bit_depth->green; - channels++; - - shift_start[channels] = row_info->bit_depth - bit_depth->blue; - shift_dec[channels] = bit_depth->blue; - channels++; - } - - else - { - shift_start[channels] = row_info->bit_depth - bit_depth->gray; - shift_dec[channels] = bit_depth->gray; - channels++; - } - - if ((row_info->color_type & PNG_COLOR_MASK_ALPHA) != 0) - { - shift_start[channels] = row_info->bit_depth - bit_depth->alpha; - shift_dec[channels] = bit_depth->alpha; - channels++; - } - - /* With low row depths, could only be grayscale, so one channel */ - if (row_info->bit_depth < 8) - { - png_bytep bp = row; - png_size_t i; - unsigned int mask; - png_size_t row_bytes = row_info->rowbytes; - - if (bit_depth->gray == 1 && row_info->bit_depth == 2) - mask = 0x55; - - else if (row_info->bit_depth == 4 && bit_depth->gray == 3) - mask = 0x11; - - else - mask = 0xff; - - for (i = 0; i < row_bytes; i++, bp++) - { - int j; - unsigned int v, out; - - v = *bp; - out = 0; - - for (j = shift_start[0]; j > -shift_dec[0]; j -= shift_dec[0]) - { - if (j > 0) - out |= v << j; - - else - out |= (v >> (-j)) & mask; - } - - *bp = (png_byte)(out & 0xff); - } - } - - else if (row_info->bit_depth == 8) - { - png_bytep bp = row; - png_uint_32 i; - png_uint_32 istop = channels * row_info->width; - - for (i = 0; i < istop; i++, bp++) - { - - const unsigned int c = i%channels; - int j; - unsigned int v, out; - - v = *bp; - out = 0; - - for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) - { - if (j > 0) - out |= v << j; - - else - out |= v >> (-j); - } - - *bp = (png_byte)(out & 0xff); - } - } - - else - { - png_bytep bp; - png_uint_32 i; - png_uint_32 istop = channels * row_info->width; - - for (bp = row, i = 0; i < istop; i++) - { - const unsigned int c = i%channels; - int j; - unsigned int value, v; - - v = png_get_uint_16(bp); - value = 0; - - for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) - { - if (j > 0) - value |= v << j; - - else - value |= v >> (-j); - } - *bp++ = (png_byte)((value >> 8) & 0xff); - *bp++ = (png_byte)(value & 0xff); - } - } - } -} -#endif - -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED -static void -png_do_write_swap_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_swap_alpha"); - - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This converts from ARGB to RGBA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save; - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This converts from AARRGGBB to RRGGBBAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save[2]; - save[0] = *(sp++); - save[1] = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save[0]; - *(dp++) = save[1]; - } - } -#endif /* WRITE_16BIT */ - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This converts from AG to GA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save; - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This converts from AAGG to GGAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save[2]; - save[0] = *(sp++); - save[1] = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save[0]; - *(dp++) = save[1]; - } - } -#endif /* WRITE_16BIT */ - } - } -} -#endif - -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED -static void -png_do_write_invert_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_invert_alpha"); - - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in RGBA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - /* Does nothing - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - */ - sp+=3; dp = sp; - *dp = (png_byte)(255 - *(sp++)); - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This inverts the alpha channel in RRGGBBAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - /* Does nothing - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - */ - sp+=6; dp = sp; - *(dp++) = (png_byte)(255 - *(sp++)); - *dp = (png_byte)(255 - *(sp++)); - } - } -#endif /* WRITE_16BIT */ - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in GA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - *(dp++) = *(sp++); - *(dp++) = (png_byte)(255 - *(sp++)); - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This inverts the alpha channel in GGAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - /* Does nothing - *(dp++) = *(sp++); - *(dp++) = *(sp++); - */ - sp+=2; dp = sp; - *(dp++) = (png_byte)(255 - *(sp++)); - *dp = (png_byte)(255 - *(sp++)); - } - } -#endif /* WRITE_16BIT */ - } - } -} -#endif - -/* Transform the data according to the user's wishes. The order of - * transformations is significant. - */ -void /* PRIVATE */ -png_do_write_transformations(png_structrp png_ptr, png_row_infop row_info) -{ - png_debug(1, "in png_do_write_transformations"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - if ((png_ptr->transformations & PNG_USER_TRANSFORM) != 0) - if (png_ptr->write_user_transform_fn != NULL) - (*(png_ptr->write_user_transform_fn)) /* User write transform - function */ - (png_ptr, /* png_ptr */ - row_info, /* row_info: */ - /* png_uint_32 width; width of row */ - /* png_size_t rowbytes; number of bytes in row */ - /* png_byte color_type; color type of pixels */ - /* png_byte bit_depth; bit depth of samples */ - /* png_byte channels; number of channels (1-4) */ - /* png_byte pixel_depth; bits per pixel (depth*channels) */ - png_ptr->row_buf + 1); /* start of pixel data for row */ -#endif - -#ifdef PNG_WRITE_FILLER_SUPPORTED - if ((png_ptr->transformations & PNG_FILLER) != 0) - png_do_strip_channel(row_info, png_ptr->row_buf + 1, - !(png_ptr->flags & PNG_FLAG_FILLER_AFTER)); -#endif - -#ifdef PNG_WRITE_PACKSWAP_SUPPORTED - if ((png_ptr->transformations & PNG_PACKSWAP) != 0) - png_do_packswap(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_PACK_SUPPORTED - if ((png_ptr->transformations & PNG_PACK) != 0) - png_do_pack(row_info, png_ptr->row_buf + 1, - (png_uint_32)png_ptr->bit_depth); -#endif - -#ifdef PNG_WRITE_SWAP_SUPPORTED -# ifdef PNG_16BIT_SUPPORTED - if ((png_ptr->transformations & PNG_SWAP_BYTES) != 0) - png_do_swap(row_info, png_ptr->row_buf + 1); -# endif -#endif - -#ifdef PNG_WRITE_SHIFT_SUPPORTED - if ((png_ptr->transformations & PNG_SHIFT) != 0) - png_do_shift(row_info, png_ptr->row_buf + 1, - &(png_ptr->shift)); -#endif - -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_SWAP_ALPHA) != 0) - png_do_write_swap_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0) - png_do_write_invert_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_BGR_SUPPORTED - if ((png_ptr->transformations & PNG_BGR) != 0) - png_do_bgr(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_INVERT_SUPPORTED - if ((png_ptr->transformations & PNG_INVERT_MONO) != 0) - png_do_invert(row_info, png_ptr->row_buf + 1); -#endif -} -#endif /* WRITE_TRANSFORMS */ -#endif /* WRITE */ diff --git a/src/png/libpng/pngwutil.c b/src/png/libpng/pngwutil.c deleted file mode 100644 index 0d4fb1336..000000000 --- a/src/png/libpng/pngwutil.c +++ /dev/null @@ -1,2784 +0,0 @@ - -/* pngwutil.c - utilities to write a PNG file - * - * Last changed in libpng 1.6.32 [August 24, 2017] - * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#ifdef PNG_WRITE_SUPPORTED - -#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -/* Place a 32-bit number into a buffer in PNG byte order. We work - * with unsigned numbers for convenience, although one supported - * ancillary chunk uses signed (two's complement) numbers. - */ -void PNGAPI -png_save_uint_32(png_bytep buf, png_uint_32 i) -{ - buf[0] = (png_byte)((i >> 24) & 0xffU); - buf[1] = (png_byte)((i >> 16) & 0xffU); - buf[2] = (png_byte)((i >> 8) & 0xffU); - buf[3] = (png_byte)( i & 0xffU); -} - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -void PNGAPI -png_save_uint_16(png_bytep buf, unsigned int i) -{ - buf[0] = (png_byte)((i >> 8) & 0xffU); - buf[1] = (png_byte)( i & 0xffU); -} -#endif - -/* Simple function to write the signature. If we have already written - * the magic bytes of the signature, or more likely, the PNG stream is - * being embedded into another stream and doesn't need its own signature, - * we should call png_set_sig_bytes() to tell libpng how many of the - * bytes have already been written. - */ -void PNGAPI -png_write_sig(png_structrp png_ptr) -{ - png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10}; - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that the signature is being written */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_SIGNATURE; -#endif - - /* Write the rest of the 8 byte signature */ - png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes], - (png_size_t)(8 - png_ptr->sig_bytes)); - - if (png_ptr->sig_bytes < 3) - png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE; -} - -/* Write the start of a PNG chunk. The type is the chunk type. - * The total_length is the sum of the lengths of all the data you will be - * passing in png_write_chunk_data(). - */ -static void -png_write_chunk_header(png_structrp png_ptr, png_uint_32 chunk_name, - png_uint_32 length) -{ - png_byte buf[8]; - -#if defined(PNG_DEBUG) && (PNG_DEBUG > 0) - PNG_CSTRING_FROM_CHUNK(buf, chunk_name); - png_debug2(0, "Writing %s chunk, length = %lu", buf, (unsigned long)length); -#endif - - if (png_ptr == NULL) - return; - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that the chunk header is being written. - * PNG_IO_CHUNK_HDR requires a single I/O call. - */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_HDR; -#endif - - /* Write the length and the chunk name */ - png_save_uint_32(buf, length); - png_save_uint_32(buf + 4, chunk_name); - png_write_data(png_ptr, buf, 8); - - /* Put the chunk name into png_ptr->chunk_name */ - png_ptr->chunk_name = chunk_name; - - /* Reset the crc and run it over the chunk name */ - png_reset_crc(png_ptr); - - png_calculate_crc(png_ptr, buf + 4, 4); - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that chunk data will (possibly) be written. - * PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls. - */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_DATA; -#endif -} - -void PNGAPI -png_write_chunk_start(png_structrp png_ptr, png_const_bytep chunk_string, - png_uint_32 length) -{ - png_write_chunk_header(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), length); -} - -/* Write the data of a PNG chunk started with png_write_chunk_header(). - * Note that multiple calls to this function are allowed, and that the - * sum of the lengths from these calls *must* add up to the total_length - * given to png_write_chunk_header(). - */ -void PNGAPI -png_write_chunk_data(png_structrp png_ptr, png_const_bytep data, - png_size_t length) -{ - /* Write the data, and run the CRC over it */ - if (png_ptr == NULL) - return; - - if (data != NULL && length > 0) - { - png_write_data(png_ptr, data, length); - - /* Update the CRC after writing the data, - * in case the user I/O routine alters it. - */ - png_calculate_crc(png_ptr, data, length); - } -} - -/* Finish a chunk started with png_write_chunk_header(). */ -void PNGAPI -png_write_chunk_end(png_structrp png_ptr) -{ - png_byte buf[4]; - - if (png_ptr == NULL) return; - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that the chunk CRC is being written. - * PNG_IO_CHUNK_CRC requires a single I/O function call. - */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_CRC; -#endif - - /* Write the crc in a single operation */ - png_save_uint_32(buf, png_ptr->crc); - - png_write_data(png_ptr, buf, (png_size_t)4); -} - -/* Write a PNG chunk all at once. The type is an array of ASCII characters - * representing the chunk name. The array must be at least 4 bytes in - * length, and does not need to be null terminated. To be safe, pass the - * pre-defined chunk names here, and if you need a new one, define it - * where the others are defined. The length is the length of the data. - * All the data must be present. If that is not possible, use the - * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end() - * functions instead. - */ -static void -png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name, - png_const_bytep data, png_size_t length) -{ - if (png_ptr == NULL) - return; - - /* On 64-bit architectures 'length' may not fit in a png_uint_32. */ - if (length > PNG_UINT_31_MAX) - png_error(png_ptr, "length exceeds PNG maximum"); - - png_write_chunk_header(png_ptr, chunk_name, (png_uint_32)length); - png_write_chunk_data(png_ptr, data, length); - png_write_chunk_end(png_ptr); -} - -/* This is the API that calls the internal function above. */ -void PNGAPI -png_write_chunk(png_structrp png_ptr, png_const_bytep chunk_string, - png_const_bytep data, png_size_t length) -{ - png_write_complete_chunk(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), data, - length); -} - -/* This is used below to find the size of an image to pass to png_deflate_claim, - * so it only needs to be accurate if the size is less than 16384 bytes (the - * point at which a lower LZ window size can be used.) - */ -static png_alloc_size_t -png_image_size(png_structrp png_ptr) -{ - /* Only return sizes up to the maximum of a png_uint_32; do this by limiting - * the width and height used to 15 bits. - */ - png_uint_32 h = png_ptr->height; - - if (png_ptr->rowbytes < 32768 && h < 32768) - { - if (png_ptr->interlaced != 0) - { - /* Interlacing makes the image larger because of the replication of - * both the filter byte and the padding to a byte boundary. - */ - png_uint_32 w = png_ptr->width; - unsigned int pd = png_ptr->pixel_depth; - png_alloc_size_t cb_base; - int pass; - - for (cb_base=0, pass=0; pass<=6; ++pass) - { - png_uint_32 pw = PNG_PASS_COLS(w, pass); - - if (pw > 0) - cb_base += (PNG_ROWBYTES(pd, pw)+1) * PNG_PASS_ROWS(h, pass); - } - - return cb_base; - } - - else - return (png_ptr->rowbytes+1) * h; - } - - else - return 0xffffffffU; -} - -#ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - /* This is the code to hack the first two bytes of the deflate stream (the - * deflate header) to correct the windowBits value to match the actual data - * size. Note that the second argument is the *uncompressed* size but the - * first argument is the *compressed* data (and it must be deflate - * compressed.) - */ -static void -optimize_cmf(png_bytep data, png_alloc_size_t data_size) -{ - /* Optimize the CMF field in the zlib stream. The resultant zlib stream is - * still compliant to the stream specification. - */ - if (data_size <= 16384) /* else windowBits must be 15 */ - { - unsigned int z_cmf = data[0]; /* zlib compression method and flags */ - - if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70) - { - unsigned int z_cinfo; - unsigned int half_z_window_size; - - z_cinfo = z_cmf >> 4; - half_z_window_size = 1U << (z_cinfo + 7); - - if (data_size <= half_z_window_size) /* else no change */ - { - unsigned int tmp; - - do - { - half_z_window_size >>= 1; - --z_cinfo; - } - while (z_cinfo > 0 && data_size <= half_z_window_size); - - z_cmf = (z_cmf & 0x0f) | (z_cinfo << 4); - - data[0] = (png_byte)z_cmf; - tmp = data[1] & 0xe0; - tmp += 0x1f - ((z_cmf << 8) + tmp) % 0x1f; - data[1] = (png_byte)tmp; - } - } - } -} -#endif /* WRITE_OPTIMIZE_CMF */ - -/* Initialize the compressor for the appropriate type of compression. */ -static int -png_deflate_claim(png_structrp png_ptr, png_uint_32 owner, - png_alloc_size_t data_size) -{ - if (png_ptr->zowner != 0) - { -#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_ERROR_TEXT_SUPPORTED) - char msg[64]; - - PNG_STRING_FROM_CHUNK(msg, owner); - msg[4] = ':'; - msg[5] = ' '; - PNG_STRING_FROM_CHUNK(msg+6, png_ptr->zowner); - /* So the message that results is " using zstream"; this is an - * internal error, but is very useful for debugging. i18n requirements - * are minimal. - */ - (void)png_safecat(msg, (sizeof msg), 10, " using zstream"); -#endif -#if PNG_RELEASE_BUILD - png_warning(png_ptr, msg); - - /* Attempt sane error recovery */ - if (png_ptr->zowner == png_IDAT) /* don't steal from IDAT */ - { - png_ptr->zstream.msg = PNGZ_MSG_CAST("in use by IDAT"); - return Z_STREAM_ERROR; - } - - png_ptr->zowner = 0; -#else - png_error(png_ptr, msg); -#endif - } - - { - int level = png_ptr->zlib_level; - int method = png_ptr->zlib_method; - int windowBits = png_ptr->zlib_window_bits; - int memLevel = png_ptr->zlib_mem_level; - int strategy; /* set below */ - int ret; /* zlib return code */ - - if (owner == png_IDAT) - { - if ((png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY) != 0) - strategy = png_ptr->zlib_strategy; - - else if (png_ptr->do_filter != PNG_FILTER_NONE) - strategy = PNG_Z_DEFAULT_STRATEGY; - - else - strategy = PNG_Z_DEFAULT_NOFILTER_STRATEGY; - } - - else - { -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED - level = png_ptr->zlib_text_level; - method = png_ptr->zlib_text_method; - windowBits = png_ptr->zlib_text_window_bits; - memLevel = png_ptr->zlib_text_mem_level; - strategy = png_ptr->zlib_text_strategy; -#else - /* If customization is not supported the values all come from the - * IDAT values except for the strategy, which is fixed to the - * default. (This is the pre-1.6.0 behavior too, although it was - * implemented in a very different way.) - */ - strategy = Z_DEFAULT_STRATEGY; -#endif - } - - /* Adjust 'windowBits' down if larger than 'data_size'; to stop this - * happening just pass 32768 as the data_size parameter. Notice that zlib - * requires an extra 262 bytes in the window in addition to the data to be - * able to see the whole of the data, so if data_size+262 takes us to the - * next windowBits size we need to fix up the value later. (Because even - * though deflate needs the extra window, inflate does not!) - */ - if (data_size <= 16384) - { - /* IMPLEMENTATION NOTE: this 'half_window_size' stuff is only here to - * work round a Microsoft Visual C misbehavior which, contrary to C-90, - * widens the result of the following shift to 64-bits if (and, - * apparently, only if) it is used in a test. - */ - unsigned int half_window_size = 1U << (windowBits-1); - - while (data_size + 262 <= half_window_size) - { - half_window_size >>= 1; - --windowBits; - } - } - - /* Check against the previous initialized values, if any. */ - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0 && - (png_ptr->zlib_set_level != level || - png_ptr->zlib_set_method != method || - png_ptr->zlib_set_window_bits != windowBits || - png_ptr->zlib_set_mem_level != memLevel || - png_ptr->zlib_set_strategy != strategy)) - { - if (deflateEnd(&png_ptr->zstream) != Z_OK) - png_warning(png_ptr, "deflateEnd failed (ignored)"); - - png_ptr->flags &= ~PNG_FLAG_ZSTREAM_INITIALIZED; - } - - /* For safety clear out the input and output pointers (currently zlib - * doesn't use them on Init, but it might in the future). - */ - png_ptr->zstream.next_in = NULL; - png_ptr->zstream.avail_in = 0; - png_ptr->zstream.next_out = NULL; - png_ptr->zstream.avail_out = 0; - - /* Now initialize if required, setting the new parameters, otherwise just - * do a simple reset to the previous parameters. - */ - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0) - ret = deflateReset(&png_ptr->zstream); - - else - { - ret = deflateInit2(&png_ptr->zstream, level, method, windowBits, - memLevel, strategy); - - if (ret == Z_OK) - png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED; - } - - /* The return code is from either deflateReset or deflateInit2; they have - * pretty much the same set of error codes. - */ - if (ret == Z_OK) - png_ptr->zowner = owner; - - else - png_zstream_error(png_ptr, ret); - - return ret; - } -} - -/* Clean up (or trim) a linked list of compression buffers. */ -void /* PRIVATE */ -png_free_buffer_list(png_structrp png_ptr, png_compression_bufferp *listp) -{ - png_compression_bufferp list = *listp; - - if (list != NULL) - { - *listp = NULL; - - do - { - png_compression_bufferp next = list->next; - - png_free(png_ptr, list); - list = next; - } - while (list != NULL); - } -} - -#ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED -/* This pair of functions encapsulates the operation of (a) compressing a - * text string, and (b) issuing it later as a series of chunk data writes. - * The compression_state structure is shared context for these functions - * set up by the caller to allow access to the relevant local variables. - * - * compression_buffer (new in 1.6.0) is just a linked list of zbuffer_size - * temporary buffers. From 1.6.0 it is retained in png_struct so that it will - * be correctly freed in the event of a write error (previous implementations - * just leaked memory.) - */ -typedef struct -{ - png_const_bytep input; /* The uncompressed input data */ - png_alloc_size_t input_len; /* Its length */ - png_uint_32 output_len; /* Final compressed length */ - png_byte output[1024]; /* First block of output */ -} compression_state; - -static void -png_text_compress_init(compression_state *comp, png_const_bytep input, - png_alloc_size_t input_len) -{ - comp->input = input; - comp->input_len = input_len; - comp->output_len = 0; -} - -/* Compress the data in the compression state input */ -static int -png_text_compress(png_structrp png_ptr, png_uint_32 chunk_name, - compression_state *comp, png_uint_32 prefix_len) -{ - int ret; - - /* To find the length of the output it is necessary to first compress the - * input. The result is buffered rather than using the two-pass algorithm - * that is used on the inflate side; deflate is assumed to be slower and a - * PNG writer is assumed to have more memory available than a PNG reader. - * - * IMPLEMENTATION NOTE: the zlib API deflateBound() can be used to find an - * upper limit on the output size, but it is always bigger than the input - * size so it is likely to be more efficient to use this linked-list - * approach. - */ - ret = png_deflate_claim(png_ptr, chunk_name, comp->input_len); - - if (ret != Z_OK) - return ret; - - /* Set up the compression buffers, we need a loop here to avoid overflowing a - * uInt. Use ZLIB_IO_MAX to limit the input. The output is always limited - * by the output buffer size, so there is no need to check that. Since this - * is ANSI-C we know that an 'int', hence a uInt, is always at least 16 bits - * in size. - */ - { - png_compression_bufferp *end = &png_ptr->zbuffer_list; - png_alloc_size_t input_len = comp->input_len; /* may be zero! */ - png_uint_32 output_len; - - /* zlib updates these for us: */ - png_ptr->zstream.next_in = PNGZ_INPUT_CAST(comp->input); - png_ptr->zstream.avail_in = 0; /* Set below */ - png_ptr->zstream.next_out = comp->output; - png_ptr->zstream.avail_out = (sizeof comp->output); - - output_len = png_ptr->zstream.avail_out; - - do - { - uInt avail_in = ZLIB_IO_MAX; - - if (avail_in > input_len) - avail_in = (uInt)input_len; - - input_len -= avail_in; - - png_ptr->zstream.avail_in = avail_in; - - if (png_ptr->zstream.avail_out == 0) - { - png_compression_buffer *next; - - /* Chunk data is limited to 2^31 bytes in length, so the prefix - * length must be counted here. - */ - if (output_len + prefix_len > PNG_UINT_31_MAX) - { - ret = Z_MEM_ERROR; - break; - } - - /* Need a new (malloc'ed) buffer, but there may be one present - * already. - */ - next = *end; - if (next == NULL) - { - next = png_voidcast(png_compression_bufferp, png_malloc_base - (png_ptr, PNG_COMPRESSION_BUFFER_SIZE(png_ptr))); - - if (next == NULL) - { - ret = Z_MEM_ERROR; - break; - } - - /* Link in this buffer (so that it will be freed later) */ - next->next = NULL; - *end = next; - } - - png_ptr->zstream.next_out = next->output; - png_ptr->zstream.avail_out = png_ptr->zbuffer_size; - output_len += png_ptr->zstream.avail_out; - - /* Move 'end' to the next buffer pointer. */ - end = &next->next; - } - - /* Compress the data */ - ret = deflate(&png_ptr->zstream, - input_len > 0 ? Z_NO_FLUSH : Z_FINISH); - - /* Claw back input data that was not consumed (because avail_in is - * reset above every time round the loop). - */ - input_len += png_ptr->zstream.avail_in; - png_ptr->zstream.avail_in = 0; /* safety */ - } - while (ret == Z_OK); - - /* There may be some space left in the last output buffer. This needs to - * be subtracted from output_len. - */ - output_len -= png_ptr->zstream.avail_out; - png_ptr->zstream.avail_out = 0; /* safety */ - comp->output_len = output_len; - - /* Now double check the output length, put in a custom message if it is - * too long. Otherwise ensure the z_stream::msg pointer is set to - * something. - */ - if (output_len + prefix_len >= PNG_UINT_31_MAX) - { - png_ptr->zstream.msg = PNGZ_MSG_CAST("compressed data too long"); - ret = Z_MEM_ERROR; - } - - else - png_zstream_error(png_ptr, ret); - - /* Reset zlib for another zTXt/iTXt or image data */ - png_ptr->zowner = 0; - - /* The only success case is Z_STREAM_END, input_len must be 0; if not this - * is an internal error. - */ - if (ret == Z_STREAM_END && input_len == 0) - { -#ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - /* Fix up the deflate header, if required */ - optimize_cmf(comp->output, comp->input_len); -#endif - /* But Z_OK is returned, not Z_STREAM_END; this allows the claim - * function above to return Z_STREAM_END on an error (though it never - * does in the current versions of zlib.) - */ - return Z_OK; - } - - else - return ret; - } -} - -/* Ship the compressed text out via chunk writes */ -static void -png_write_compressed_data_out(png_structrp png_ptr, compression_state *comp) -{ - png_uint_32 output_len = comp->output_len; - png_const_bytep output = comp->output; - png_uint_32 avail = (sizeof comp->output); - png_compression_buffer *next = png_ptr->zbuffer_list; - - for (;;) - { - if (avail > output_len) - avail = output_len; - - png_write_chunk_data(png_ptr, output, avail); - - output_len -= avail; - - if (output_len == 0 || next == NULL) - break; - - avail = png_ptr->zbuffer_size; - output = next->output; - next = next->next; - } - - /* This is an internal error; 'next' must have been NULL! */ - if (output_len > 0) - png_error(png_ptr, "error writing ancillary chunked compressed data"); -} -#endif /* WRITE_COMPRESSED_TEXT */ - -/* Write the IHDR chunk, and update the png_struct with the necessary - * information. Note that the rest of this code depends upon this - * information being correct. - */ -void /* PRIVATE */ -png_write_IHDR(png_structrp png_ptr, png_uint_32 width, png_uint_32 height, - int bit_depth, int color_type, int compression_type, int filter_type, - int interlace_type) -{ - png_byte buf[13]; /* Buffer to store the IHDR info */ - int is_invalid_depth; - - png_debug(1, "in png_write_IHDR"); - - /* Check that we have valid input data from the application info */ - switch (color_type) - { - case PNG_COLOR_TYPE_GRAY: - switch (bit_depth) - { - case 1: - case 2: - case 4: - case 8: -#ifdef PNG_WRITE_16BIT_SUPPORTED - case 16: -#endif - png_ptr->channels = 1; break; - - default: - png_error(png_ptr, - "Invalid bit depth for grayscale image"); - } - break; - - case PNG_COLOR_TYPE_RGB: - is_invalid_depth = (bit_depth != 8); -#ifdef PNG_WRITE_16BIT_SUPPORTED - is_invalid_depth = (is_invalid_depth && bit_depth != 16); -#endif - if (is_invalid_depth) - png_error(png_ptr, "Invalid bit depth for RGB image"); - - png_ptr->channels = 3; - break; - - case PNG_COLOR_TYPE_PALETTE: - switch (bit_depth) - { - case 1: - case 2: - case 4: - case 8: - png_ptr->channels = 1; - break; - - default: - png_error(png_ptr, "Invalid bit depth for paletted image"); - } - break; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - is_invalid_depth = (bit_depth != 8); -#ifdef PNG_WRITE_16BIT_SUPPORTED - is_invalid_depth = (is_invalid_depth && bit_depth != 16); -#endif - if (is_invalid_depth) - png_error(png_ptr, "Invalid bit depth for grayscale+alpha image"); - - png_ptr->channels = 2; - break; - - case PNG_COLOR_TYPE_RGB_ALPHA: - is_invalid_depth = (bit_depth != 8); -#ifdef PNG_WRITE_16BIT_SUPPORTED - is_invalid_depth = (is_invalid_depth && bit_depth != 16); -#endif - if (is_invalid_depth) - png_error(png_ptr, "Invalid bit depth for RGBA image"); - - png_ptr->channels = 4; - break; - - default: - png_error(png_ptr, "Invalid image color type specified"); - } - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - { - png_warning(png_ptr, "Invalid compression type specified"); - compression_type = PNG_COMPRESSION_TYPE_BASE; - } - - /* Write filter_method 64 (intrapixel differencing) only if - * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and - * 2. Libpng did not write a PNG signature (this filter_method is only - * used in PNG datastreams that are embedded in MNG datastreams) and - * 3. The application called png_permit_mng_features with a mask that - * included PNG_FLAG_MNG_FILTER_64 and - * 4. The filter_method is 64 and - * 5. The color_type is RGB or RGBA - */ - if ( -#ifdef PNG_MNG_FEATURES_SUPPORTED - !((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 && - ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) == 0) && - (color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_RGB_ALPHA) && - (filter_type == PNG_INTRAPIXEL_DIFFERENCING)) && -#endif - filter_type != PNG_FILTER_TYPE_BASE) - { - png_warning(png_ptr, "Invalid filter type specified"); - filter_type = PNG_FILTER_TYPE_BASE; - } - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - if (interlace_type != PNG_INTERLACE_NONE && - interlace_type != PNG_INTERLACE_ADAM7) - { - png_warning(png_ptr, "Invalid interlace type specified"); - interlace_type = PNG_INTERLACE_ADAM7; - } -#else - interlace_type=PNG_INTERLACE_NONE; -#endif - - /* Save the relevant information */ - png_ptr->bit_depth = (png_byte)bit_depth; - png_ptr->color_type = (png_byte)color_type; - png_ptr->interlaced = (png_byte)interlace_type; -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_ptr->filter_type = (png_byte)filter_type; -#endif - png_ptr->compression_type = (png_byte)compression_type; - png_ptr->width = width; - png_ptr->height = height; - - png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels); - png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width); - /* Set the usr info, so any transformations can modify it */ - png_ptr->usr_width = png_ptr->width; - png_ptr->usr_bit_depth = png_ptr->bit_depth; - png_ptr->usr_channels = png_ptr->channels; - - /* Pack the header information into the buffer */ - png_save_uint_32(buf, width); - png_save_uint_32(buf + 4, height); - buf[8] = (png_byte)bit_depth; - buf[9] = (png_byte)color_type; - buf[10] = (png_byte)compression_type; - buf[11] = (png_byte)filter_type; - buf[12] = (png_byte)interlace_type; - - /* Write the chunk */ - png_write_complete_chunk(png_ptr, png_IHDR, buf, (png_size_t)13); - - if ((png_ptr->do_filter) == PNG_NO_FILTERS) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE || - png_ptr->bit_depth < 8) - png_ptr->do_filter = PNG_FILTER_NONE; - - else - png_ptr->do_filter = PNG_ALL_FILTERS; - } - - png_ptr->mode = PNG_HAVE_IHDR; /* not READY_FOR_ZTXT */ -} - -/* Write the palette. We are careful not to trust png_color to be in the - * correct order for PNG, so people can redefine it to any convenient - * structure. - */ -void /* PRIVATE */ -png_write_PLTE(png_structrp png_ptr, png_const_colorp palette, - png_uint_32 num_pal) -{ - png_uint_32 max_palette_length, i; - png_const_colorp pal_ptr; - png_byte buf[3]; - - png_debug(1, "in png_write_PLTE"); - - max_palette_length = (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ? - (1 << png_ptr->bit_depth) : PNG_MAX_PALETTE_LENGTH; - - if (( -#ifdef PNG_MNG_FEATURES_SUPPORTED - (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0 && -#endif - num_pal == 0) || num_pal > max_palette_length) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_error(png_ptr, "Invalid number of colors in palette"); - } - - else - { - png_warning(png_ptr, "Invalid number of colors in palette"); - return; - } - } - - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0) - { - png_warning(png_ptr, - "Ignoring request to write a PLTE chunk in grayscale PNG"); - - return; - } - - png_ptr->num_palette = (png_uint_16)num_pal; - png_debug1(3, "num_palette = %d", png_ptr->num_palette); - - png_write_chunk_header(png_ptr, png_PLTE, (png_uint_32)(num_pal * 3)); -#ifdef PNG_POINTER_INDEXING_SUPPORTED - - for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++) - { - buf[0] = pal_ptr->red; - buf[1] = pal_ptr->green; - buf[2] = pal_ptr->blue; - png_write_chunk_data(png_ptr, buf, (png_size_t)3); - } - -#else - /* This is a little slower but some buggy compilers need to do this - * instead - */ - pal_ptr=palette; - - for (i = 0; i < num_pal; i++) - { - buf[0] = pal_ptr[i].red; - buf[1] = pal_ptr[i].green; - buf[2] = pal_ptr[i].blue; - png_write_chunk_data(png_ptr, buf, (png_size_t)3); - } - -#endif - png_write_chunk_end(png_ptr); - png_ptr->mode |= PNG_HAVE_PLTE; -} - -/* This is similar to png_text_compress, above, except that it does not require - * all of the data at once and, instead of buffering the compressed result, - * writes it as IDAT chunks. Unlike png_text_compress it *can* png_error out - * because it calls the write interface. As a result it does its own error - * reporting and does not return an error code. In the event of error it will - * just call png_error. The input data length may exceed 32-bits. The 'flush' - * parameter is exactly the same as that to deflate, with the following - * meanings: - * - * Z_NO_FLUSH: normal incremental output of compressed data - * Z_SYNC_FLUSH: do a SYNC_FLUSH, used by png_write_flush - * Z_FINISH: this is the end of the input, do a Z_FINISH and clean up - * - * The routine manages the acquire and release of the png_ptr->zstream by - * checking and (at the end) clearing png_ptr->zowner; it does some sanity - * checks on the 'mode' flags while doing this. - */ -void /* PRIVATE */ -png_compress_IDAT(png_structrp png_ptr, png_const_bytep input, - png_alloc_size_t input_len, int flush) -{ - if (png_ptr->zowner != png_IDAT) - { - /* First time. Ensure we have a temporary buffer for compression and - * trim the buffer list if it has more than one entry to free memory. - * If 'WRITE_COMPRESSED_TEXT' is not set the list will never have been - * created at this point, but the check here is quick and safe. - */ - if (png_ptr->zbuffer_list == NULL) - { - png_ptr->zbuffer_list = png_voidcast(png_compression_bufferp, - png_malloc(png_ptr, PNG_COMPRESSION_BUFFER_SIZE(png_ptr))); - png_ptr->zbuffer_list->next = NULL; - } - - else - png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list->next); - - /* It is a terminal error if we can't claim the zstream. */ - if (png_deflate_claim(png_ptr, png_IDAT, png_image_size(png_ptr)) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - /* The output state is maintained in png_ptr->zstream, so it must be - * initialized here after the claim. - */ - png_ptr->zstream.next_out = png_ptr->zbuffer_list->output; - png_ptr->zstream.avail_out = png_ptr->zbuffer_size; - } - - /* Now loop reading and writing until all the input is consumed or an error - * terminates the operation. The _out values are maintained across calls to - * this function, but the input must be reset each time. - */ - png_ptr->zstream.next_in = PNGZ_INPUT_CAST(input); - png_ptr->zstream.avail_in = 0; /* set below */ - for (;;) - { - int ret; - - /* INPUT: from the row data */ - uInt avail = ZLIB_IO_MAX; - - if (avail > input_len) - avail = (uInt)input_len; /* safe because of the check */ - - png_ptr->zstream.avail_in = avail; - input_len -= avail; - - ret = deflate(&png_ptr->zstream, input_len > 0 ? Z_NO_FLUSH : flush); - - /* Include as-yet unconsumed input */ - input_len += png_ptr->zstream.avail_in; - png_ptr->zstream.avail_in = 0; - - /* OUTPUT: write complete IDAT chunks when avail_out drops to zero. Note - * that these two zstream fields are preserved across the calls, therefore - * there is no need to set these up on entry to the loop. - */ - if (png_ptr->zstream.avail_out == 0) - { - png_bytep data = png_ptr->zbuffer_list->output; - uInt size = png_ptr->zbuffer_size; - - /* Write an IDAT containing the data then reset the buffer. The - * first IDAT may need deflate header optimization. - */ -#ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - if ((png_ptr->mode & PNG_HAVE_IDAT) == 0 && - png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE) - optimize_cmf(data, png_image_size(png_ptr)); -#endif - - if (size > 0) - png_write_complete_chunk(png_ptr, png_IDAT, data, size); - png_ptr->mode |= PNG_HAVE_IDAT; - - png_ptr->zstream.next_out = data; - png_ptr->zstream.avail_out = size; - - /* For SYNC_FLUSH or FINISH it is essential to keep calling zlib with - * the same flush parameter until it has finished output, for NO_FLUSH - * it doesn't matter. - */ - if (ret == Z_OK && flush != Z_NO_FLUSH) - continue; - } - - /* The order of these checks doesn't matter much; it just affects which - * possible error might be detected if multiple things go wrong at once. - */ - if (ret == Z_OK) /* most likely return code! */ - { - /* If all the input has been consumed then just return. If Z_FINISH - * was used as the flush parameter something has gone wrong if we get - * here. - */ - if (input_len == 0) - { - if (flush == Z_FINISH) - png_error(png_ptr, "Z_OK on Z_FINISH with output space"); - - return; - } - } - - else if (ret == Z_STREAM_END && flush == Z_FINISH) - { - /* This is the end of the IDAT data; any pending output must be - * flushed. For small PNG files we may still be at the beginning. - */ - png_bytep data = png_ptr->zbuffer_list->output; - uInt size = png_ptr->zbuffer_size - png_ptr->zstream.avail_out; - -#ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - if ((png_ptr->mode & PNG_HAVE_IDAT) == 0 && - png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE) - optimize_cmf(data, png_image_size(png_ptr)); -#endif - - if (size > 0) - png_write_complete_chunk(png_ptr, png_IDAT, data, size); - png_ptr->zstream.avail_out = 0; - png_ptr->zstream.next_out = NULL; - png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT; - - png_ptr->zowner = 0; /* Release the stream */ - return; - } - - else - { - /* This is an error condition. */ - png_zstream_error(png_ptr, ret); - png_error(png_ptr, png_ptr->zstream.msg); - } - } -} - -/* Write an IEND chunk */ -void /* PRIVATE */ -png_write_IEND(png_structrp png_ptr) -{ - png_debug(1, "in png_write_IEND"); - - png_write_complete_chunk(png_ptr, png_IEND, NULL, (png_size_t)0); - png_ptr->mode |= PNG_HAVE_IEND; -} - -#ifdef PNG_WRITE_gAMA_SUPPORTED -/* Write a gAMA chunk */ -void /* PRIVATE */ -png_write_gAMA_fixed(png_structrp png_ptr, png_fixed_point file_gamma) -{ - png_byte buf[4]; - - png_debug(1, "in png_write_gAMA"); - - /* file_gamma is saved in 1/100,000ths */ - png_save_uint_32(buf, (png_uint_32)file_gamma); - png_write_complete_chunk(png_ptr, png_gAMA, buf, (png_size_t)4); -} -#endif - -#ifdef PNG_WRITE_sRGB_SUPPORTED -/* Write a sRGB chunk */ -void /* PRIVATE */ -png_write_sRGB(png_structrp png_ptr, int srgb_intent) -{ - png_byte buf[1]; - - png_debug(1, "in png_write_sRGB"); - - if (srgb_intent >= PNG_sRGB_INTENT_LAST) - png_warning(png_ptr, - "Invalid sRGB rendering intent specified"); - - buf[0]=(png_byte)srgb_intent; - png_write_complete_chunk(png_ptr, png_sRGB, buf, (png_size_t)1); -} -#endif - -#ifdef PNG_WRITE_iCCP_SUPPORTED -/* Write an iCCP chunk */ -void /* PRIVATE */ -png_write_iCCP(png_structrp png_ptr, png_const_charp name, - png_const_bytep profile) -{ - png_uint_32 name_len; - png_uint_32 profile_len; - png_byte new_name[81]; /* 1 byte for the compression byte */ - compression_state comp; - png_uint_32 temp; - - png_debug(1, "in png_write_iCCP"); - - /* These are all internal problems: the profile should have been checked - * before when it was stored. - */ - if (profile == NULL) - png_error(png_ptr, "No profile for iCCP chunk"); /* internal error */ - - profile_len = png_get_uint_32(profile); - - if (profile_len < 132) - png_error(png_ptr, "ICC profile too short"); - - temp = (png_uint_32) (*(profile+8)); - if (temp > 3 && (profile_len & 0x03)) - png_error(png_ptr, "ICC profile length invalid (not a multiple of 4)"); - - { - png_uint_32 embedded_profile_len = png_get_uint_32(profile); - - if (profile_len != embedded_profile_len) - png_error(png_ptr, "Profile length does not match profile"); - } - - name_len = png_check_keyword(png_ptr, name, new_name); - - if (name_len == 0) - png_error(png_ptr, "iCCP: invalid keyword"); - - new_name[++name_len] = PNG_COMPRESSION_TYPE_BASE; - - /* Make sure we include the NULL after the name and the compression type */ - ++name_len; - - png_text_compress_init(&comp, profile, profile_len); - - /* Allow for keyword terminator and compression byte */ - if (png_text_compress(png_ptr, png_iCCP, &comp, name_len) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - png_write_chunk_header(png_ptr, png_iCCP, name_len + comp.output_len); - - png_write_chunk_data(png_ptr, new_name, name_len); - - png_write_compressed_data_out(png_ptr, &comp); - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_sPLT_SUPPORTED -/* Write a sPLT chunk */ -void /* PRIVATE */ -png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette) -{ - png_uint_32 name_len; - png_byte new_name[80]; - png_byte entrybuf[10]; - png_size_t entry_size = (spalette->depth == 8 ? 6 : 10); - png_size_t palette_size = entry_size * (png_size_t)spalette->nentries; - png_sPLT_entryp ep; -#ifndef PNG_POINTER_INDEXING_SUPPORTED - int i; -#endif - - png_debug(1, "in png_write_sPLT"); - - name_len = png_check_keyword(png_ptr, spalette->name, new_name); - - if (name_len == 0) - png_error(png_ptr, "sPLT: invalid keyword"); - - /* Make sure we include the NULL after the name */ - png_write_chunk_header(png_ptr, png_sPLT, - (png_uint_32)(name_len + 2 + palette_size)); - - png_write_chunk_data(png_ptr, (png_bytep)new_name, - (png_size_t)(name_len + 1)); - - png_write_chunk_data(png_ptr, &spalette->depth, (png_size_t)1); - - /* Loop through each palette entry, writing appropriately */ -#ifdef PNG_POINTER_INDEXING_SUPPORTED - for (ep = spalette->entries; epentries + spalette->nentries; ep++) - { - if (spalette->depth == 8) - { - entrybuf[0] = (png_byte)ep->red; - entrybuf[1] = (png_byte)ep->green; - entrybuf[2] = (png_byte)ep->blue; - entrybuf[3] = (png_byte)ep->alpha; - png_save_uint_16(entrybuf + 4, ep->frequency); - } - - else - { - png_save_uint_16(entrybuf + 0, ep->red); - png_save_uint_16(entrybuf + 2, ep->green); - png_save_uint_16(entrybuf + 4, ep->blue); - png_save_uint_16(entrybuf + 6, ep->alpha); - png_save_uint_16(entrybuf + 8, ep->frequency); - } - - png_write_chunk_data(png_ptr, entrybuf, entry_size); - } -#else - ep=spalette->entries; - for (i = 0; i>spalette->nentries; i++) - { - if (spalette->depth == 8) - { - entrybuf[0] = (png_byte)ep[i].red; - entrybuf[1] = (png_byte)ep[i].green; - entrybuf[2] = (png_byte)ep[i].blue; - entrybuf[3] = (png_byte)ep[i].alpha; - png_save_uint_16(entrybuf + 4, ep[i].frequency); - } - - else - { - png_save_uint_16(entrybuf + 0, ep[i].red); - png_save_uint_16(entrybuf + 2, ep[i].green); - png_save_uint_16(entrybuf + 4, ep[i].blue); - png_save_uint_16(entrybuf + 6, ep[i].alpha); - png_save_uint_16(entrybuf + 8, ep[i].frequency); - } - - png_write_chunk_data(png_ptr, entrybuf, entry_size); - } -#endif - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_sBIT_SUPPORTED -/* Write the sBIT chunk */ -void /* PRIVATE */ -png_write_sBIT(png_structrp png_ptr, png_const_color_8p sbit, int color_type) -{ - png_byte buf[4]; - png_size_t size; - - png_debug(1, "in png_write_sBIT"); - - /* Make sure we don't depend upon the order of PNG_COLOR_8 */ - if ((color_type & PNG_COLOR_MASK_COLOR) != 0) - { - png_byte maxbits; - - maxbits = (png_byte)(color_type==PNG_COLOR_TYPE_PALETTE ? 8 : - png_ptr->usr_bit_depth); - - if (sbit->red == 0 || sbit->red > maxbits || - sbit->green == 0 || sbit->green > maxbits || - sbit->blue == 0 || sbit->blue > maxbits) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - - buf[0] = sbit->red; - buf[1] = sbit->green; - buf[2] = sbit->blue; - size = 3; - } - - else - { - if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - - buf[0] = sbit->gray; - size = 1; - } - - if ((color_type & PNG_COLOR_MASK_ALPHA) != 0) - { - if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - - buf[size++] = sbit->alpha; - } - - png_write_complete_chunk(png_ptr, png_sBIT, buf, size); -} -#endif - -#ifdef PNG_WRITE_cHRM_SUPPORTED -/* Write the cHRM chunk */ -void /* PRIVATE */ -png_write_cHRM_fixed(png_structrp png_ptr, const png_xy *xy) -{ - png_byte buf[32]; - - png_debug(1, "in png_write_cHRM"); - - /* Each value is saved in 1/100,000ths */ - png_save_int_32(buf, xy->whitex); - png_save_int_32(buf + 4, xy->whitey); - - png_save_int_32(buf + 8, xy->redx); - png_save_int_32(buf + 12, xy->redy); - - png_save_int_32(buf + 16, xy->greenx); - png_save_int_32(buf + 20, xy->greeny); - - png_save_int_32(buf + 24, xy->bluex); - png_save_int_32(buf + 28, xy->bluey); - - png_write_complete_chunk(png_ptr, png_cHRM, buf, 32); -} -#endif - -#ifdef PNG_WRITE_tRNS_SUPPORTED -/* Write the tRNS chunk */ -void /* PRIVATE */ -png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha, - png_const_color_16p tran, int num_trans, int color_type) -{ - png_byte buf[6]; - - png_debug(1, "in png_write_tRNS"); - - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette) - { - png_app_warning(png_ptr, - "Invalid number of transparent colors specified"); - return; - } - - /* Write the chunk out as it is */ - png_write_complete_chunk(png_ptr, png_tRNS, trans_alpha, - (png_size_t)num_trans); - } - - else if (color_type == PNG_COLOR_TYPE_GRAY) - { - /* One 16-bit value */ - if (tran->gray >= (1 << png_ptr->bit_depth)) - { - png_app_warning(png_ptr, - "Ignoring attempt to write tRNS chunk out-of-range for bit_depth"); - - return; - } - - png_save_uint_16(buf, tran->gray); - png_write_complete_chunk(png_ptr, png_tRNS, buf, (png_size_t)2); - } - - else if (color_type == PNG_COLOR_TYPE_RGB) - { - /* Three 16-bit values */ - png_save_uint_16(buf, tran->red); - png_save_uint_16(buf + 2, tran->green); - png_save_uint_16(buf + 4, tran->blue); -#ifdef PNG_WRITE_16BIT_SUPPORTED - if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]) != 0) -#else - if ((buf[0] | buf[2] | buf[4]) != 0) -#endif - { - png_app_warning(png_ptr, - "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8"); - return; - } - - png_write_complete_chunk(png_ptr, png_tRNS, buf, (png_size_t)6); - } - - else - { - png_app_warning(png_ptr, "Can't write tRNS with an alpha channel"); - } -} -#endif - -#ifdef PNG_WRITE_bKGD_SUPPORTED -/* Write the background chunk */ -void /* PRIVATE */ -png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type) -{ - png_byte buf[6]; - - png_debug(1, "in png_write_bKGD"); - - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - if ( -#ifdef PNG_MNG_FEATURES_SUPPORTED - (png_ptr->num_palette != 0 || - (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0) && -#endif - back->index >= png_ptr->num_palette) - { - png_warning(png_ptr, "Invalid background palette index"); - return; - } - - buf[0] = back->index; - png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)1); - } - - else if ((color_type & PNG_COLOR_MASK_COLOR) != 0) - { - png_save_uint_16(buf, back->red); - png_save_uint_16(buf + 2, back->green); - png_save_uint_16(buf + 4, back->blue); -#ifdef PNG_WRITE_16BIT_SUPPORTED - if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]) != 0) -#else - if ((buf[0] | buf[2] | buf[4]) != 0) -#endif - { - png_warning(png_ptr, - "Ignoring attempt to write 16-bit bKGD chunk " - "when bit_depth is 8"); - - return; - } - - png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)6); - } - - else - { - if (back->gray >= (1 << png_ptr->bit_depth)) - { - png_warning(png_ptr, - "Ignoring attempt to write bKGD chunk out-of-range for bit_depth"); - - return; - } - - png_save_uint_16(buf, back->gray); - png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)2); - } -} -#endif - -#ifdef PNG_WRITE_eXIf_SUPPORTED -/* Write the Exif data */ -void /* PRIVATE */ -png_write_eXIf(png_structrp png_ptr, png_bytep exif, int num_exif) -{ - int i; - png_byte buf[1]; - - png_debug(1, "in png_write_eXIf"); - - png_write_chunk_header(png_ptr, png_eXIf, (png_uint_32)(num_exif)); - - for (i = 0; i < num_exif; i++) - { - buf[0] = exif[i]; - png_write_chunk_data(png_ptr, buf, (png_size_t)1); - } - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_hIST_SUPPORTED -/* Write the histogram */ -void /* PRIVATE */ -png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist) -{ - int i; - png_byte buf[3]; - - png_debug(1, "in png_write_hIST"); - - if (num_hist > (int)png_ptr->num_palette) - { - png_debug2(3, "num_hist = %d, num_palette = %d", num_hist, - png_ptr->num_palette); - - png_warning(png_ptr, "Invalid number of histogram entries specified"); - return; - } - - png_write_chunk_header(png_ptr, png_hIST, (png_uint_32)(num_hist * 2)); - - for (i = 0; i < num_hist; i++) - { - png_save_uint_16(buf, hist[i]); - png_write_chunk_data(png_ptr, buf, (png_size_t)2); - } - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_tEXt_SUPPORTED -/* Write a tEXt chunk */ -void /* PRIVATE */ -png_write_tEXt(png_structrp png_ptr, png_const_charp key, png_const_charp text, - png_size_t text_len) -{ - png_uint_32 key_len; - png_byte new_key[80]; - - png_debug(1, "in png_write_tEXt"); - - key_len = png_check_keyword(png_ptr, key, new_key); - - if (key_len == 0) - png_error(png_ptr, "tEXt: invalid keyword"); - - if (text == NULL || *text == '\0') - text_len = 0; - - else - text_len = strlen(text); - - if (text_len > PNG_UINT_31_MAX - (key_len+1)) - png_error(png_ptr, "tEXt: text too long"); - - /* Make sure we include the 0 after the key */ - png_write_chunk_header(png_ptr, png_tEXt, - (png_uint_32)/*checked above*/(key_len + text_len + 1)); - /* - * We leave it to the application to meet PNG-1.0 requirements on the - * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of - * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them. - * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG. - */ - png_write_chunk_data(png_ptr, new_key, key_len + 1); - - if (text_len != 0) - png_write_chunk_data(png_ptr, (png_const_bytep)text, text_len); - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_zTXt_SUPPORTED -/* Write a compressed text chunk */ -void /* PRIVATE */ -png_write_zTXt(png_structrp png_ptr, png_const_charp key, png_const_charp text, - int compression) -{ - png_uint_32 key_len; - png_byte new_key[81]; - compression_state comp; - - png_debug(1, "in png_write_zTXt"); - - if (compression == PNG_TEXT_COMPRESSION_NONE) - { - png_write_tEXt(png_ptr, key, text, 0); - return; - } - - if (compression != PNG_TEXT_COMPRESSION_zTXt) - png_error(png_ptr, "zTXt: invalid compression type"); - - key_len = png_check_keyword(png_ptr, key, new_key); - - if (key_len == 0) - png_error(png_ptr, "zTXt: invalid keyword"); - - /* Add the compression method and 1 for the keyword separator. */ - new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE; - ++key_len; - - /* Compute the compressed data; do it now for the length */ - png_text_compress_init(&comp, (png_const_bytep)text, - text == NULL ? 0 : strlen(text)); - - if (png_text_compress(png_ptr, png_zTXt, &comp, key_len) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - /* Write start of chunk */ - png_write_chunk_header(png_ptr, png_zTXt, key_len + comp.output_len); - - /* Write key */ - png_write_chunk_data(png_ptr, new_key, key_len); - - /* Write the compressed data */ - png_write_compressed_data_out(png_ptr, &comp); - - /* Close the chunk */ - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_iTXt_SUPPORTED -/* Write an iTXt chunk */ -void /* PRIVATE */ -png_write_iTXt(png_structrp png_ptr, int compression, png_const_charp key, - png_const_charp lang, png_const_charp lang_key, png_const_charp text) -{ - png_uint_32 key_len, prefix_len; - png_size_t lang_len, lang_key_len; - png_byte new_key[82]; - compression_state comp; - - png_debug(1, "in png_write_iTXt"); - - key_len = png_check_keyword(png_ptr, key, new_key); - - if (key_len == 0) - png_error(png_ptr, "iTXt: invalid keyword"); - - /* Set the compression flag */ - switch (compression) - { - case PNG_ITXT_COMPRESSION_NONE: - case PNG_TEXT_COMPRESSION_NONE: - compression = new_key[++key_len] = 0; /* no compression */ - break; - - case PNG_TEXT_COMPRESSION_zTXt: - case PNG_ITXT_COMPRESSION_zTXt: - compression = new_key[++key_len] = 1; /* compressed */ - break; - - default: - png_error(png_ptr, "iTXt: invalid compression"); - } - - new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE; - ++key_len; /* for the keywod separator */ - - /* We leave it to the application to meet PNG-1.0 requirements on the - * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of - * any non-Latin-1 characters except for NEWLINE. ISO PNG, however, - * specifies that the text is UTF-8 and this really doesn't require any - * checking. - * - * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG. - * - * TODO: validate the language tag correctly (see the spec.) - */ - if (lang == NULL) lang = ""; /* empty language is valid */ - lang_len = strlen(lang)+1; - if (lang_key == NULL) lang_key = ""; /* may be empty */ - lang_key_len = strlen(lang_key)+1; - if (text == NULL) text = ""; /* may be empty */ - - prefix_len = key_len; - if (lang_len > PNG_UINT_31_MAX-prefix_len) - prefix_len = PNG_UINT_31_MAX; - else - prefix_len = (png_uint_32)(prefix_len + lang_len); - - if (lang_key_len > PNG_UINT_31_MAX-prefix_len) - prefix_len = PNG_UINT_31_MAX; - else - prefix_len = (png_uint_32)(prefix_len + lang_key_len); - - png_text_compress_init(&comp, (png_const_bytep)text, strlen(text)); - - if (compression != 0) - { - if (png_text_compress(png_ptr, png_iTXt, &comp, prefix_len) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - } - - else - { - if (comp.input_len > PNG_UINT_31_MAX-prefix_len) - png_error(png_ptr, "iTXt: uncompressed text too long"); - - /* So the string will fit in a chunk: */ - comp.output_len = (png_uint_32)/*SAFE*/comp.input_len; - } - - png_write_chunk_header(png_ptr, png_iTXt, comp.output_len + prefix_len); - - png_write_chunk_data(png_ptr, new_key, key_len); - - png_write_chunk_data(png_ptr, (png_const_bytep)lang, lang_len); - - png_write_chunk_data(png_ptr, (png_const_bytep)lang_key, lang_key_len); - - if (compression != 0) - png_write_compressed_data_out(png_ptr, &comp); - - else - png_write_chunk_data(png_ptr, (png_const_bytep)text, comp.output_len); - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_oFFs_SUPPORTED -/* Write the oFFs chunk */ -void /* PRIVATE */ -png_write_oFFs(png_structrp png_ptr, png_int_32 x_offset, png_int_32 y_offset, - int unit_type) -{ - png_byte buf[9]; - - png_debug(1, "in png_write_oFFs"); - - if (unit_type >= PNG_OFFSET_LAST) - png_warning(png_ptr, "Unrecognized unit type for oFFs chunk"); - - png_save_int_32(buf, x_offset); - png_save_int_32(buf + 4, y_offset); - buf[8] = (png_byte)unit_type; - - png_write_complete_chunk(png_ptr, png_oFFs, buf, (png_size_t)9); -} -#endif -#ifdef PNG_WRITE_pCAL_SUPPORTED -/* Write the pCAL chunk (described in the PNG extensions document) */ -void /* PRIVATE */ -png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0, - png_int_32 X1, int type, int nparams, png_const_charp units, - png_charpp params) -{ - png_uint_32 purpose_len; - png_size_t units_len, total_len; - png_size_tp params_len; - png_byte buf[10]; - png_byte new_purpose[80]; - int i; - - png_debug1(1, "in png_write_pCAL (%d parameters)", nparams); - - if (type >= PNG_EQUATION_LAST) - png_error(png_ptr, "Unrecognized equation type for pCAL chunk"); - - purpose_len = png_check_keyword(png_ptr, purpose, new_purpose); - - if (purpose_len == 0) - png_error(png_ptr, "pCAL: invalid keyword"); - - ++purpose_len; /* terminator */ - - png_debug1(3, "pCAL purpose length = %d", (int)purpose_len); - units_len = strlen(units) + (nparams == 0 ? 0 : 1); - png_debug1(3, "pCAL units length = %d", (int)units_len); - total_len = purpose_len + units_len + 10; - - params_len = (png_size_tp)png_malloc(png_ptr, - (png_alloc_size_t)((png_alloc_size_t)nparams * (sizeof (png_size_t)))); - - /* Find the length of each parameter, making sure we don't count the - * null terminator for the last parameter. - */ - for (i = 0; i < nparams; i++) - { - params_len[i] = strlen(params[i]) + (i == nparams - 1 ? 0 : 1); - png_debug2(3, "pCAL parameter %d length = %lu", i, - (unsigned long)params_len[i]); - total_len += params_len[i]; - } - - png_debug1(3, "pCAL total length = %d", (int)total_len); - png_write_chunk_header(png_ptr, png_pCAL, (png_uint_32)total_len); - png_write_chunk_data(png_ptr, new_purpose, purpose_len); - png_save_int_32(buf, X0); - png_save_int_32(buf + 4, X1); - buf[8] = (png_byte)type; - buf[9] = (png_byte)nparams; - png_write_chunk_data(png_ptr, buf, (png_size_t)10); - png_write_chunk_data(png_ptr, (png_const_bytep)units, (png_size_t)units_len); - - for (i = 0; i < nparams; i++) - { - png_write_chunk_data(png_ptr, (png_const_bytep)params[i], params_len[i]); - } - - png_free(png_ptr, params_len); - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_sCAL_SUPPORTED -/* Write the sCAL chunk */ -void /* PRIVATE */ -png_write_sCAL_s(png_structrp png_ptr, int unit, png_const_charp width, - png_const_charp height) -{ - png_byte buf[64]; - png_size_t wlen, hlen, total_len; - - png_debug(1, "in png_write_sCAL_s"); - - wlen = strlen(width); - hlen = strlen(height); - total_len = wlen + hlen + 2; - - if (total_len > 64) - { - png_warning(png_ptr, "Can't write sCAL (buffer too small)"); - return; - } - - buf[0] = (png_byte)unit; - memcpy(buf + 1, width, wlen + 1); /* Append the '\0' here */ - memcpy(buf + wlen + 2, height, hlen); /* Do NOT append the '\0' here */ - - png_debug1(3, "sCAL total length = %u", (unsigned int)total_len); - png_write_complete_chunk(png_ptr, png_sCAL, buf, total_len); -} -#endif - -#ifdef PNG_WRITE_pHYs_SUPPORTED -/* Write the pHYs chunk */ -void /* PRIVATE */ -png_write_pHYs(png_structrp png_ptr, png_uint_32 x_pixels_per_unit, - png_uint_32 y_pixels_per_unit, - int unit_type) -{ - png_byte buf[9]; - - png_debug(1, "in png_write_pHYs"); - - if (unit_type >= PNG_RESOLUTION_LAST) - png_warning(png_ptr, "Unrecognized unit type for pHYs chunk"); - - png_save_uint_32(buf, x_pixels_per_unit); - png_save_uint_32(buf + 4, y_pixels_per_unit); - buf[8] = (png_byte)unit_type; - - png_write_complete_chunk(png_ptr, png_pHYs, buf, (png_size_t)9); -} -#endif - -#ifdef PNG_WRITE_tIME_SUPPORTED -/* Write the tIME chunk. Use either png_convert_from_struct_tm() - * or png_convert_from_time_t(), or fill in the structure yourself. - */ -void /* PRIVATE */ -png_write_tIME(png_structrp png_ptr, png_const_timep mod_time) -{ - png_byte buf[7]; - - png_debug(1, "in png_write_tIME"); - - if (mod_time->month > 12 || mod_time->month < 1 || - mod_time->day > 31 || mod_time->day < 1 || - mod_time->hour > 23 || mod_time->second > 60) - { - png_warning(png_ptr, "Invalid time specified for tIME chunk"); - return; - } - - png_save_uint_16(buf, mod_time->year); - buf[2] = mod_time->month; - buf[3] = mod_time->day; - buf[4] = mod_time->hour; - buf[5] = mod_time->minute; - buf[6] = mod_time->second; - - png_write_complete_chunk(png_ptr, png_tIME, buf, (png_size_t)7); -} -#endif - -/* Initializes the row writing capability of libpng */ -void /* PRIVATE */ -png_write_start_row(png_structrp png_ptr) -{ -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - - png_alloc_size_t buf_size; - int usr_pixel_depth; - -#ifdef PNG_WRITE_FILTER_SUPPORTED - png_byte filters; -#endif - - png_debug(1, "in png_write_start_row"); - - usr_pixel_depth = png_ptr->usr_channels * png_ptr->usr_bit_depth; - buf_size = PNG_ROWBYTES(usr_pixel_depth, png_ptr->width) + 1; - - /* 1.5.6: added to allow checking in the row write code. */ - png_ptr->transformed_pixel_depth = png_ptr->pixel_depth; - png_ptr->maximum_pixel_depth = (png_byte)usr_pixel_depth; - - /* Set up row buffer */ - png_ptr->row_buf = png_voidcast(png_bytep, png_malloc(png_ptr, buf_size)); - - png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE; - -#ifdef PNG_WRITE_FILTER_SUPPORTED - filters = png_ptr->do_filter; - - if (png_ptr->height == 1) - filters &= 0xff & ~(PNG_FILTER_UP|PNG_FILTER_AVG|PNG_FILTER_PAETH); - - if (png_ptr->width == 1) - filters &= 0xff & ~(PNG_FILTER_SUB|PNG_FILTER_AVG|PNG_FILTER_PAETH); - - if (filters == 0) - filters = PNG_FILTER_NONE; - - png_ptr->do_filter = filters; - - if (((filters & (PNG_FILTER_SUB | PNG_FILTER_UP | PNG_FILTER_AVG | - PNG_FILTER_PAETH)) != 0) && png_ptr->try_row == NULL) - { - int num_filters = 0; - - png_ptr->try_row = png_voidcast(png_bytep, png_malloc(png_ptr, buf_size)); - - if (filters & PNG_FILTER_SUB) - num_filters++; - - if (filters & PNG_FILTER_UP) - num_filters++; - - if (filters & PNG_FILTER_AVG) - num_filters++; - - if (filters & PNG_FILTER_PAETH) - num_filters++; - - if (num_filters > 1) - png_ptr->tst_row = png_voidcast(png_bytep, png_malloc(png_ptr, - buf_size)); - } - - /* We only need to keep the previous row if we are using one of the following - * filters. - */ - if ((filters & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH)) != 0) - png_ptr->prev_row = png_voidcast(png_bytep, - png_calloc(png_ptr, buf_size)); -#endif /* WRITE_FILTER */ - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* If interlaced, we need to set up width and height of pass */ - if (png_ptr->interlaced != 0) - { - if ((png_ptr->transformations & PNG_INTERLACE) == 0) - { - png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - - png_pass_ystart[0]) / png_pass_yinc[0]; - - png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 - - png_pass_start[0]) / png_pass_inc[0]; - } - - else - { - png_ptr->num_rows = png_ptr->height; - png_ptr->usr_width = png_ptr->width; - } - } - - else -#endif - { - png_ptr->num_rows = png_ptr->height; - png_ptr->usr_width = png_ptr->width; - } -} - -/* Internal use only. Called when finished processing a row of data. */ -void /* PRIVATE */ -png_write_finish_row(png_structrp png_ptr) -{ -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - - png_debug(1, "in png_write_finish_row"); - - /* Next row */ - png_ptr->row_number++; - - /* See if we are done */ - if (png_ptr->row_number < png_ptr->num_rows) - return; - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* If interlaced, go to next pass */ - if (png_ptr->interlaced != 0) - { - png_ptr->row_number = 0; - if ((png_ptr->transformations & PNG_INTERLACE) != 0) - { - png_ptr->pass++; - } - - else - { - /* Loop until we find a non-zero width or height pass */ - do - { - png_ptr->pass++; - - if (png_ptr->pass >= 7) - break; - - png_ptr->usr_width = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - - if ((png_ptr->transformations & PNG_INTERLACE) != 0) - break; - - } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0); - - } - - /* Reset the row above the image for the next pass */ - if (png_ptr->pass < 7) - { - if (png_ptr->prev_row != NULL) - memset(png_ptr->prev_row, 0, - (png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels* - png_ptr->usr_bit_depth, png_ptr->width)) + 1); - - return; - } - } -#endif - - /* If we get here, we've just written the last row, so we need - to flush the compressor */ - png_compress_IDAT(png_ptr, NULL, 0, Z_FINISH); -} - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED -/* Pick out the correct pixels for the interlace pass. - * The basic idea here is to go through the row with a source - * pointer and a destination pointer (sp and dp), and copy the - * correct pixels for the pass. As the row gets compacted, - * sp will always be >= dp, so we should never overwrite anything. - * See the default: case for the easiest code to understand. - */ -void /* PRIVATE */ -png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass) -{ - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - png_debug(1, "in png_do_write_interlace"); - - /* We don't have to do anything on the last pass (6) */ - if (pass < 6) - { - /* Each pixel depth is handled separately */ - switch (row_info->pixel_depth) - { - case 1: - { - png_bytep sp; - png_bytep dp; - unsigned int shift; - int d; - int value; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - dp = row; - d = 0; - shift = 7; - - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 3); - value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01; - d |= (value << shift); - - if (shift == 0) - { - shift = 7; - *dp++ = (png_byte)d; - d = 0; - } - - else - shift--; - - } - if (shift != 7) - *dp = (png_byte)d; - - break; - } - - case 2: - { - png_bytep sp; - png_bytep dp; - unsigned int shift; - int d; - int value; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - dp = row; - shift = 6; - d = 0; - - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 2); - value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03; - d |= (value << shift); - - if (shift == 0) - { - shift = 6; - *dp++ = (png_byte)d; - d = 0; - } - - else - shift -= 2; - } - if (shift != 6) - *dp = (png_byte)d; - - break; - } - - case 4: - { - png_bytep sp; - png_bytep dp; - unsigned int shift; - int d; - int value; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - dp = row; - shift = 4; - d = 0; - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 1); - value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f; - d |= (value << shift); - - if (shift == 0) - { - shift = 4; - *dp++ = (png_byte)d; - d = 0; - } - - else - shift -= 4; - } - if (shift != 4) - *dp = (png_byte)d; - - break; - } - - default: - { - png_bytep sp; - png_bytep dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - png_size_t pixel_bytes; - - /* Start at the beginning */ - dp = row; - - /* Find out how many bytes each pixel takes up */ - pixel_bytes = (row_info->pixel_depth >> 3); - - /* Loop through the row, only looking at the pixels that matter */ - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - /* Find out where the original pixel is */ - sp = row + (png_size_t)i * pixel_bytes; - - /* Move the pixel */ - if (dp != sp) - memcpy(dp, sp, pixel_bytes); - - /* Next pixel */ - dp += pixel_bytes; - } - break; - } - } - /* Set new row width */ - row_info->width = (row_info->width + - png_pass_inc[pass] - 1 - - png_pass_start[pass]) / - png_pass_inc[pass]; - - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, - row_info->width); - } -} -#endif - - -/* This filters the row, chooses which filter to use, if it has not already - * been specified by the application, and then writes the row out with the - * chosen filter. - */ -static void /* PRIVATE */ -png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row, - png_size_t row_bytes); - -#ifdef PNG_WRITE_FILTER_SUPPORTED -static png_size_t /* PRIVATE */ -png_setup_sub_row(png_structrp png_ptr, const png_uint_32 bpp, - const png_size_t row_bytes, const png_size_t lmins) -{ - png_bytep rp, dp, lp; - png_size_t i; - png_size_t sum = 0; - unsigned int v; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1; i < bpp; - i++, rp++, dp++) - { - v = *dp = *rp; -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - } - - for (lp = png_ptr->row_buf + 1; i < row_bytes; - i++, rp++, lp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - - return (sum); -} - -static void /* PRIVATE */ -png_setup_sub_row_only(png_structrp png_ptr, const png_uint_32 bpp, - const png_size_t row_bytes) -{ - png_bytep rp, dp, lp; - png_size_t i; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1; i < bpp; - i++, rp++, dp++) - { - *dp = *rp; - } - - for (lp = png_ptr->row_buf + 1; i < row_bytes; - i++, rp++, lp++, dp++) - { - *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); - } -} - -static png_size_t /* PRIVATE */ -png_setup_up_row(png_structrp png_ptr, const png_size_t row_bytes, - const png_size_t lmins) -{ - png_bytep rp, dp, pp; - png_size_t i; - png_size_t sum = 0; - unsigned int v; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_UP; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1, - pp = png_ptr->prev_row + 1; i < row_bytes; - i++, rp++, pp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff); -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - - return (sum); -} -static void /* PRIVATE */ -png_setup_up_row_only(png_structrp png_ptr, const png_size_t row_bytes) -{ - png_bytep rp, dp, pp; - png_size_t i; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_UP; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1, - pp = png_ptr->prev_row + 1; i < row_bytes; - i++, rp++, pp++, dp++) - { - *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff); - } -} - -static png_size_t /* PRIVATE */ -png_setup_avg_row(png_structrp png_ptr, const png_uint_32 bpp, - const png_size_t row_bytes, const png_size_t lmins) -{ - png_bytep rp, dp, pp, lp; - png_uint_32 i; - png_size_t sum = 0; - unsigned int v; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_AVG; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1, - pp = png_ptr->prev_row + 1; i < bpp; i++) - { - v = *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff); - -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - } - - for (lp = png_ptr->row_buf + 1; i < row_bytes; i++) - { - v = *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) - & 0xff); - -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - - return (sum); -} -static void /* PRIVATE */ -png_setup_avg_row_only(png_structrp png_ptr, const png_uint_32 bpp, - const png_size_t row_bytes) -{ - png_bytep rp, dp, pp, lp; - png_uint_32 i; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_AVG; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1, - pp = png_ptr->prev_row + 1; i < bpp; i++) - { - *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff); - } - - for (lp = png_ptr->row_buf + 1; i < row_bytes; i++) - { - *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) - & 0xff); - } -} - -static png_size_t /* PRIVATE */ -png_setup_paeth_row(png_structrp png_ptr, const png_uint_32 bpp, - const png_size_t row_bytes, const png_size_t lmins) -{ - png_bytep rp, dp, pp, cp, lp; - png_size_t i; - png_size_t sum = 0; - unsigned int v; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1, - pp = png_ptr->prev_row + 1; i < bpp; i++) - { - v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); - -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - } - - for (lp = png_ptr->row_buf + 1, cp = png_ptr->prev_row + 1; i < row_bytes; - i++) - { - int a, b, c, pa, pb, pc, p; - - b = *pp++; - c = *cp++; - a = *lp++; - - p = b - c; - pc = a - c; - -#ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -#else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -#endif - - p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c; - - v = *dp++ = (png_byte)(((int)*rp++ - p) & 0xff); - -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - - return (sum); -} -static void /* PRIVATE */ -png_setup_paeth_row_only(png_structrp png_ptr, const png_uint_32 bpp, - const png_size_t row_bytes) -{ - png_bytep rp, dp, pp, cp, lp; - png_size_t i; - - png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH; - - for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1, - pp = png_ptr->prev_row + 1; i < bpp; i++) - { - *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); - } - - for (lp = png_ptr->row_buf + 1, cp = png_ptr->prev_row + 1; i < row_bytes; - i++) - { - int a, b, c, pa, pb, pc, p; - - b = *pp++; - c = *cp++; - a = *lp++; - - p = b - c; - pc = a - c; - -#ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -#else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -#endif - - p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c; - - *dp++ = (png_byte)(((int)*rp++ - p) & 0xff); - } -} -#endif /* WRITE_FILTER */ - -void /* PRIVATE */ -png_write_find_filter(png_structrp png_ptr, png_row_infop row_info) -{ -#ifndef PNG_WRITE_FILTER_SUPPORTED - png_write_filtered_row(png_ptr, png_ptr->row_buf, row_info->rowbytes+1); -#else - unsigned int filter_to_do = png_ptr->do_filter; - png_bytep row_buf; - png_bytep best_row; - png_uint_32 bpp; - png_size_t mins; - png_size_t row_bytes = row_info->rowbytes; - - png_debug(1, "in png_write_find_filter"); - - /* Find out how many bytes offset each pixel is */ - bpp = (row_info->pixel_depth + 7) >> 3; - - row_buf = png_ptr->row_buf; - mins = PNG_SIZE_MAX - 256/* so we can detect potential overflow of the - running sum */; - - /* The prediction method we use is to find which method provides the - * smallest value when summing the absolute values of the distances - * from zero, using anything >= 128 as negative numbers. This is known - * as the "minimum sum of absolute differences" heuristic. Other - * heuristics are the "weighted minimum sum of absolute differences" - * (experimental and can in theory improve compression), and the "zlib - * predictive" method (not implemented yet), which does test compressions - * of lines using different filter methods, and then chooses the - * (series of) filter(s) that give minimum compressed data size (VERY - * computationally expensive). - * - * GRR 980525: consider also - * - * (1) minimum sum of absolute differences from running average (i.e., - * keep running sum of non-absolute differences & count of bytes) - * [track dispersion, too? restart average if dispersion too large?] - * - * (1b) minimum sum of absolute differences from sliding average, probably - * with window size <= deflate window (usually 32K) - * - * (2) minimum sum of squared differences from zero or running average - * (i.e., ~ root-mean-square approach) - */ - - - /* We don't need to test the 'no filter' case if this is the only filter - * that has been chosen, as it doesn't actually do anything to the data. - */ - best_row = png_ptr->row_buf; - - if (PNG_SIZE_MAX/128 <= row_bytes) - { - /* Overflow can occur in the calculation, just select the lowest set - * filter. - */ - filter_to_do &= 0U-filter_to_do; - } - else if ((filter_to_do & PNG_FILTER_NONE) != 0 && - filter_to_do != PNG_FILTER_NONE) - { - /* Overflow not possible and multiple filters in the list, including the - * 'none' filter. - */ - png_bytep rp; - png_size_t sum = 0; - png_size_t i; - unsigned int v; - - { - for (i = 0, rp = row_buf + 1; i < row_bytes; i++, rp++) - { - v = *rp; -#ifdef PNG_USE_ABS - sum += 128 - abs((int)v - 128); -#else - sum += (v < 128) ? v : 256 - v; -#endif - } - } - - mins = sum; - } - - /* Sub filter */ - if (filter_to_do == PNG_FILTER_SUB) - /* It's the only filter so no testing is needed */ - { - png_setup_sub_row_only(png_ptr, bpp, row_bytes); - best_row = png_ptr->try_row; - } - - else if ((filter_to_do & PNG_FILTER_SUB) != 0) - { - png_size_t sum; - png_size_t lmins = mins; - - sum = png_setup_sub_row(png_ptr, bpp, row_bytes, lmins); - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->try_row; - if (png_ptr->tst_row != NULL) - { - png_ptr->try_row = png_ptr->tst_row; - png_ptr->tst_row = best_row; - } - } - } - - /* Up filter */ - if (filter_to_do == PNG_FILTER_UP) - { - png_setup_up_row_only(png_ptr, row_bytes); - best_row = png_ptr->try_row; - } - - else if ((filter_to_do & PNG_FILTER_UP) != 0) - { - png_size_t sum; - png_size_t lmins = mins; - - sum = png_setup_up_row(png_ptr, row_bytes, lmins); - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->try_row; - if (png_ptr->tst_row != NULL) - { - png_ptr->try_row = png_ptr->tst_row; - png_ptr->tst_row = best_row; - } - } - } - - /* Avg filter */ - if (filter_to_do == PNG_FILTER_AVG) - { - png_setup_avg_row_only(png_ptr, bpp, row_bytes); - best_row = png_ptr->try_row; - } - - else if ((filter_to_do & PNG_FILTER_AVG) != 0) - { - png_size_t sum; - png_size_t lmins = mins; - - sum= png_setup_avg_row(png_ptr, bpp, row_bytes, lmins); - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->try_row; - if (png_ptr->tst_row != NULL) - { - png_ptr->try_row = png_ptr->tst_row; - png_ptr->tst_row = best_row; - } - } - } - - /* Paeth filter */ - if (filter_to_do == PNG_FILTER_PAETH) - { - png_setup_paeth_row_only(png_ptr, bpp, row_bytes); - best_row = png_ptr->try_row; - } - - else if ((filter_to_do & PNG_FILTER_PAETH) != 0) - { - png_size_t sum; - png_size_t lmins = mins; - - sum = png_setup_paeth_row(png_ptr, bpp, row_bytes, lmins); - - if (sum < mins) - { - best_row = png_ptr->try_row; - if (png_ptr->tst_row != NULL) - { - png_ptr->try_row = png_ptr->tst_row; - png_ptr->tst_row = best_row; - } - } - } - - /* Do the actual writing of the filtered row data from the chosen filter. */ - png_write_filtered_row(png_ptr, best_row, row_info->rowbytes+1); - -#endif /* WRITE_FILTER */ -} - - -/* Do the actual writing of a previously filtered row. */ -static void -png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row, - png_size_t full_row_length/*includes filter byte*/) -{ - png_debug(1, "in png_write_filtered_row"); - - png_debug1(2, "filter = %d", filtered_row[0]); - - png_compress_IDAT(png_ptr, filtered_row, full_row_length, Z_NO_FLUSH); - -#ifdef PNG_WRITE_FILTER_SUPPORTED - /* Swap the current and previous rows */ - if (png_ptr->prev_row != NULL) - { - png_bytep tptr; - - tptr = png_ptr->prev_row; - png_ptr->prev_row = png_ptr->row_buf; - png_ptr->row_buf = tptr; - } -#endif /* WRITE_FILTER */ - - /* Finish row - updates counters and flushes zlib if last row */ - png_write_finish_row(png_ptr); - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_ptr->flush_rows++; - - if (png_ptr->flush_dist > 0 && - png_ptr->flush_rows >= png_ptr->flush_dist) - { - png_write_flush(png_ptr); - } -#endif /* WRITE_FLUSH */ -} -#endif /* WRITE */ diff --git a/src/png/libpng/powerpc/filter_vsx_intrinsics.c b/src/png/libpng/powerpc/filter_vsx_intrinsics.c deleted file mode 100644 index e3de496bd..000000000 --- a/src/png/libpng/powerpc/filter_vsx_intrinsics.c +++ /dev/null @@ -1,767 +0,0 @@ -/* filter_vsx_intrinsics.c - PowerPC optimised filter functions - * - * Copyright (c) 2017 Glenn Randers-Pehrson - * Written by Vadim Barkov, 2017. - * Last changed in libpng 1.6.29 [March 16, 2017] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ -#include -#include -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* This code requires -maltivec and -mvsx on the command line: */ -#if PNG_POWERPC_VSX_IMPLEMENTATION == 1 /* intrinsics code from pngpriv.h */ - -#include - -#if PNG_POWERPC_VSX_OPT > 0 - -#ifndef __VSX__ -# error "This code requires VSX support (POWER7 and later). Please provide -mvsx compiler flag." -#endif - -#define vec_ld_unaligned(vec,data) vec = vec_vsx_ld(0,data) -#define vec_st_unaligned(vec,data) vec_vsx_st(vec,0,data) - - -/* Functions in this file look at most 3 pixels (a,b,c) to predict the 4th (d). - * They're positioned like this: - * prev: c b - * row: a d - * The Sub filter predicts d=a, Avg d=(a+b)/2, and Paeth predicts d to be - * whichever of a, b, or c is closest to p=a+b-c. - * ( this is taken from ../intel/filter_sse2_intrinsics.c ) - */ - -#define vsx_declare_common_vars(row_info,row,prev_row,offset) \ - png_byte i;\ - png_bytep rp = row + offset;\ - png_const_bytep pp = prev_row;\ - png_size_t unaligned_top = 16 - (((png_size_t)rp % 16));\ - png_size_t istop;\ - if(unaligned_top == 16)\ - unaligned_top = 0;\ - istop = row_info->rowbytes;\ - if((unaligned_top < istop))\ - istop -= unaligned_top;\ - else{\ - unaligned_top = istop;\ - istop = 0;\ - } - -void png_read_filter_row_up_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - vector unsigned char rp_vec; - vector unsigned char pp_vec; - vsx_declare_common_vars(row_info,row,prev_row,0) - - /* Altivec operations require 16-byte aligned data - * but input can be unaligned. So we calculate - * unaligned part as usual. - */ - for (i = 0; i < unaligned_top; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff); - rp++; - } - - /* Using SIMD while we can */ - while( istop >= 16 ) - { - rp_vec = vec_ld(0,rp); - vec_ld_unaligned(pp_vec,pp); - - rp_vec = vec_add(rp_vec,pp_vec); - - vec_st(rp_vec,0,rp); - - pp += 16; - rp += 16; - istop -= 16; - } - - if(istop > 0) - { - /* If byte count of row is not divisible by 16 - * we will process remaining part as usual - */ - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff); - rp++; - } -} - -} - -static const vector unsigned char VSX_LEFTSHIFTED1_4 = {16,16,16,16, 0, 1, 2, 3,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_LEFTSHIFTED2_4 = {16,16,16,16,16,16,16,16, 4, 5, 6, 7,16,16,16,16}; -static const vector unsigned char VSX_LEFTSHIFTED3_4 = {16,16,16,16,16,16,16,16,16,16,16,16, 8, 9,10,11}; - -static const vector unsigned char VSX_LEFTSHIFTED1_3 = {16,16,16, 0, 1, 2,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_LEFTSHIFTED2_3 = {16,16,16,16,16,16, 3, 4, 5,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_LEFTSHIFTED3_3 = {16,16,16,16,16,16,16,16,16, 6, 7, 8,16,16,16,16}; -static const vector unsigned char VSX_LEFTSHIFTED4_3 = {16,16,16,16,16,16,16,16,16,16,16,16, 9,10,11,16}; - -static const vector unsigned char VSX_NOT_SHIFTED1_4 = {16,16,16,16, 4, 5, 6, 7,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_NOT_SHIFTED2_4 = {16,16,16,16,16,16,16,16, 8, 9,10,11,16,16,16,16}; -static const vector unsigned char VSX_NOT_SHIFTED3_4 = {16,16,16,16,16,16,16,16,16,16,16,16,12,13,14,15}; - -static const vector unsigned char VSX_NOT_SHIFTED1_3 = {16,16,16, 3, 4, 5,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_NOT_SHIFTED2_3 = {16,16,16,16,16,16, 6, 7, 8,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_NOT_SHIFTED3_3 = {16,16,16,16,16,16,16,16,16, 9,10,11,16,16,16,16}; -static const vector unsigned char VSX_NOT_SHIFTED4_3 = {16,16,16,16,16,16,16,16,16,16,16,16,12,13,14,16}; - -static const vector unsigned char VSX_CHAR_ZERO = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; -#ifdef __LITTLE_ENDIAN__ - -static const vector unsigned char VSX_CHAR_TO_SHORT1_4 = { 4,16, 5,16, 6,16, 7,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT2_4 = { 8,16, 9,16,10,16,11,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT3_4 = {12,16,13,16,14,16,15,16,16,16,16,16,16,16,16,16}; - -static const vector unsigned char VSX_SHORT_TO_CHAR1_4 = {16,16,16,16, 0, 2, 4, 6,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR2_4 = {16,16,16,16,16,16,16,16, 0, 2, 4, 6,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR3_4 = {16,16,16,16,16,16,16,16,16,16,16,16, 0, 2, 4, 6}; - -static const vector unsigned char VSX_CHAR_TO_SHORT1_3 = { 3,16, 4,16, 5,16,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT2_3 = { 6,16, 7,16, 8,16,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT3_3 = { 9,16,10,16,11,16,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT4_3 = {12,16,13,16,14,16,16,16,16,16,16,16,16,16,16,16}; - -static const vector unsigned char VSX_SHORT_TO_CHAR1_3 = {16,16,16, 0, 2, 4,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR2_3 = {16,16,16,16,16,16, 0, 2, 4,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR3_3 = {16,16,16,16,16,16,16,16,16, 0, 2, 4,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR4_3 = {16,16,16,16,16,16,16,16,16,16,16,16, 0, 2, 4,16}; - -#elif defined(__BIG_ENDIAN__) - -static const vector unsigned char VSX_CHAR_TO_SHORT1_4 = {16, 4,16, 5,16, 6,16, 7,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT2_4 = {16, 8,16, 9,16,10,16,11,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT3_4 = {16,12,16,13,16,14,16,15,16,16,16,16,16,16,16,16}; - -static const vector unsigned char VSX_SHORT_TO_CHAR1_4 = {16,16,16,16, 1, 3, 5, 7,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR2_4 = {16,16,16,16,16,16,16,16, 1, 3, 5, 7,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR3_4 = {16,16,16,16,16,16,16,16,16,16,16,16, 1, 3, 5, 7}; - -static const vector unsigned char VSX_CHAR_TO_SHORT1_3 = {16, 3,16, 4,16, 5,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT2_3 = {16, 6,16, 7,16, 8,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT3_3 = {16, 9,16,10,16,11,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_CHAR_TO_SHORT4_3 = {16,12,16,13,16,14,16,16,16,16,16,16,16,16,16,16}; - -static const vector unsigned char VSX_SHORT_TO_CHAR1_3 = {16,16,16, 1, 3, 5,16,16,16,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR2_3 = {16,16,16,16,16,16, 1, 3, 5,16,16,16,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR3_3 = {16,16,16,16,16,16,16,16,16, 1, 3, 5,16,16,16,16}; -static const vector unsigned char VSX_SHORT_TO_CHAR4_3 = {16,16,16,16,16,16,16,16,16,16,16,16, 1, 3, 5,16}; - -#endif - -#define vsx_char_to_short(vec,offset,bpp) (vector unsigned short)vec_perm((vec),VSX_CHAR_ZERO,VSX_CHAR_TO_SHORT##offset##_##bpp) -#define vsx_short_to_char(vec,offset,bpp) vec_perm(((vector unsigned char)(vec)),VSX_CHAR_ZERO,VSX_SHORT_TO_CHAR##offset##_##bpp) - -#ifdef PNG_USE_ABS -# define vsx_abs(number) abs(number) -#else -# define vsx_abs(number) (number > 0) ? (number) : -(number) -#endif - -void png_read_filter_row_sub4_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - const png_byte bpp = 4; - - vector unsigned char rp_vec; - vector unsigned char part_vec; - - vsx_declare_common_vars(row_info,row,prev_row,bpp) - - PNG_UNUSED(pp) - - /* Altivec operations require 16-byte aligned data - * but input can be unaligned. So we calculate - * unaligned part as usual. - */ - for (i = 0; i < unaligned_top; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } - - /* Using SIMD while we can */ - while( istop >= 16 ) - { - for(i=0;i < bpp ; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } - rp -= bpp; - - rp_vec = vec_ld(0,rp); - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED1_4); - rp_vec = vec_add(rp_vec,part_vec); - - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED2_4); - rp_vec = vec_add(rp_vec,part_vec); - - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED3_4); - rp_vec = vec_add(rp_vec,part_vec); - - vec_st(rp_vec,0,rp); - - rp += 16; - istop -= 16; - } - - if(istop > 0) - for (i = 0; i < istop % 16; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp - bpp))) & 0xff); - rp++; - } - -} - -void png_read_filter_row_sub3_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - const png_byte bpp = 3; - - vector unsigned char rp_vec; - vector unsigned char part_vec; - - vsx_declare_common_vars(row_info,row,prev_row,bpp) - - PNG_UNUSED(pp) - - /* Altivec operations require 16-byte aligned data - * but input can be unaligned. So we calculate - * unaligned part as usual. - */ - for (i = 0; i < unaligned_top; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } - - /* Using SIMD while we can */ - while( istop >= 16 ) - { - for(i=0;i < bpp ; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } - rp -= bpp; - - rp_vec = vec_ld(0,rp); - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED1_3); - rp_vec = vec_add(rp_vec,part_vec); - - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED2_3); - rp_vec = vec_add(rp_vec,part_vec); - - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED3_3); - rp_vec = vec_add(rp_vec,part_vec); - - part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED4_3); - rp_vec = vec_add(rp_vec,part_vec); - - vec_st(rp_vec,0,rp); - rp += 15; - istop -= 16; - - /* Since 16 % bpp = 16 % 3 = 1, last element of array must - * be proceeded manually - */ - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } - - if(istop > 0) - for (i = 0; i < istop % 16; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } -} - -void png_read_filter_row_avg4_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - const png_byte bpp = 4; - - vector unsigned char rp_vec; - vector unsigned char pp_vec; - vector unsigned char pp_part_vec; - vector unsigned char rp_part_vec; - vector unsigned char avg_vec; - - vsx_declare_common_vars(row_info,row,prev_row,bpp) - rp -= bpp; - if(istop >= bpp) - istop -= bpp; - - for (i = 0; i < bpp; i++) - { - *rp = (png_byte)(((int)(*rp) + - ((int)(*pp++) / 2 )) & 0xff); - - rp++; - } - - /* Altivec operations require 16-byte aligned data - * but input can be unaligned. So we calculate - * unaligned part as usual. - */ - for (i = 0; i < unaligned_top; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } - - /* Using SIMD while we can */ - while( istop >= 16 ) - { - for(i=0;i < bpp ; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } - rp -= bpp; - pp -= bpp; - - vec_ld_unaligned(pp_vec,pp); - rp_vec = vec_ld(0,rp); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED1_4); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED1_4); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED2_4); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED2_4); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED3_4); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED3_4); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - vec_st(rp_vec,0,rp); - - rp += 16; - pp += 16; - istop -= 16; - } - - if(istop > 0) - for (i = 0; i < istop % 16; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } -} - -void png_read_filter_row_avg3_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - const png_byte bpp = 3; - - vector unsigned char rp_vec; - vector unsigned char pp_vec; - vector unsigned char pp_part_vec; - vector unsigned char rp_part_vec; - vector unsigned char avg_vec; - - vsx_declare_common_vars(row_info,row,prev_row,bpp) - rp -= bpp; - if(istop >= bpp) - istop -= bpp; - - for (i = 0; i < bpp; i++) - { - *rp = (png_byte)(((int)(*rp) + - ((int)(*pp++) / 2 )) & 0xff); - - rp++; - } - - /* Altivec operations require 16-byte aligned data - * but input can be unaligned. So we calculate - * unaligned part as usual. - */ - for (i = 0; i < unaligned_top; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } - - /* Using SIMD while we can */ - while( istop >= 16 ) - { - for(i=0;i < bpp ; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } - rp -= bpp; - pp -= bpp; - - vec_ld_unaligned(pp_vec,pp); - rp_vec = vec_ld(0,rp); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED1_3); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED1_3); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED2_3); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED2_3); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED3_3); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED3_3); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - rp_part_vec = vec_perm(rp_vec,VSX_CHAR_ZERO,VSX_LEFTSHIFTED4_3); - pp_part_vec = vec_perm(pp_vec,VSX_CHAR_ZERO,VSX_NOT_SHIFTED4_3); - avg_vec = vec_avg(rp_part_vec,pp_part_vec); - avg_vec = vec_sub(avg_vec, vec_and(vec_xor(rp_part_vec,pp_part_vec),vec_splat_u8(1))); - rp_vec = vec_add(rp_vec,avg_vec); - - vec_st(rp_vec,0,rp); - - rp += 15; - pp += 15; - istop -= 16; - - /* Since 16 % bpp = 16 % 3 = 1, last element of array must - * be proceeded manually - */ - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - rp++; - } - - if(istop > 0) - for (i = 0; i < istop % 16; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } -} - -/* Bytewise c ? t : e. */ -#define if_then_else(c,t,e) vec_sel(e,t,c) - -#define vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) {\ - c = *(pp - bpp);\ - a = *(rp - bpp);\ - b = *pp++;\ - p = b - c;\ - pc = a - c;\ - pa = vsx_abs(p);\ - pb = vsx_abs(pc);\ - pc = vsx_abs(p + pc);\ - if (pb < pa) pa = pb, a = b;\ - if (pc < pa) a = c;\ - a += *rp;\ - *rp++ = (png_byte)a;\ - } - -void png_read_filter_row_paeth4_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - const png_byte bpp = 4; - - int a, b, c, pa, pb, pc, p; - vector unsigned char rp_vec; - vector unsigned char pp_vec; - vector unsigned short a_vec,b_vec,c_vec,nearest_vec; - vector signed short pa_vec,pb_vec,pc_vec,smallest_vec; - - vsx_declare_common_vars(row_info,row,prev_row,bpp) - rp -= bpp; - if(istop >= bpp) - istop -= bpp; - - /* Process the first pixel in the row completely (this is the same as 'up' - * because there is only one candidate predictor for the first row). - */ - for(i = 0; i < bpp ; i++) - { - *rp = (png_byte)( *rp + *pp); - rp++; - pp++; - } - - for(i = 0; i < unaligned_top ; i++) - { - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } - - while( istop >= 16) - { - for(i = 0; i < bpp ; i++) - { - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } - - rp -= bpp; - pp -= bpp; - rp_vec = vec_ld(0,rp); - vec_ld_unaligned(pp_vec,pp); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED1_4),1,4); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED1_4),1,4); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED1_4),1,4); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,1,4))); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED2_4),2,4); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED2_4),2,4); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED2_4),2,4); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,2,4))); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED3_4),3,4); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED3_4),3,4); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED3_4),3,4); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,3,4))); - - vec_st(rp_vec,0,rp); - - rp += 16; - pp += 16; - istop -= 16; - } - - if(istop > 0) - for (i = 0; i < istop % 16; i++) - { - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } -} - -void png_read_filter_row_paeth3_vsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - const png_byte bpp = 3; - - int a, b, c, pa, pb, pc, p; - vector unsigned char rp_vec; - vector unsigned char pp_vec; - vector unsigned short a_vec,b_vec,c_vec,nearest_vec; - vector signed short pa_vec,pb_vec,pc_vec,smallest_vec; - - vsx_declare_common_vars(row_info,row,prev_row,bpp) - rp -= bpp; - if(istop >= bpp) - istop -= bpp; - - /* Process the first pixel in the row completely (this is the same as 'up' - * because there is only one candidate predictor for the first row). - */ - for(i = 0; i < bpp ; i++) - { - *rp = (png_byte)( *rp + *pp); - rp++; - pp++; - } - - for(i = 0; i < unaligned_top ; i++) - { - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } - - while( istop >= 16) - { - for(i = 0; i < bpp ; i++) - { - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } - - rp -= bpp; - pp -= bpp; - rp_vec = vec_ld(0,rp); - vec_ld_unaligned(pp_vec,pp); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED1_3),1,3); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED1_3),1,3); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED1_3),1,3); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,1,3))); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED2_3),2,3); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED2_3),2,3); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED2_3),2,3); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,2,3))); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED3_3),3,3); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED3_3),3,3); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED3_3),3,3); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,3,3))); - - a_vec = vsx_char_to_short(vec_perm(rp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED4_3),4,3); - b_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_NOT_SHIFTED4_3),4,3); - c_vec = vsx_char_to_short(vec_perm(pp_vec , VSX_CHAR_ZERO , VSX_LEFTSHIFTED4_3),4,3); - pa_vec = (vector signed short) vec_sub(b_vec,c_vec); - pb_vec = (vector signed short) vec_sub(a_vec , c_vec); - pc_vec = vec_add(pa_vec,pb_vec); - pa_vec = vec_abs(pa_vec); - pb_vec = vec_abs(pb_vec); - pc_vec = vec_abs(pc_vec); - smallest_vec = vec_min(pc_vec, vec_min(pa_vec,pb_vec)); - nearest_vec = if_then_else( - vec_cmpeq(pa_vec,smallest_vec), - a_vec, - if_then_else( - vec_cmpeq(pb_vec,smallest_vec), - b_vec, - c_vec - ) - ); - rp_vec = vec_add(rp_vec,(vsx_short_to_char(nearest_vec,4,3))); - - vec_st(rp_vec,0,rp); - - rp += 15; - pp += 15; - istop -= 16; - - /* Since 16 % bpp = 16 % 3 = 1, last element of array must - * be proceeded manually - */ - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } - - if(istop > 0) - for (i = 0; i < istop % 16; i++) - { - vsx_paeth_process(rp,pp,a,b,c,pa,pb,pc,bpp) - } -} - -#endif /* PNG_POWERPC_VSX_OPT > 0 */ -#endif /* PNG_POWERPC_VSX_IMPLEMENTATION == 1 (intrinsics) */ -#endif /* READ */ diff --git a/src/png/libpng/powerpc/powerpc_init.c b/src/png/libpng/powerpc/powerpc_init.c deleted file mode 100644 index 07016177c..000000000 --- a/src/png/libpng/powerpc/powerpc_init.c +++ /dev/null @@ -1,125 +0,0 @@ - -/* powerpc_init.c - POWERPC optimised filter functions - * - * Copyright (c) 2017 Glenn Randers-Pehrson - * Written by Vadim Barkov, 2017. - * Last changed in libpng 1.6.29 [March 16, 2017] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ -/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are - * called. - */ -#define _POSIX_SOURCE 1 - -#include -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -#if PNG_POWERPC_VSX_OPT > 0 -#ifdef PNG_POWERPC_VSX_CHECK_SUPPORTED /* Do run-time checks */ -/* WARNING: it is strongly recommended that you do not build libpng with - * run-time checks for CPU features if at all possible. In the case of the PowerPC - * VSX instructions there is no processor-specific way of detecting the - * presence of the required support, therefore run-time detection is extremely - * OS specific. - * - * You may set the macro PNG_POWERPC_VSX_FILE to the file name of file containing - * a fragment of C source code which defines the png_have_vsx function. There - * are a number of implementations in contrib/powerpc-vsx, but the only one that - * has partial support is contrib/powerpc-vsx/linux.c - a generic Linux - * implementation which reads /proc/cpufino. - */ -#ifndef PNG_POWERPC_VSX_FILE -# ifdef __linux__ -# define PNG_POWERPC_VSX_FILE "contrib/powerpc-vsx/linux_aux.c" -# endif -#endif - -#ifdef PNG_POWERPC_VSX_FILE - -#include /* for sig_atomic_t */ -static int png_have_vsx(png_structp png_ptr); -#include PNG_POWERPC_VSX_FILE - -#else /* PNG_POWERPC_VSX_FILE */ -# error "PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks" -#endif /* PNG_POWERPC_VSX_FILE */ -#endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */ - -void -png_init_filter_functions_vsx(png_structp pp, unsigned int bpp) -{ - /* The switch statement is compiled in for POWERPC_VSX_API, the call to - * png_have_vsx is compiled in for POWERPC_VSX_CHECK. If both are defined - * the check is only performed if the API has not set the PowerPC option on - * or off explicitly. In this case the check controls what happens. - */ - -#ifdef PNG_POWERPC_VSX_API_SUPPORTED - switch ((pp->options >> PNG_POWERPC_VSX) & 3) - { - case PNG_OPTION_UNSET: - /* Allow the run-time check to execute if it has been enabled - - * thus both API and CHECK can be turned on. If it isn't supported - * this case will fall through to the 'default' below, which just - * returns. - */ -#endif /* PNG_POWERPC_VSX_API_SUPPORTED */ -#ifdef PNG_POWERPC_VSX_CHECK_SUPPORTED - { - static volatile sig_atomic_t no_vsx = -1; /* not checked */ - - if (no_vsx < 0) - no_vsx = !png_have_vsx(pp); - - if (no_vsx) - return; - } -#ifdef PNG_POWERPC_VSX_API_SUPPORTED - break; -#endif -#endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */ - -#ifdef PNG_POWERPC_VSX_API_SUPPORTED - default: /* OFF or INVALID */ - return; - - case PNG_OPTION_ON: - /* Option turned on */ - break; - } -#endif - - /* IMPORTANT: any new internal functions used here must be declared using - * PNG_INTERNAL_FUNCTION in ../pngpriv.h. This is required so that the - * 'prefix' option to configure works: - * - * ./configure --with-libpng-prefix=foobar_ - * - * Verify you have got this right by running the above command, doing a build - * and examining pngprefix.h; it must contain a #define for every external - * function you add. (Notice that this happens automatically for the - * initialization function.) - */ - pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_vsx; - - if (bpp == 3) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_vsx; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_vsx; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth3_vsx; - } - - else if (bpp == 4) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_vsx; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_vsx; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth4_vsx; - } -} -#endif /* PNG_POWERPC_VSX_OPT > 0 */ -#endif /* READ */ diff --git a/src/png/libpng/scripts/checksym.awk b/src/png/libpng/scripts/checksym.awk deleted file mode 100644 index fe3af55e0..000000000 --- a/src/png/libpng/scripts/checksym.awk +++ /dev/null @@ -1,173 +0,0 @@ -#!/bin/awk -f -# Check a list of symbols against the master definition -# (official) list. Arguments: -# -# awk -f checksym.awk official-def list-to-check -# -# Output is a file in the current directory called 'symbols.new', -# the value of the awk variable "of" (which can be changed on the -# command line if required.) stdout holds error messages. Error -# code indicates success or failure. -# -# NOTE: this is a pure, old fashioned, awk script. It will -# work with any awk - -BEGIN{ - err=0 - master="" # master file - official[1] = "" # defined symbols from master file - symbol[1] = "" # defined symbols from png.h - removed[1] = "" # removed symbols from png.h - lasto = 0 # last ordinal value from png.h - mastero = 0 # highest ordinal in master file - symbolo = 0 # highest ordinal in png.h - missing = "error"# log an error on missing symbols - of="symbols.new" # default to a fixed name -} - -# Read existing definitions from the master file (the first -# file on the command line.) This must be a def file and it -# has definition lines (others are ignored) of the form: -# -# symbol @ordinal -# -master == "" { - master = FILENAME -} -FILENAME==master && NF==2 && $2~/^@/ && $1!~/^;/ { - o=0+substr($2,2) - if (o > 0) { - if (official[o] == "") { - official[o] = $1 - if (o > mastero) mastero = o - next - } else - print master ": duplicated symbol:", official[o] ":", $0 - } else - print master ": bad export line format:", $0 - err = 1 -} -FILENAME==master && $1==";missing" && NF==2{ - # This allows the master file to control how missing symbols - # are handled; symbols that aren't in either the master or - # the new file. Valid values are 'ignore', 'warning' and - # 'error' - missing = $2 -} -FILENAME==master { - next -} - -# Read new definitions, these are free form but the lines must -# just be symbol definitions. Lines will be commented out for -# 'removed' symbols, introduced in png.h using PNG_REMOVED rather -# than PNG_EXPORT. Use symbols.dfn or pngwin.dfn to generate the -# input file. -# -# symbol @ordinal # two fields, exported symbol -# ; symbol @ordinal # three fields, removed symbol -# ; @ordinal # two fields, the last ordinal -NF==2 && $1 == ";" && $2 ~ /^@[1-9][0-9]*$/ { # last ordinal - o=0+substr($2,2) - if (lasto == 0 || lasto == o) - lasto=o - else { - print "png.h: duplicated last ordinal:", lasto, o - err = 1 - } - next -} -NF==3 && $1 == ";" && $3 ~ /^@[1-9][0-9]*$/ { # removed symbol - o=0+substr($3,2) - if (removed[o] == "" || removed[o] == $2) { - removed[o] = $2 - if (o > symbolo) symbolo = o - } else { - print "png.h: duplicated removed symbol", o ": '" removed[o] "' != '" $2 "'" - err = 1 - } - next -} -NF==2 && $2 ~ /^@[1-9][0-9]*$/ { # exported symbol - o=0+substr($2,2) - if (symbol[o] == "" || symbol[o] == $1) { - symbol[o] = $1 - if (o > symbolo) symbolo = o - } else { - print "png.h: duplicated symbol", o ": '" symbol[o] "' != '" $1 "'" - err = 1 - } -} -{ - next # skip all other lines -} - -# At the end check for symbols marked as both duplicated and removed -END{ - if (symbolo > lasto) { - print "highest symbol ordinal in png.h,", symbolo ", exceeds last ordinal from png.h", lasto - err = 1 - } - if (mastero > lasto) { - print "highest symbol ordinal in", master ",", mastero ", exceeds last ordinal from png.h", lasto - err = 1 - } - unexported=0 - # Add a standard header to symbols.new: - print ";Version INSERT-VERSION-HERE" >of - print ";--------------------------------------------------------------" >of - print "; LIBPNG symbol list as a Win32 DEF file" >of - print "; Contains all the symbols that can be exported from libpng" >of - print ";--------------------------------------------------------------" >of - print "LIBRARY" >of - print "" >of - print "EXPORTS" >of - - for (o=1; o<=lasto; ++o) { - if (symbol[o] == "" && removed[o] == "") { - if (unexported == 0) unexported = o - if (official[o] == "") { - # missing in export list too, so ok - if (o < lasto) continue - } - } - if (unexported != 0) { - # Symbols in the .def but not in the new file are errors, but - # the 'unexported' symbols aren't in either. By default this - # is an error too (see the setting of 'missing' at the start), - # but this can be reset on the command line or by stuff in the - # file - see the comments above. - if (missing != "ignore") { - if (o-1 > unexported) - print "png.h:", missing ": missing symbols:", unexported "-" o-1 - else - print "png.h:", missing ": missing symbol:", unexported - if (missing != "warning") - err = 1 - } - unexported = 0 - } - if (symbol[o] != "" && removed[o] != "") { - print "png.h: symbol", o, "both exported as '" symbol[o] "' and removed as '" removed[o] "'" - err = 1 - } else if (symbol[o] != official[o]) { - # either the symbol is missing somewhere or it changed - err = 1 - if (symbol[o] == "") - print "png.h: symbol", o, "is exported as '" official[o] "' in", master - else if (official[o] == "") - print "png.h: exported symbol", o, "'" symbol[o] "' not present in", master - else - print "png.h: exported symbol", o, "'" symbol[o] "' exists as '" official[o] "' in", master - } - - # Finally generate symbols.new - if (symbol[o] != "") - print " " symbol[o], "@" o > of - } - - if (err != 0) { - print "*** A new list is in", of, "***" - exit 1 - } -} diff --git a/src/png/libpng/scripts/def.c b/src/png/libpng/scripts/def.c deleted file mode 100644 index 0ffcbeb0c..000000000 --- a/src/png/libpng/scripts/def.c +++ /dev/null @@ -1,29 +0,0 @@ -/* def.c - define format of libpng.def - * - * Last changed in libpng version 1.6.16 [December 22, 2014] - * Copyright (c) 2011-2014 Glenn Randers-Pehrson - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* Write the export file header: */ -PNG_DFN ";--------------------------------------------------------------" -PNG_DFN "; LIBPNG module definition file for OS/2" -PNG_DFN ";--------------------------------------------------------------" -PNG_DFN "" -PNG_DFN "; If you give the library an explicit name one or other files" -PNG_DFN "; may need modifying to support the new name on one or more" -PNG_DFN "; systems." -PNG_DFN "LIBRARY" -PNG_DFN "OS2 DESCRIPTION "PNG image compression library"" -PNG_DFN "OS2 CODE PRELOAD MOVEABLE DISCARDABLE" -PNG_DFN "" -PNG_DFN "EXPORTS" -PNG_DFN ";Version 1.6.35beta02" - -#define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DFN "@" SYMBOL_PREFIX "@@" name "@" - -#include "../png.h" diff --git a/src/png/libpng/scripts/dfn.awk b/src/png/libpng/scripts/dfn.awk deleted file mode 100644 index 346b9db7d..000000000 --- a/src/png/libpng/scripts/dfn.awk +++ /dev/null @@ -1,203 +0,0 @@ -#!/bin/awk -f -# scripts/dfn.awk - process a .dfn file -# -# last changed in libpng version 1.5.19 - August 21, 2014 -# -# Copyright (c) 2013-2014 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# The output of this script is written to the file given by -# the variable 'out', which should be set on the command line. -# Error messages are printed to stdout and if any are printed -# the script will exit with error code 1. - -BEGIN{ - out="/dev/null" # as a flag - out_count=0 # count of output lines - err=0 # set if an error occurred - sort=0 # sort the output - array[""]="" -} - -# The output file must be specified before any input: -NR==1 && out == "/dev/null" { - print "out=output.file must be given on the command line" - # but continue without setting the error code; this allows the - # script to be checked easily -} - -# Output can be sorted; two lines are recognized -$1 == "PNG_DFN_START_SORT"{ - sort=0+$2 - next -} - -$1 ~ /^PNG_DFN_END_SORT/{ - # Do a very simple, slow, sort; notice that blank lines won't be - # output by this - for (entry in array) { - while (array[entry] != "") { - key = entry - value = array[key] - array[key] = "" - - for (alt in array) { - if (array[alt] != "" && alt < key) { - array[key] = value - value = array[alt] - key = alt - array[alt] = "" - } - } - - print value >out - } - } - sort=0 - next -} - -/^[^"]*PNG_DFN *".*"[^"]*$/{ - # A definition line, apparently correctly formatted; extract the - # definition then replace any doubled "" that remain with a single - # double quote. Notice that the original doubled double quotes - # may have been split by tokenization - # - # Sometimes GCC splits the PNG_DFN lines; we know this has happened - # if the quotes aren't closed and must read another line. In this - # case it is essential to reject lines that start with '#' because those - # are introduced #line directives. - orig=$0 - line=$0 - lineno=FNR - if (lineno == "") lineno=NR - - if (sub(/^[^"]*PNG_DFN *"/,"",line) != 1) { - print "line", lineno ": processing failed:" - print orig - err=1 - next - } else { - ++out_count - } - - # Now examine quotes within the value: - # - # @" - delete this and any following spaces - # "@ - delete this and any preceding spaces - # @' - replace this by a double quote - # - # This allows macro substitution by the C compiler thus: - # - # #define first_name John - # #define last_name Smith - # - # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'" - # - # Might get C preprocessed to: - # - # PNG_DFN "#define foo @'@" John "@ @" Smith "@@'" - # - # Which this script reduces to: - # - # #define name "John Smith" - # - while (1) { - # While there is an @" remove it and the next "@ - if (line ~ /@"/) { - if (line ~ /@".*"@/) { - # Do this special case first to avoid swallowing extra spaces - # before or after the @ stuff: - if (!sub(/@" *"@/, "", line)) { - # Ok, do it in pieces - there has to be a non-space between the - # two. NOTE: really weird things happen if a leading @" is - # lost - the code will error out below (I believe). - if (!sub(/@" */, "", line) || !sub(/ *"@/, "", line)) { - print "line", lineno, ": internal error:", orig - exit 1 - } - } - } - - # There is no matching "@. Assume a split line - else while (1) { - if (getline nextline) { - # If the line starts with '#' it is a preprocesor line directive - # from cc -E; skip it: - if (nextline !~ /^#/) { - line = line " " nextline - break - } - } else { - # This is end-of-input - probably a missing "@ on the first line: - print "line", lineno ": unbalanced @\" ... \"@ pair" - err=1 - next - } - } - - # Keep going until all the @" have gone - continue - } - - # Attempt to remove a trailing " (not preceded by '@') - if this can - # be done, stop now; if not assume a split line again - if (sub(/"[^"]*$/, "", line)) - break - - # Read another line - while (1) { - if (getline nextline) { - if (nextline !~ /^#/) { - line = line " " nextline - # Go back to stripping @" "@ pairs - break - } - } else { - print "line", lineno ": unterminated PNG_DFN string" - err=1 - next - } - } - } - - # Put any needed double quotes in (at the end, because these would otherwise - # interfere with the processing above.) - gsub(/@'/,"\"", line) - - # Remove any trailing spaces (not really required, but for - # editorial consistency - sub(/ *$/, "", line) - - # Remove trailing CR - sub(/ $/, "", line) - - if (sort) { - if (split(line, parts) < sort) { - print "line", lineno ": missing sort field:", line - err=1 - } else - array[parts[sort]] = line - } - - else - print line >out - next -} - -/PNG_DFN/{ - print "line", NR, "incorrectly formatted PNG_DFN line:" - print $0 - err = 1 -} - -END{ - if (out_count > 0 || err > 0) - exit err - - print "no definition lines found" - exit 1 -} diff --git a/src/png/libpng/scripts/genchk.cmake.in b/src/png/libpng/scripts/genchk.cmake.in deleted file mode 100644 index ab3b9d746..000000000 --- a/src/png/libpng/scripts/genchk.cmake.in +++ /dev/null @@ -1,37 +0,0 @@ -# genchk.cmake.in -# Generate .chk from .out with awk (generic), based upon the automake logic. - -# Copyright (C) 2016 Glenn Randers-Pehrson -# Written by Roger Leigh, 2016 - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Variables substituted from CMakeLists.txt -set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@") - -set(AWK "@AWK@") - -get_filename_component(INPUTEXT "${INPUT}" EXT) -get_filename_component(OUTPUTEXT "${OUTPUT}" EXT) -get_filename_component(INPUTBASE "${INPUT}" NAME_WE) -get_filename_component(OUTPUTBASE "${OUTPUT}" NAME_WE) -get_filename_component(INPUTDIR "${INPUT}" PATH) -get_filename_component(OUTPUTDIR "${OUTPUT}" PATH) - -if("${INPUTEXT}" STREQUAL ".out" AND "${OUTPUTEXT}" STREQUAL ".chk") - # Generate .chk from .out with awk (generic) - file(REMOVE "${OUTPUT}" "${OUTPUTDIR}/${OUTPUTBASE}.new") - execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/checksym.awk" - "${SRCDIR}/scripts/${INPUTBASE}.def" - "of=${OUTPUTDIR}/${OUTPUTBASE}.new" - "${INPUT}" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate ${OUTPUTDIR}/${OUTPUTBASE}.new") - endif() - file(RENAME "${OUTPUTDIR}/${OUTPUTBASE}.new" "${OUTPUT}") -else() - message(FATAL_ERROR "Unsupported conversion: ${INPUTEXT} to ${OUTPUTEXT}") -endif() diff --git a/src/png/libpng/scripts/genout.cmake.in b/src/png/libpng/scripts/genout.cmake.in deleted file mode 100644 index 01f12de2f..000000000 --- a/src/png/libpng/scripts/genout.cmake.in +++ /dev/null @@ -1,93 +0,0 @@ -# genout.cmake.in -# Generate .out from .c with awk (generic), based upon the automake logic. - -# Copyright (C) 2016 Glenn Randers-Pehrson -# Written by Roger Leigh, 2016 - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Variables substituted from CMakeLists.txt -set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@") -set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@") - -set(AWK "@AWK@") -set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@") -set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@) -set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@") -set(PNG_PREFIX "@PNG_PREFIX@") -set(PNGLIB_MAJOR "@PNGLIB_MAJOR@") -set(PNGLIB_MINOR "@PNGLIB_MINOR@") -set(PNGLIB_VERSION "@PNGLIB_VERSION@") -set(ZLIBINCDIR "@ZLIB_INCLUDE_DIR@") - -set(PLATFORM_C_FLAGS) -if(APPLE) - set(CMAKE_OSX_ARCHITECTURES "@CMAKE_OSX_ARCHITECTURES@") - set(CMAKE_OSX_SYSROOT "@CMAKE_OSX_SYSROOT@") - if(CMAKE_OSX_ARCHITECTURES) - set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}) - endif() - if(CMAKE_OSX_SYSROOT) - set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}) - endif() -endif() - -get_filename_component(INPUTEXT "${INPUT}" EXT) -get_filename_component(OUTPUTEXT "${OUTPUT}" EXT) -get_filename_component(INPUTBASE "${INPUT}" NAME_WE) -get_filename_component(OUTPUTBASE "${OUTPUT}" NAME_WE) -get_filename_component(INPUTDIR "${INPUT}" PATH) -get_filename_component(OUTPUTDIR "${OUTPUT}" PATH) - -if ("${INPUTEXT}" STREQUAL ".c" AND "${OUTPUTEXT}" STREQUAL ".out") - get_filename_component(GENDIR "${OUTPUT}" PATH) - file(MAKE_DIRECTORY "${GENDIR}") - - file(REMOVE "${OUTPUT}.tf1" "${OUTPUT}.tf2") - - set(INCLUDES "-I${INCDIR}") - if(ZLIBINCDIR) - foreach(dir ${ZLIBINCDIR}) - list(APPEND INCLUDES "-I${dir}") - endforeach() - endif() - - if(PNG_PREFIX) - set(PNG_PREFIX_DEF "-DPNG_PREFIX=${PNG_PREFIX}") - endif() - - execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" - ${CMAKE_C_FLAGS} - ${PLATFORM_C_FLAGS} - "-I${SRCDIR}" - "-I${BINDIR}" - ${INCLUDES} - "-DPNGLIB_LIBNAME=PNG${PNGLIB_MAJOR}${PNGLIB_MINOR}_0" - "-DPNGLIB_VERSION=${PNGLIB_VERSION}" - "-DSYMBOL_PREFIX=${SYMBOL_PREFIX}" - "-DPNG_NO_USE_READ_MACROS" - "-DPNG_BUILDING_SYMBOL_TABLE" - ${PNG_PREFIX_DEF} - "${INPUT}" - OUTPUT_FILE "${OUTPUT}.tf1" - WORKING_DIRECTORY "${BINDIR}" - RESULT_VARIABLE CPP_FAIL) - if(CPP_FAIL) - message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf1") - endif() - - execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/dfn.awk" - "out=${OUTPUT}.tf2" "${OUTPUT}.tf1" - WORKING_DIRECTORY "${BINDIR}" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate ${OUTPUT}.tf2") - endif() - - file(REMOVE "${OUTPUT}.tf1") - file(RENAME "${OUTPUT}.tf2" "${OUTPUT}") -else() - message(FATAL_ERROR "Unsupported conversion: ${INPUTEXT} to ${OUTPUTEXT}") -endif() diff --git a/src/png/libpng/scripts/gensrc.cmake.in b/src/png/libpng/scripts/gensrc.cmake.in deleted file mode 100644 index f28a62266..000000000 --- a/src/png/libpng/scripts/gensrc.cmake.in +++ /dev/null @@ -1,138 +0,0 @@ -# gensrc.cmake.in -# Generate source files with awk, based upon the automake logic. - -# Copyright (C) 2016 Glenn Randers-Pehrson -# Written by Roger Leigh, 2016 - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Variables substituted from CMakeLists.txt -set(SRCDIR "@CMAKE_CURRENT_SOURCE_DIR@") -set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@") - -set(AWK "@AWK@") -set(DFA_XTRA "@DFA_XTRA@") -set(PNG_PREFIX "@PNG_PREFIX@") -set(PNGLIB_VERSION "@PNGLIB_VERSION@") - -if("${OUTPUT}" STREQUAL "scripts/pnglibconf.c") - # Generate scripts/pnglibconf.c - - file(REMOVE "${BINDIR}/pnglibconf.tf6" "${BINDIR}/pnglibconf.tf7") - - execute_process(COMMAND "${CMAKE_COMMAND}" -E echo "com ${PNGLIB_VERSION} STANDARD API DEFINITION" - COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk" - "out=pnglibconf.tf6" "logunsupported=1" "version=search" - "${SRCDIR}/pngconf.h" "-" - "${SRCDIR}/scripts/pnglibconf.dfa" - WORKING_DIRECTORY "${BINDIR}" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate pnglibconf.tf6") - endif() - - execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk" - "out=pnglibconf.tf7" "pnglibconf.tf6" - WORKING_DIRECTORY "${BINDIR}" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate pnglibconf.tf7") - endif() - - file(REMOVE "pnglibconf.tf6") - file(MAKE_DIRECTORY "${BINDIR}/scripts") - file(RENAME "pnglibconf.tf7" "${BINDIR}/scripts/pnglibconf.c") - -elseif ("${OUTPUT}" STREQUAL "pnglibconf.c") - # Generate pnglibconf.c - - file(REMOVE "${BINDIR}/pnglibconf.tf4" "${BINDIR}/pnglibconf.tf5") - - execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk" - out=pnglibconf.tf4 version=search - ${SRCDIR}/pngconf.h ${SRCDIR}/scripts/pnglibconf.dfa - ${SRCDIR}/pngusr.dfa ${DFA_XTRA} - WORKING_DIRECTORY "${BINDIR}" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate pnglibconf.tf4") - endif() - - execute_process(COMMAND "${AWK}" -f "${SRCDIR}/scripts/options.awk" - out=pnglibconf.tf5 pnglibconf.tf4 - WORKING_DIRECTORY "${BINDIR}" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate pnglibconf.tf5") - endif() - - file(REMOVE "pnglibconf.tf4") - file(MAKE_DIRECTORY "${BINDIR}/scripts") - file(RENAME "pnglibconf.tf5" "${BINDIR}/pnglibconf.c") - -elseif ("${OUTPUT}" STREQUAL "pnglibconf.h") - # Generate pnglibconf.h - - file(REMOVE "${BINDIR}/${OUTPUT}") - if(PNG_PREFIX) - file(REMOVE "pnglibconf.tf8") - - execute_process(COMMAND "${AWK}" "s==0 && NR>1{print prev} - s==0{prev=\$0} - s==1{print \"#define\", \$1, \"${PNG_PREFIX}\" \$1} - s==2{print \"#define ${PNG_PREFIX}png_\" \$1, \"PNG_\" \$1} - END{print prev}" s=0 pnglibconf.out s=1 "${BINDIR}/scripts/prefix.out" - s=2 "${SRCDIR}/scripts/macro.lst" - OUTPUT_FILE pnglibconf.tf8 - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate pnglibconf.tf8") - endif() - - file(RENAME "pnglibconf.tf8" "${BINDIR}/${OUTPUT}") - else() - execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "${BINDIR}/pnglibconf.out" - "${BINDIR}/${OUTPUT}" - RESULT_VARIABLE COPY_FAIL) - if(COPY_FAIL) - message(FATAL_ERROR "Failed to create pnglibconf.h") - endif() - endif() - -elseif ("${OUTPUT}" STREQUAL "pngprefix.h") - # Generate pngprefix.h - - file(REMOVE "${BINDIR}/${OUTPUT}") - - if(PNG_PREFIX) - file(REMOVE "pngprefix.tf1") - - execute_process(COMMAND "${AWK}" - "{print \"#define\", \$1, \"${PNG_PREFIX}\" \$1}" - "${BINDIR}/scripts/intprefix.out" - OUTPUT_FILE "pngprefix.tf1" - RESULT_VARIABLE AWK_FAIL) - if(AWK_FAIL) - message(FATAL_ERROR "Failed to generate pngprefix.tf1") - endif() - - file(RENAME "pngprefix.tf1" "${BINDIR}/${OUTPUT}") - else() - file(WRITE "${BINDIR}/${OUTPUT}" "/* No libpng symbol prefix configured. */") - endif() - -elseif("${OUTPUT}" STREQUAL "scripts/pnglibconf.h.prebuilt") - # Generate scripts/pnglibconf.h.prebuilt (fails build) - - message(STATUS "Attempting to build scripts/pnglibconf.h.prebuilt") - message(STATUS "This is a machine generated file, but if you want to make") - message(STATUS "a new one simply build the 'genfiles' target, and copy") - message(STATUS "scripts/pnglibconf.out to scripts/pnglibconf.h.prebuilt") - message(STATUS "AND set PNG_ZLIB_VERNUM to 0 (you MUST do this)") - message(FATAL_ERROR "Stopping build") - -else() - message(FATAL_ERROR "Unsupported output: ${OUTPUT}") -endif() diff --git a/src/png/libpng/scripts/intprefix.c b/src/png/libpng/scripts/intprefix.c deleted file mode 100644 index 254f8e94b..000000000 --- a/src/png/libpng/scripts/intprefix.c +++ /dev/null @@ -1,22 +0,0 @@ - -/* intprefix.c - generate an unprefixed internal symbol list - * - * Last changed in libpng version 1.6.16 [December 22, 2014] - * Copyright (c) 2013-2014 Glenn Randers-Pehrson - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#define PNG_INTERNAL_DATA(type, name, array)\ - PNG_DFN "@" name "@" - -#define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\ - PNG_DFN "@" name "@" - -#define PNG_INTERNAL_CALLBACK(type, name, args, attributes)\ - PNG_DFN "@" name "@" - -#define PNGPREFIX_H /* self generation */ -#include "../pngpriv.h" diff --git a/src/png/libpng/scripts/libpng-config-body.in b/src/png/libpng/scripts/libpng-config-body.in deleted file mode 100644 index b466432d5..000000000 --- a/src/png/libpng/scripts/libpng-config-body.in +++ /dev/null @@ -1,96 +0,0 @@ - -usage() -{ - cat <&2 -# awk -f scripts/options.awk out=options.dfn options.tmp 1>&2 -# -# Some options may be specified on the command line: -# -# deb=1 Causes debugging to be output -# logunsupported=1 Causes all options to be recorded in the output -# everything=off Causes all options to be disabled by default -# everything=on Causes all options to be enabled by default -# -# If awk fails on your platform, try nawk instead. -# -# These options may also be specified in the original input file (and -# are copied to the preprocessed file). - -BEGIN{ - out="" # intermediate, preprocessed, file - pre=-1 # preprocess (first line) - version="libpng version unknown" # version information - version_file="" # where to find the version - err=0 # in-line exit sets this - # The following definitions prevent the C preprocessor noticing the lines - # that will be in the final output file. Some C preprocessors tokenise - # the lines, for example by inserting spaces around operators, and all - # C preprocessors notice lines that start with '#', most remove comments. - # The technique adopted here is to make the final output lines into - # C strings (enclosed in double quotes), preceded by PNG_DFN. As a - # consequence the output cannot contain a 'raw' double quote - instead put - # @' in, this will be replaced by a single " afterward. See the parser - # script dfn.awk for more capabilities (not required here). Note that if - # you need a " in a 'setting' in pnglibconf.dfa it must also be @'! - dq="@'" # For a single double quote - start=" PNG_DFN \"" # Start stuff to output (can't contain a "!) - end="\" " # End stuff to output - subs="@\" " # Substitute start (substitute a C macro) - sube=" \"@" # Substitute end - comment=start "/*" # Comment start - cend="*/" end # Comment end - def=start "#define PNG_" # Arbitrary define - sup="_SUPPORTED" end # end supported option - und=comment "#undef PNG_" # Unsupported option - une="_SUPPORTED" cend # end unsupported option - error=start "ERROR:" # error message, terminate with 'end' - - # Variables - deb=0 # debug - set on command line - everything="" # do not override defaults - logunsupported=0 # write unsupported options too - - # Precreate arrays - # for each option: - option[""] = "" # list of all options: default enabled/disabled - done[""] = 1 # marks option as having been output - requires[""] = "" # requires by option - iffs[""] = "" # if by option - enabledby[""] = "" # options that enable it by option - sets[""] = "" # settings set by each option - setval[""] = "" # value to set (indexed: 'option sets[option]') - # for each setting: - setting[""] = "" # requires by setting - defaults[""] = "" # used for a defaulted value - doneset[""] = 1 # marks setting as having been output - r[""] = "" # Temporary array - - # For decorating the output file - protect = "" -} - -# The output file must be specified before any input: -out == "" { - print "out=output.file must be given on the command line" - err = 1 - exit 1 -} - -# The very first line indicates whether we are reading pre-processed -# input or not, this must come *first* because 'PREPROCESSED' needs -# to be the very first line in the temporary file. -pre == -1{ - if ($0 == "PREPROCESSED") { - pre = 0 - next - } else { - pre = 1 - print "PREPROCESSED" >out - # And fall through to continue processing - } -} - -# While pre-processing if version is set to "search" look for a version string -# in the following file. -pre && version == "search" && version_file == ""{ - version_file = FILENAME -} - -pre && version == "search" && version_file != FILENAME{ - print "version string not found in", version_file - err = 1 - exit 1 -} - -pre && version == "search" && $0 ~ /^ \* libpng version/{ - version = substr($0, 4) - print "version =", version >out - next -} - -pre && FILENAME == version_file{ - next -} - -# variable=value -# Sets the given variable to the given value (the syntax is fairly -# free form, except for deb (you are expected to understand how to -# set the debug variable...) -# -# This happens before the check on 'pre' below skips most of the -# rest of the actions, so the variable settings happen during -# preprocessing but are recorded in the END action too. This -# allows them to be set on the command line too. -$0 ~ /^[ ]*version[ ]*=/{ - sub(/^[ ]*version[ ]*=[ ]*/, "") - version = $0 - next -} -$0 ~ /^[ ]*everything[ =]*off[ ]*$/{ - everything = "off" - next -} -$0 ~ /^[ ]*everything[ =]*on[ ]*$/{ - everything = "on" - next -} -$0 ~ /^[ ]*logunsupported[ =]*0[ ]*$/{ - logunsupported = 0 - next -} -$0 ~ /^[ ]*logunsupported[ =]*1[ ]*$/{ - logunsupported = 1 - next -} -$1 == "deb" && $2 == "=" && NF == 3{ - deb = $3 - next -} - -# Preprocessing - this just copies the input file with lines -# that need preprocessing (just chunk at present) expanded -# The bare "pre" instead of "pre != 0" crashes under Sunos awk -pre && $1 != "chunk"{ - print >out - next -} - -# The first characters of the line determine how it is processed, -# leading spaces are ignored. In general tokens that are not -# keywords are the names of options. An option 'name' is -# controlled by the definition of the corresponding macros: -# -# PNG_name_SUPPORTED The option is turned on -# PNG_NO_name -# PNG_NO_name_SUPPORTED If the first macro is not defined -# either of these will turn the option off -# -# If none of these macros are defined the option is turned on, unless -# the keyword 'off' is given in a line relating to the option. The -# keyword 'on' can also be given, but it will be ignored (since it is -# the default.) -# -# In the syntax below a 'name' is indicated by "NAME", other macro -# values are indicated by "MACRO", as with "NAME" the leading "PNG_" -# is omitted, but in this case the "NO_" prefix and the "_SUPPORTED" -# suffix are never used. -# -# Each line is introduced by a keyword - the first non-space characters -# on the line. A line starting with a '#' is a comment - it is totally -# ignored. Keywords are as follows, a NAME, is simply a macro name -# without the leading PNG_, PNG_NO_ or the trailing _SUPPORTED. - -$1 ~ /^#/ || $0 ~ /^[ ]*$/{ - next -} - -# com -# The whole line is placed in the output file as a comment with -# the preceding 'com' removed -$1 == "com"{ - if (NF > 1) { - # sub(/^[ ]*com[ ]*/, "") - $1 = "" - print comment $0, cend >out - } else - print start end >out - next -} - -# version -# Inserts a version comment -$1 == "version" && NF == 1{ - if (version == "") { - print "ERROR: no version string set" - err = 1 # prevent END{} running - exit 1 - } - - print comment, version, cend >out - next -} - -# file output input protect -# Informational: the official name of the input file (without -# make generated local directories), the official name of the -# output file and, if required, a name to use in a protection -# macro for the contents. -$1 == "file" && NF >= 2{ - print comment, $2, cend >out - print comment, "Machine generated file: DO NOT EDIT", cend >out - if (NF >= 3) - print comment, "Derived from:", $3, cend >out - protect = $4 - if (protect != "") { - print start "#ifndef", protect end >out - print start "#define", protect end >out - } - next -} - -# option NAME ( (requires|enables|if) NAME* | on | off | disabled | -# sets SETTING VALUE+ )* -# -# Declares an option 'NAME' and describes its default setting (disabled) -# and its relationship to other options. The option is disabled -# unless *all* the options listed after 'requires' are set and at -# least one of the options listed after 'if' is set. If the -# option is set then it turns on all the options listed after 'enables'. -# -# Note that "enables" takes priority over the required/if/disabled/off -# setting of the target option. -# -# The definition file may list an option as 'disabled': off by default, -# otherwise the option is enabled: on by default. A later (and it must -# be later) entry may turn an option on or off explicitly. - -$1 == "option" && NF >= 2{ - opt = $2 - sub(/,$/,"",opt) - onoff = option[opt] # records current (and the default is "", enabled) - key = "" - istart = 3 - do { - if (istart == 1) { # continuation line - val = getline - - if (val != 1) { # error reading it - if (val == 0) - print "option", opt ": ERROR: missing continuation line" - else - print "option", opt ": ERROR: error reading continuation line" - - # This is a hard error - err = 1 # prevent END{} running - exit 1 - } - } - - for (i=istart; i<=NF; ++i) { - val=$(i) - sub(/,$/,"",val) - if (val == "on" || val == "off" || val == "disabled" || val =="enabled") { - key = "" - if (onoff != val) { - # on or off can zap disabled or enabled: - if (onoff == "" || (onoff == "disabled" || onoff == "enabled") && - (val == "on" || val == "off")) { - # It's easy to mis-spell the option when turning it - # on or off, so warn about it here: - if (onoff == "" && (val == "on" || val == "off")) { - print "option", opt ": ERROR: turning unrecognized option", val - # For the moment error out - it is safer - err = 1 # prevent END{} running - exit 1 - } - onoff = val - } else { - # Print a message, otherwise the error - # below is incomprehensible - print "option", opt ": currently", onoff ": attempt to turn", val - break - } - } - } else if (val == "requires" || val == "if" || val == "enables" || val =="sets") { - key = val - } else if (key == "requires") { - requires[opt] = requires[opt] " " val - } else if (key == "if") { - iffs[opt] = iffs[opt] " " val - } else if (key == "enables") { - enabledby[val] = enabledby[val] " " opt - } else if (key == "sets") { - sets[opt] = sets[opt] " " val - key = "setval" - set = val - } else if (key == "setval") { - setval[opt " " set] = setval[opt " " set] " " val - } else - break # bad line format - } - - istart = 1 - } while (i > NF && $0 ~ /,$/) - - if (i > NF) { - # Set the option, defaulting to 'enabled' - if (onoff == "") onoff = "enabled" - option[opt] = onoff - next - } - # Else fall through to the error handler -} - -# chunk NAME [requires OPT] [enables LIST] [on|off|disabled] -# Expands to the 'option' settings appropriate to the reading and -# writing of an ancillary PNG chunk 'NAME': -# -# option READ_NAME requires READ_ANCILLARY_CHUNKS [READ_OPT] -# option READ_NAME enables NAME LIST -# [option READ_NAME off] -# option WRITE_NAME requires WRITE_ANCILLARY_CHUNKS [WRITE_OPT] -# option WRITE_NAME enables NAME LIST -# [option WRITE_NAME off] - -pre != 0 && $1 == "chunk" && NF >= 2{ - # 'chunk' is handled on the first pass by writing appropriate - # 'option' lines into the intermediate file. - opt = $2 - sub(/,$/,"",opt) - onoff = "" - reqread = "" - reqwrite = "" - enables = "" - req = 0 - istart = 3 - do { - if (istart == 1) { # continuation line - val = getline - - if (val != 1) { # error reading it - if (val == 0) - print "chunk", opt ": ERROR: missing continuation line" - else - print "chunk", opt ": ERROR: error reading continuation line" - - # This is a hard error - err = 1 # prevent END{} running - exit 1 - } - } - - # read the keywords/additional OPTS - for (i=istart; i<=NF; ++i) { - val = $(i) - sub(/,$/,"",val) - if (val == "on" || val == "off" || val == "disabled") { - if (onoff != val) { - if (onoff == "") - onoff = val - else - break # on/off conflict - } - req = 0 - } else if (val == "requires") - req = 1 - else if (val == "enables") - req = 2 - else if (req == 1){ - reqread = reqread " READ_" val - reqwrite = reqwrite " WRITE_" val - } else if (req == 2) - enables = enables " " val - else - break # bad line: handled below - } - - istart = 1 - } while (i > NF && $0 ~ /,$/) - - if (i > NF) { - # Output new 'option' lines to the intermediate file (out) - print "option READ_" opt, "requires READ_ANCILLARY_CHUNKS" reqread, "enables", opt enables , onoff >out - print "option WRITE_" opt, "requires WRITE_ANCILLARY_CHUNKS" reqwrite, "enables", opt enables, onoff >out - next - } - # Else hit the error handler below - bad line format! -} - -# setting MACRO ( requires MACRO* )* [ default VALUE ] -# Behaves in a similar way to 'option' without looking for NO_ or -# _SUPPORTED; the macro is enabled if it is defined so long as all -# the 'requires' macros are also defined. The definitions may be -# empty, an error will be issued if the 'requires' macros are -# *not* defined. If given the 'default' value is used if the -# macro is not defined. The default value will be re-tokenised. -# (BTW: this is somewhat restrictive, it mainly exists for the -# support of non-standard configurations and numeric parameters, -# see the uses in scripts/options.dat - -$1 == "setting" && (NF == 2 || NF >= 3 && ($3 == "requires" || $3 == "default")){ - reqs = "" - deflt = "" - isdef = 0 - key = "" - for (i=3; i<=NF; ++i) - if ($(i) == "requires" || $(i) == "default") { - key = $(i) - if (key == "default") isdef = 1 - } else if (key == "requires") - reqs = reqs " " $(i) - else if (key == "default") - deflt = deflt " " $(i) - else - break # Format error, handled below - - setting[$2] = reqs - # NOTE: this overwrites a previous value silently - if (isdef && deflt == "") - deflt = " " # as a flag to force output - defaults[$2] = deflt - next -} - -# The order of the dependency lines (option, chunk, setting) is irrelevant -# - the 'enables', 'requires' and 'if' settings will be used to determine -# the correct order in the output and the final values in pnglibconf.h are -# not order dependent. 'requires' and 'if' entries take precedence over -# 'enables' from other options; if an option requires another option it -# won't be set regardless of any options that enable it unless the other -# option is also enabled. -# -# Similarly 'enables' trumps a NO_ definition in CFLAGS or pngusr.h -# -# For simplicity cycles in the definitions are regarded as errors, -# even if they are not ambiguous. -# A given NAME can be specified in as many 'option' lines as required, the -# definitions are additive. - -# For backwards compatibility equivalent macros may be listed thus: -# -# = [NO_]NAME MACRO -# Makes -DMACRO equivalent to -DPNG_NO_NAME or -DPNG_NAME_SUPPORTED -# as appropriate. -# -# The definition is injected into the C compiler input when encountered -# in the second pass (so all these definitions appear *after* the @ -# lines!) -# -# 'NAME' is as above, but 'MACRO' is the full text of the equivalent -# old, deprecated, macro. - -$1 == "=" && NF == 3{ - print "#ifdef PNG_" $3 >out - if ($2 ~ /^NO_/) - print "# define PNG_" $2 >out - else - print "# define PNG_" $2 "_SUPPORTED" >out - print "#endif" >out - next -} - -# Lines may be injected into the C compiler input by preceding them -# with an "@" character. The line is copied with just the leading -# @ removed. - -$1 ~ /^@/{ - # sub(/^[ ]*@/, "") - $1 = substr($1, 2) - print >out - next -} - -# Check for unrecognized lines, because of the preprocessing chunk -# format errors will be detected on the first pass independent of -# any other format errors. -{ - print "options.awk: bad line (" NR "):", $0 - err = 1 # prevent END{} running - exit 1 -} - -# For checking purposes names that start with "ok_" or "fail_" are -# not output to pnglibconf.h and must be either enabled or disabled -# respectively for the build to succeed. This allows interdependencies -# between options of the form "at least one of" or "at most one of" -# to be checked. For example: -# -# option FLOATING_POINT enables ok_math -# option FIXED_POINT enables ok_math -# This ensures that at least one of FLOATING_POINT and FIXED_POINT -# must be set for the build to succeed. -# -# option fail_math requires FLOATING_POINT FIXED_POINT -# This means the build will fail if *both* FLOATING_POINT and -# FIXED_POINT are set (this is an example; in fact both are allowed.) -# -# If all these options were given the build would require exactly one -# of the names to be enabled. - -END{ - # END{} gets run on an exit (a traditional awk feature) - if (err) exit 1 - - if (pre) { - # Record the final value of the variables - print "deb =", deb >out - if (everything != "") { - print "everything =", everything >out - } - print "logunsupported =", logunsupported >out - exit 0 - } - - # Do the options first (allowing options to set settings). The dependency - # tree is thus: - # - # name > name - # name requires name - # name if name - # name enabledby name - # - # First build a list 'tree' by option of all the things on which - # it depends. - print "" >out - print "/* OPTIONS */" >out - print comment, "options", cend >out - for (opt in enabledby) tree[opt] = 1 # may not be explicit options - for (opt in option) if (opt != "") { - o = option[opt] - # option should always be one of the following values - if (o != "on" && o != "off" && o != "disabled" && o != "enabled") { - print "internal option error (" o ")" - exit 1 - } - tree[opt] = "" # so unlisted options marked - } - for (opt in tree) if (opt != "") { - if (tree[opt] == 1) { - tree[opt] = "" - if (option[opt] != "") { - print "internal error (1)" - exit 1 - } - # Macros only listed in 'enables' remain off unless - # one of the enabling macros is on. - option[opt] = "disabled" - } - - split("", list) # clear 'list' - # Now add every requires, iffs or enabledby entry to 'list' - # so that we can add a unique list of requirements to tree[i] - split(requires[opt] iffs[opt] enabledby[opt], r) - for (i in r) list[r[i]] = 1 - for (i in list) tree[opt] = tree[opt] " " i - } - - # print the tree for extreme debugging - if (deb > 2) for (i in tree) if (i != "") print i, "depends-on" tree[i] - - # Ok, now check all options marked explicitly 'on' or 'off': - # - # If an option[opt] is 'on' then turn on all requires[opt] - # If an option[opt] is 'off' then turn off all enabledby[opt] - # - # Error out if we have to turn 'on' to an 'off' option or vice versa. - npending = 0 - for (opt in option) if (opt != "") { - if (option[opt] == "on" || option[opt] == "off") { - pending[++npending] = opt - } - } - - err = 0 # set on error - while (npending > 0) { - opt = pending[npending--] - if (option[opt] == "on") { - nreqs = split(requires[opt], r) - for (j=1; j<=nreqs; ++j) { - if (option[r[j]] == "off") { - print "option", opt, "turned on, but requirement", r[j], "is turned off" - err = 1 - } else if (option[r[j]] != "on") { - option[r[j]] = "on" - pending[++npending] = r[j] - } - } - } else { - if (option[opt] != "off") { - print "internal error (2)" - exit 1 - } - nreqs = split(enabledby[opt], r) - for (j=1; j<=nreqs; ++j) { - if (option[r[j]] == "on") { - print "option", opt, "turned off, but enabled by", r[j], "which is turned on" - err = 1 - } else if (option[r[j]] != "off") { - option[r[j]] = "off" - pending[++npending] = r[j] - } - } - } - } - if (err) exit 1 - - # Sort options: - print "PNG_DFN_START_SORT 2" >out - - # option[i] is now the complete list of all the tokens we may - # need to output, go through it as above, depth first. - finished = 0 - while (!finished) { - finished = 1 - movement = 0 # done nothing - for (i in option) if (!done[i]) { - nreqs = split(tree[i], r) - if (nreqs > 0) { - for (j=1; j<=nreqs; ++j) if (!done[r[j]]) { - break - } - if (j<=nreqs) { - finished = 0 - continue # next option - } - } - - # All the requirements have been processed, output - # this option. An option is _SUPPORTED if: - # - # all 'requires' are _SUPPORTED AND - # at least one of the 'if' options are _SUPPORTED AND - # EITHER: - # The name is _SUPPORTED (on the command line) - # OR: - # an 'enabledby' is _SUPPORTED - # OR: - # NO_name is not defined AND - # the option is not disabled; an option is disabled if: - # option == off - # option == disabled && everything != on - # option == "" && everything == off - if (deb) print "option", i - print "" >out - print "/* option:", i, option[i] >out - print " * requires: " requires[i] >out - print " * if: " iffs[i] >out - print " * enabled-by:" enabledby[i] >out - print " * sets: " sets[i], "*/" >out - print "#undef PNG_on" >out - print "#define PNG_on 1" >out - - # requires - nreqs = split(requires[i], r) - for (j=1; j<=nreqs; ++j) { - print "#ifndef PNG_" r[j] "_SUPPORTED" >out - print "# undef PNG_on /*!" r[j] "*/" >out - # This error appears in the final output if something - # was switched 'on' but the processing above to force - # the requires did not work - if (option[i] == "on") { - print error, i, "requires", r[j] end >out - } - print "#endif" >out - } - - # if - have_ifs = 0 - nreqs = split(iffs[i], r) - print "#undef PNG_no_if" >out - if (nreqs > 0) { - have_ifs = 1 - print "/* if" iffs[i], "*/" >out - print "#define PNG_no_if 1" >out - for (j=1; j<=nreqs; ++j) { - print "#ifdef PNG_" r[j] "_SUPPORTED" >out - print "# undef PNG_no_if /*" r[j] "*/" >out - print "#endif" >out - } - print "#ifdef PNG_no_if /*missing if*/" >out - print "# undef PNG_on" >out - # There is no checking above for this, because we - # don't know which 'if' to choose, so whine about - # it here: - if (option[i] == "on") { - print error, i, "needs one of:", iffs[i] end >out - } - print "#endif" >out - } - - print "#ifdef PNG_on /*requires, if*/" >out - # enables - print "# undef PNG_not_enabled" >out - print "# define PNG_not_enabled 1" >out - print " /* enabled by" enabledby[i], "*/" >out - nreqs = split(enabledby[i], r) - for (j=1; j<=nreqs; ++j) { - print "#ifdef PNG_" r[j] "_SUPPORTED" >out - print "# undef PNG_not_enabled /*" r[j] "*/" >out - # Oops, probably not intended (should be factored - # out by the checks above). - if (option[i] == "off") { - print error, i, "enabled by:", r[j] end >out - } - print "#endif" >out - } - - print "# ifndef PNG_" i "_SUPPORTED /*!command line*/" >out - print "# ifdef PNG_not_enabled /*!enabled*/" >out - # 'have_ifs' here means that everything = "off" still allows an 'if' on - # an otherwise enabled option to turn it on; otherwise the 'if' - # handling is effectively disabled by 'everything = off' - if (option[i] == "off" || option[i] == "disabled" && everything != "on" || option[i] == "enabled" && everything == "off" && !have_ifs) { - print "# undef PNG_on /*default off*/" >out - } else { - print "# ifdef PNG_NO_" i >out - print "# undef PNG_on /*turned off*/" >out - print "# endif" >out - print "# ifdef PNG_NO_" i "_SUPPORTED" >out - print "# undef PNG_on /*turned off*/" >out - print "# endif" >out - } - print "# endif /*!enabled*/" >out - print "# ifdef PNG_on" >out - # The _SUPPORTED macro must be defined so that dependent - # options output later work. - print "# define PNG_" i "_SUPPORTED" >out - print "# endif" >out - print "# endif /*!command line*/" >out - # If PNG_on is still set the option should be defined in - # pnglibconf.h - print "# ifdef PNG_on" >out - if (i ~ /^fail_/) { - print error, i, "is on: enabled by:" iffs[i] enabledby[i] ", requires" requires[i] end >out - } else if (i !~ /^ok_/) { - print def i sup >out - # Supported option, set required settings - nreqs = split(sets[i], r) - for (j=1; j<=nreqs; ++j) { - print "# ifdef PNG_set_" r[j] >out - # Some other option has already set a value: - print error, i, "sets", r[j] ": duplicate setting" end >out - print error, " previous value: " end "PNG_set_" r[j] >out - print "# else" >out - # Else set the default: note that this won't accept arbitrary - # values, the setval string must be acceptable to all the C - # compilers we use. That means it must be VERY simple; a number, - # a name or a string. - print "# define PNG_set_" r[j], setval[i " " r[j]] >out - print "# endif" >out - } - } - print "# endif /* definition */" >out - print "#endif /*requires, if*/" >out - if (logunsupported || i ~ /^ok_/) { - print "#ifndef PNG_on" >out - if (logunsupported) { - print und i une >out - } - if (i ~ /^ok_/) { - print error, i, "not enabled: requires:" requires[i] ", enabled by:" iffs[i] enabledby[i] end >out - } - print "#endif" >out - } - - done[i] = 1 - ++movement - } - - if (!finished && !movement) { - print "option: loop or missing option in dependency tree, cannot process:" - for (i in option) if (!done[i]) { - print " option", i, "depends on" tree[i], "needs:" - nreqs = split(tree[i], r) - if (nreqs > 0) for (j=1; j<=nreqs; ++j) if (!done[r[j]]) { - print " " r[j] - } - } - exit 1 - } - } - print "PNG_DFN_END_SORT" >out - print comment, "end of options", cend >out - - # Do the 'setting' values second, the algorithm the standard - # tree walk (O(1)) done in an O(2) while/for loop; iterations - # settings x depth, outputting the deepest required macros - # first. - print "" >out - print "/* SETTINGS */" >out - print comment, "settings", cend >out - # Sort (in dfn.awk) on field 2, the setting name - print "PNG_DFN_START_SORT 2" >out - finished = 0 - while (!finished) { - finished = 1 - movement = 0 # done nothing - for (i in setting) if (!doneset[i]) { - nreqs = split(setting[i], r) - if (nreqs > 0) { - # By default assume the requires values are options, but if there - # is no option with that name check for a setting - for (j=1; j<=nreqs; ++j) if (option[r[j]] == "" && !doneset[r[j]]) { - break - } - if (j<=nreqs) { - finished = 0 - continue # try a different setting - } - } - - # All the requirements have been processed, output - # this setting. - if (deb) print "setting", i - deflt = defaults[i] - # Remove any spurious trailing spaces - sub(/ *$/,"",deflt) - # A leading @ means leave it unquoted so the preprocessor - # can substitute the build time value - if (deflt ~ /^ @/) - deflt = " " subs substr(deflt, 3) sube - print "" >out - print "/* setting: ", i >out - print " * requires:" setting[i] >out - print " * default: ", defaults[i] deflt, "*/" >out - for (j=1; j<=nreqs; ++j) { - if (option[r[j]] != "") - print "#ifndef PNG_" r[j] "_SUPPORTED" >out - else - print "#ifndef PNG_" r[j] >out - print error, i, "requires", r[j] end >out - print "# endif" >out - } - # The precedence is: - # - # 1) External definition; trumps: - # 2) Option 'sets' value; trumps: - # 3) Setting 'default' - # - print "#ifdef PNG_" i >out - # PNG_ is defined, so substitute the value: - print def i, subs "PNG_" i sube end >out - print "#else /* use default */" >out - print "# ifdef PNG_set_" i >out - # Value from an option 'sets' argument - print def i, subs "PNG_set_" i sube end >out - # This is so that subsequent tests on the setting work: - print "# define PNG_" i, "1" >out - if (defaults[i] != "") { - print "# else /*default*/" >out - print def i deflt end >out - print "# define PNG_" i, "1" >out - } - print "# endif /* defaults */" >out - print "#endif /* setting", i, "*/" >out - - doneset[i] = 1 - ++movement - } - - if (!finished && !movement) { - print "setting: loop or missing setting in 'requires', cannot process:" - for (i in setting) if (!doneset[i]) { - print " setting", i, "requires" setting[i] - } - exit 1 - } - } - print "PNG_DFN_END_SORT" >out - print comment, "end of settings", cend >out - - # Regular end - everything looks ok - if (protect != "") { - print start "#endif", "/*", protect, "*/" end >out - } -} diff --git a/src/png/libpng/scripts/pnglibconf.dfa b/src/png/libpng/scripts/pnglibconf.dfa deleted file mode 100644 index b298a72f3..000000000 --- a/src/png/libpng/scripts/pnglibconf.dfa +++ /dev/null @@ -1,919 +0,0 @@ -# scripts/pnglibconf.dfa - library build configuration control -# -@/*- pnglibconf.dfn intermediate file -@ * generated from scripts/pnglibconf.dfa -@ */ -# -com pnglibconf.h - library build configuration -com -version -com -com Copyright (c) 1998-2017 Glenn Randers-Pehrson -com -com This code is released under the libpng license. -com For conditions of distribution and use, see the disclaimer -com and license in png.h -com - -file pnglibconf.h scripts/pnglibconf.dfa PNGLCONF_H - -# This file is preprocessed by scripts/options.awk and the -# C compiler to generate 'pnglibconf.h' - a list of all the -# configuration options. The file lists the various options -# that can *only* be specified during the libpng build; -# pnglibconf.h freezes the definitions selected for the specific -# build. -# -# The syntax is detailed in scripts/options.awk; this is a summary -# only: -# -# setting [requires ...] [default] -# #define PNG_ /* value comes from current setting */ -# option [requires ...] [if ...] [enables ...] [disabled] -# #define PNG__SUPPORTED if the requirements are met and -# enable the other options listed -# chunk [requires ...] [enables ...] [disabled] -# Enable chunk processing for the given ancillary chunk; any -# 'requires something' expands to READ_something for read and -# WRITE_something for write, but the enables list members are -# used as given (e.g. enables GAMMA just expands to that on the -# correspond READ_name and WRITE_name lines.) -# -# "," may be used to separate options on an 'option' line and is ignored; it -# doesn't change the meaning of the line. (NOT setting, where "," becomes -# part of the setting!) A comma at the end of an option line causes a -# continuation (the next line is included in the option too.) -# -# Note that the 'on' and 'off' keywords, while valid on both option -# and chunk, should not be used in this file because they force the -# relevant options on or off. - -#---------------------------------------------------------------------- - -# The following setting, option and chunk values can all be changed -# while building libpng: -# -# setting: change 'setting' lines to fine tune library performance; -# changes to the settings don't affect the libpng API functionally -# -# option: change 'option' lines to remove or add capabilities from -# or to the library; options change the library API -# -# chunk: change 'chunk' lines to remove capabilities to process -# optional ('ancillary') chunks. This does not prevent PNG -# decoding but does change the libpng API because some chunks -# will be ignored. -# -# There are three ways of disabling features, in no particular order: -# -# 1) Create 'pngusr.h', enter the required private build information -# detailed below and #define PNG_NO_