diff --git a/examples/Basics/logo_and_text.scad b/examples/Basics/logo_and_text.scad index 2475cb32..140ff248 100644 --- a/examples/Basics/logo_and_text.scad +++ b/examples/Basics/logo_and_text.scad @@ -2,8 +2,10 @@ // (c) 2014 Torsten Paul // CC-BY-SA 4.0 -$vpr = [0, 0, 0]; -$vpt = [-250, 0, -80]; +echo(version=version()); + +$vpr = [90, 0, 0]; +$vpt = [250, 0, 80]; $vpd = 500; r = 60; diff --git a/examples/Basics/text_on_cube.scad b/examples/Basics/text_on_cube.scad index d6223348..046be735 100644 --- a/examples/Basics/text_on_cube.scad +++ b/examples/Basics/text_on_cube.scad @@ -2,6 +2,8 @@ // (c) 2014 Torsten Paul // CC-BY-SA 4.0 +echo(version=version()); + font = "Liberation Sans"; cube_size = 60; diff --git a/releases/2014.QX.md b/releases/2014.QX.md new file mode 100644 index 00000000..17d0fa94 --- /dev/null +++ b/releases/2014.QX.md @@ -0,0 +1,33 @@ +**Language Features:** +* surface() can now take PNG images as input +* List comprehensions, let() +* text() module +* offset() +* min() and max() can now take a wvector argument +* concat() +* 2D minkowski and holes + +**Program Features:** +* Added --viewall cmd-line parameter +* MDI +* FIXME: Windows cmd-line fixes +* Qt5, retina +* SVG import/export +* AMF import/export + +**Bugfixes/improvements:** +* Internal cavity fix +* Performance: 2D (clipper), preview, hull, minkowski, surface, n-ary-union, transforms (polyset) +* Performance: Reduce duplicate evaluation of identical expressions +* STL export/import fixes +* F6 stability fixes +* Better recursion behavior +* Reorganized examples a bit +* improved search() behavior +* Mac: Timestamps is output fixed + +**Deprecations:** +* polyhedron triangles + +**Misc:** + diff --git a/scripts/macosx-build-dependencies.sh b/scripts/macosx-build-dependencies.sh index 89060974..355239d0 100755 --- a/scripts/macosx-build-dependencies.sh +++ b/scripts/macosx-build-dependencies.sh @@ -41,15 +41,6 @@ printUsage() echo " -d Build for deployment" } -create_dummy_cmd() -{ - cmd="$1" - file="$2" - - echo "$cmd" > "$file" - chmod 755 "$file" -} - patch_qt_disable_core_wlan() { version="$1" @@ -110,12 +101,18 @@ build_qt() ;; esac ./configure -prefix $DEPLOYDIR -release $QT_32BIT -arch x86_64 -opensource -confirm-license $PLATFORM -fast -no-qt3support -no-svg -no-phonon -no-audio-backend -no-multimedia -no-javascript-jit -no-script -no-scripttools -no-declarative -no-xmlpatterns -nomake demos -nomake examples -nomake docs -nomake translations -no-webkit $MACOSX_RELEASE_OPTIONS - make -j6 install + make -j"$NUMCPU" install } build_qt5() { version=$1 + + if [ -d $DEPLOYDIR/lib/QtCore.framework ]; then + echo "Qt5 already installed. not building" + return + fi + echo "Building Qt" $version "..." cd $BASEDIR/src v=(${version//./ }) # Split into array @@ -125,8 +122,15 @@ build_qt5() fi tar xzf qt-everywhere-opensource-src-$version.tar.gz cd qt-everywhere-opensource-src-$version - ./configure -prefix $DEPLOYDIR -release -opensource -confirm-license -nomake examples -nomake tests -no-xcb -no-c++11 -no-glib - make -j6 install + ./configure -prefix $DEPLOYDIR -release -opensource -confirm-license \ + -nomake examples -nomake tests \ + -no-xcb -no-c++11 -no-glib -no-harfbuzz -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc \ + -no-sql-psql -no-sql-sqlite2 -no-sql-tds -no-cups -no-qml-debug \ + -skip activeqt -skip connectivity -skip declarative -skip doc \ + -skip enginio -skip graphicaleffects -skip location -skip multimedia \ + -skip quick1 -skip quickcontrols -skip script -skip sensors -skip serialport \ + -skip svg -skip webkit -skip webkit-examples -skip websockets -skip xmlpatterns + make -j"$NUMCPU" install } # Hack warning: gmplib is built separately in 32-bit and 64-bit mode @@ -310,7 +314,7 @@ build_boost() BOOST_TOOLSET="toolset=clang" echo "using clang ;" >> tools/build/v2/user-config.jam fi - ./b2 -j6 -d+2 $BOOST_TOOLSET cflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64 $BOOST_EXTRA_FLAGS" linkflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64 $BOOST_EXTRA_FLAGS -headerpad_max_install_names" install + ./b2 -j"$NUMCPU" -d+2 $BOOST_TOOLSET cflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64 $BOOST_EXTRA_FLAGS" linkflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64 $BOOST_EXTRA_FLAGS -headerpad_max_install_names" install install_name_tool -id $DEPLOYDIR/lib/libboost_thread.dylib $DEPLOYDIR/lib/libboost_thread.dylib install_name_tool -change libboost_system.dylib $DEPLOYDIR/lib/libboost_system.dylib $DEPLOYDIR/lib/libboost_thread.dylib install_name_tool -change libboost_chrono.dylib $DEPLOYDIR/lib/libboost_chrono.dylib $DEPLOYDIR/lib/libboost_thread.dylib @@ -354,7 +358,7 @@ build_cgal() CGAL_EXTRA_FLAGS=";i386" fi cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.dylib -DGMPXX_LIBRARIES=$DEPLOYDIR/lib/libgmpxx.dylib -DGMPXX_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_LIBRARIES=$DEPLOYDIR/lib/libmpfr.dylib -DWITH_CGAL_Qt3=OFF -DWITH_CGAL_Qt4=OFF -DWITH_CGAL_ImageIO=OFF -DBUILD_SHARED_LIBS=TRUE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64$CGAL_EXTRA_FLAGS" -DBOOST_ROOT=$DEPLOYDIR -DBoost_USE_MULTITHREADED=false - make -j4 + make -j"$NUMCPU" install make install install_name_tool -id $DEPLOYDIR/lib/libCGAL.dylib $DEPLOYDIR/lib/libCGAL.dylib install_name_tool -id $DEPLOYDIR/lib/libCGAL_Core.dylib $DEPLOYDIR/lib/libCGAL_Core.dylib @@ -414,10 +418,6 @@ build_eigen() { version=$1 - if [ -d $DEPLOYDIR/include/eigen2 ]; then - echo "eigen2 already installed. not building" - return - fi if [ -d $DEPLOYDIR/include/eigen3 ]; then echo "eigen3 already installed. not building" return @@ -431,7 +431,9 @@ build_eigen() if [ $version = "3.1.2" ]; then EIGENDIR=eigen-eigen-5097c01bcdc4; elif [ $version = "3.1.3" ]; then EIGENDIR=eigen-eigen-2249f9c22fe8; elif [ $version = "3.1.4" ]; then EIGENDIR=eigen-eigen-36bf2ceaf8f5; - elif [ $version = "3.2.0" ]; then EIGENDIR=eigen-eigen-ffa86ffb5570; fi + elif [ $version = "3.2.0" ]; then EIGENDIR=eigen-eigen-ffa86ffb5570; + elif [ $version = "3.2.1" ]; then EIGENDIR=eigen-eigen-6b38706d90a9; + fi if [ $EIGENDIR = "none" ]; then echo Unknown eigen version. Please edit script. @@ -452,7 +454,7 @@ build_eigen() EIGEN_EXTRA_FLAGS=";i386" fi cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DEIGEN_BUILD_LIB=ON -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64$EIGEN_EXTRA_FLAGS" .. - make -j4 + make -j"$NUMCPU" install make install } @@ -487,6 +489,11 @@ build_freetype() version="$1" extra_config_flags="$2" + if [ -f $DEPLOYDIR/lib/libfreetype.dylib ]; then + echo "freetype already installed. not building" + return + fi + echo "Building freetype $version..." cd "$BASEDIR"/src rm -rf "freetype-$version" @@ -504,6 +511,11 @@ build_libxml2() { version="$1" + if [ -f $DEPLOYDIR/lib/libxml2.dylib ]; then + echo "libxml2 already installed. not building" + return + fi + echo "Building libxml2 $version..." cd "$BASEDIR"/src rm -rf "libxml2-$version" @@ -521,6 +533,11 @@ build_fontconfig() { version=$1 + if [ -f $DEPLOYDIR/lib/libfontconfig.dylib ]; then + echo "fontconfig already installed. not building" + return + fi + echo "Building fontconfig $version..." cd "$BASEDIR"/src rm -rf "fontconfig-$version" @@ -540,6 +557,11 @@ build_libffi() { version="$1" + if [ -f $DEPLOYDIR/lib/libffi.dylib ]; then + echo "libffi already installed. not building" + return + fi + echo "Building libffi $version..." cd "$BASEDIR"/src rm -rf "libffi-$version" @@ -557,6 +579,11 @@ build_gettext() { version="$1" + if [ -f $DEPLOYDIR/lib/libgettextlib.dylib ]; then + echo "gettext already installed. not building" + return + fi + echo "Building gettext $version..." cd "$BASEDIR"/src rm -rf "gettext-$version" @@ -575,6 +602,11 @@ build_glib2() { version="$1" + if [ -f $DEPLOYDIR/lib/libglib-2.0.dylib ]; then + echo "glib2 already installed. not building" + return + fi + echo "Building glib2 $version..." cd "$BASEDIR"/src @@ -597,6 +629,11 @@ build_ragel() { version=$1 + if [ -f $DEPLOYDIR/bin/ragel ]; then + echo "ragel already installed. not building" + return + fi + echo "Building ragel $version..." cd "$BASEDIR"/src rm -rf "ragel-$version" @@ -616,6 +653,11 @@ build_harfbuzz() version=$1 extra_config_flags="$2" + if [ -f $DEPLOYDIR/lib/libharfbuzz.dylib ]; then + echo "harfbuzz already installed. not building" + return + fi + echo "Building harfbuzz $version..." cd "$BASEDIR"/src rm -rf "harfbuzz-$version" @@ -693,6 +735,7 @@ echo "Building for $MAC_OSX_VERSION_MIN or later" if [ ! $NUMCPU ]; then NUMCPU=$(sysctl -n hw.ncpu) + echo "Setting number of CPUs to $NUMCPU" fi if $OPTION_DEPLOY; then @@ -710,9 +753,9 @@ fi echo "Using basedir:" $BASEDIR mkdir -p $SRCDIR $DEPLOYDIR -build_qt5 5.3.0 +build_qt5 5.3.1 # NB! For eigen, also update the path in the function -build_eigen 3.2.0 +build_eigen 3.2.1 build_gmp 5.1.3 build_mpfr 3.1.2 build_boost 1.54.0 @@ -724,14 +767,12 @@ build_libffi 3.1 build_glib2 2.40.0 build_opencsg 1.3.2 build_freetype 2.5.3 --without-png +build_ragel 6.8 build_harfbuzz 0.9.28 "--with-coretext=auto --with-glib=no" export FREETYPE_CFLAGS="-I$DEPLOYDIR/include -I$DEPLOYDIR/include/freetype2" export FREETYPE_LIBS="-L$DEPLOYDIR/lib -lfreetype" build_libxml2 2.9.1 build_fontconfig 2.11.1 -build_ragel 6.8 -export PATH="$PATH:$DEPLOYDIR/bin" -create_dummy_cmd "touch gtk-doc.make" "$DEPLOYDIR/bin/gtkdocize" if $OPTION_DEPLOY; then # build_sparkle andymatuschak 0ed83cf9f2eeb425d4fdd141c01a29d843970c20 build_sparkle Cocoanetics 1e7dcb1a48b96d1a8c62100b5864bd50211cbae1 diff --git a/src/FontListDialog.cc b/src/FontListDialog.cc index b1a6e802..bfa3c8e5 100644 --- a/src/FontListDialog.cc +++ b/src/FontListDialog.cc @@ -24,6 +24,7 @@ * */ +#include #include #include "FontListDialog.h" @@ -41,9 +42,12 @@ FontListDialog::~FontListDialog() { } -void FontListDialog::on_pasteButton_clicked() +void FontListDialog::on_copyButton_clicked() { font_selected(selection); + + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setText(selection); } void FontListDialog::on_filterLineEdit_textChanged(const QString &text) @@ -54,7 +58,7 @@ void FontListDialog::on_filterLineEdit_textChanged(const QString &text) void FontListDialog::selection_changed(const QItemSelection ¤t, const QItemSelection &) { if (current.count() == 0) { - pasteButton->setEnabled(false); + copyButton->setEnabled(false); return; } @@ -62,12 +66,12 @@ void FontListDialog::selection_changed(const QItemSelection ¤t, const QIte const QString name = model->item(idx.row(), 0)->text(); const QString style = model->item(idx.row(), 1)->text(); selection = QString("\"%1:style=%2\"").arg(name).arg(style); - pasteButton->setEnabled(true); + copyButton->setEnabled(true); } void FontListDialog::update_font_list() { - pasteButton->setEnabled(false); + copyButton->setEnabled(false); if (proxy) { delete proxy; diff --git a/src/FontListDialog.h b/src/FontListDialog.h index e7b5fc48..10010995 100644 --- a/src/FontListDialog.h +++ b/src/FontListDialog.h @@ -18,7 +18,7 @@ public: void update_font_list(); public slots: - void on_pasteButton_clicked(); + void on_copyButton_clicked(); void on_filterLineEdit_textChanged(const QString &); void selection_changed(const QItemSelection &, const QItemSelection &); diff --git a/src/FontListDialog.ui b/src/FontListDialog.ui index 2f6cdc3a..7313f3b6 100644 --- a/src/FontListDialog.ui +++ b/src/FontListDialog.ui @@ -34,12 +34,12 @@ - + Paste font selector to Editor Window - Paste + Copy to Clipboard diff --git a/src/FreetypeRenderer.cc b/src/FreetypeRenderer.cc index bf40e203..8d31ea5c 100644 --- a/src/FreetypeRenderer.cc +++ b/src/FreetypeRenderer.cc @@ -126,7 +126,7 @@ std::vector FreetypeRenderer::render(const FreetypeRenderer::P { FT_Face face; FT_Error error; - DrawingCallback callback(params.fn); + DrawingCallback callback(params.segments); FontCache *cache = FontCache::instance(); if (!cache->is_init_ok()) { diff --git a/src/FreetypeRenderer.h b/src/FreetypeRenderer.h index b30aaab3..e4aec726 100644 --- a/src/FreetypeRenderer.h +++ b/src/FreetypeRenderer.h @@ -47,6 +47,15 @@ public: void set_fn(double fn) { this->fn = fn; } + void set_fa(double fa) { + this->fa = fa; + } + void set_fs(double fs) { + this->fs = fs; + } + void set_segments(double segments) { + this->segments = segments; + } void set_text(std::string text) { this->text = text; } @@ -79,10 +88,12 @@ public: << "\", script = \"" << params.script << "\", halign = \"" << params.halign << "\", valign = \"" << params.valign - << "\", $fn = " << params.fn; + << "\", $fn = " << params.fn + << ", $fa = " << params.fa + << ", $fs = " << params.fs; } private: - double size, spacing, fn; + double size, spacing, fn, fa, fs, segments; std::string text, font, direction, language, script, halign, valign; friend class FreetypeRenderer; diff --git a/src/MainWindow.h b/src/MainWindow.h index 0a9ef561..ed3e0cfc 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -137,7 +137,6 @@ private slots: void compileEnded(); private slots: - void pasteText(const QString text); void pasteViewportTranslation(); void pasteViewportRotation(); void hideEditor(); diff --git a/src/mainwin.cc b/src/mainwin.cc index 81b52dd1..40b9a178 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -1316,12 +1316,6 @@ void MainWindow::pasteViewportTranslation() cursor.insertText(txt); } -void MainWindow::pasteText(const QString text) -{ - QTextCursor cursor = editor->textCursor(); - cursor.insertText(text); -} - void MainWindow::pasteViewportRotation() { QTextCursor cursor = editor->textCursor(); @@ -2366,7 +2360,6 @@ void MainWindow::helpFontInfo() { if (!this->font_list_dialog) { FontListDialog *dialog = new FontListDialog(); - connect(dialog, SIGNAL(font_selected(QString)), this, SLOT(pasteText(QString))); this->font_list_dialog = dialog; } this->font_list_dialog->update_font_list(); diff --git a/src/parsersettings.cc b/src/parsersettings.cc index e7b5ff89..b83463b7 100644 --- a/src/parsersettings.cc +++ b/src/parsersettings.cc @@ -77,10 +77,11 @@ fs::path find_valid_path(const fs::path &sourcepath, const std::vector *openfilenames) { if (boosty::is_absolute(localpath)) { - if (check_valid(localpath, openfilenames)) return boosty::absolute(localpath); + if (check_valid(localpath, openfilenames)) return boosty::canonical(localpath); } else { fs::path fpath = sourcepath / localpath; + if (fs::exists(fpath)) fpath = boosty::canonical(fpath); if (check_valid(fpath, openfilenames)) return fpath; fpath = search_libs(localpath); if (!fpath.empty() && check_valid(fpath, openfilenames)) return fpath; diff --git a/src/text.cc b/src/text.cc index f63fe055..64254b90 100644 --- a/src/text.cc +++ b/src/text.cc @@ -55,8 +55,12 @@ AbstractNode *TextModule::instantiate(const Context *ctx, const ModuleInstantiat c.setVariables(args, evalctx); double fn = c.lookup_variable("$fn").toDouble(); - double fs = c.lookup_variable("$fs").toDouble(); double fa = c.lookup_variable("$fa").toDouble(); + double fs = c.lookup_variable("$fs").toDouble(); + + node->params.set_fn(fn); + node->params.set_fa(fa); + node->params.set_fs(fs); double size = lookup_double_variable_with_default(c, "size", 10.0); int segments = Calc::get_fragments_from_r(size, fn, fs, fa); @@ -64,9 +68,10 @@ AbstractNode *TextModule::instantiate(const Context *ctx, const ModuleInstantiat // by using a fraction of the number of full circle segments // the resolution will be better matching the detail level of // other objects. - int text_segments = std::max(((int)floor(segments / 6)) + 2, 2); + int text_segments = std::max(((int)floor(segments / 8)) + 1, 2); + node->params.set_size(size); - node->params.set_fn(text_segments); + node->params.set_segments(text_segments); node->params.set_text(lookup_string_variable_with_default(c, "text", "")); node->params.set_spacing(lookup_double_variable_with_default(c, "spacing", 1.0)); node->params.set_font(lookup_string_variable_with_default(c, "font", "")); diff --git a/testdata/scad/misc/include-recursive-test.scad b/testdata/scad/misc/include-recursive-test.scad new file mode 100644 index 00000000..3b2fa537 --- /dev/null +++ b/testdata/scad/misc/include-recursive-test.scad @@ -0,0 +1,5 @@ +include +include <../misc/include-recursive-test.scad> +include <../../scad/misc/include-recursive-test.scad> + +echo("INC"); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0c921077..24a4e3ac 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -988,6 +988,7 @@ list(APPEND ECHO_FILES ${FUNCTION_FILES} ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/utf8-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/concat-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-tests.scad + ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-recursive-test.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/bugs/empty-stl.scad) list(APPEND DUMPTEST_FILES ${FEATURES_FILES}) diff --git a/tests/regression/dumptest-examples/logo_and_text-expected.csg b/tests/regression/dumptest-examples/logo_and_text-expected.csg index a8c8a0d9..51c60980 100644 --- a/tests/regression/dumptest-examples/logo_and_text-expected.csg +++ b/tests/regression/dumptest-examples/logo_and_text-expected.csg @@ -1,4 +1,5 @@ group() { + group(); multmatrix([[1, 0, 0, 110], [0, 1, 0, 0], [0, 0, 1, 80], [0, 0, 0, 1]]) { multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 30], [0, 0, 0, 1]]) { multmatrix([[0.69427204401, 0.71938369937, 0.02175826214, 0], [-0.58256341607, 0.57946619475, -0.56994630922, 0], [-0.42261826174, 0.38302222155, 0.82139380484, 0], [0, 0, 0, 1]]) { diff --git a/tests/regression/dumptest-examples/text_on_cube-expected.csg b/tests/regression/dumptest-examples/text_on_cube-expected.csg index 864309eb..f05e5658 100644 --- a/tests/regression/dumptest-examples/text_on_cube-expected.csg +++ b/tests/regression/dumptest-examples/text_on_cube-expected.csg @@ -1,4 +1,5 @@ group() { + group(); difference() { union() { color([0.501961, 0.501961, 0.501961, 1]) { diff --git a/tests/regression/dumptest/text-font-alignment-tests-expected.csg b/tests/regression/dumptest/text-font-alignment-tests-expected.csg index 9aa8f915..960a63a6 100644 --- a/tests/regression/dumptest/text-font-alignment-tests-expected.csg +++ b/tests/regression/dumptest/text-font-alignment-tests-expected.csg @@ -7,7 +7,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "top", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "top", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 10], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -16,7 +16,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "center", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "center", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 10], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -25,7 +25,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 10], [0, 1, 0, 100], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -34,7 +34,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "bottom", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "bottom", $fn = 0, $fa = 12, $fs = 2); } } group() { @@ -45,7 +45,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 249.2], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -54,7 +54,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 316.1], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -63,7 +63,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "right", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "right", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } } } diff --git a/tests/regression/dumptest/text-font-composition-expected.csg b/tests/regression/dumptest/text-font-composition-expected.csg index 9671302b..77019c18 100644 --- a/tests/regression/dumptest/text-font-composition-expected.csg +++ b/tests/regression/dumptest/text-font-composition-expected.csg @@ -1,3 +1,3 @@ group() { - text(text = "Å", size = 40, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "Å", size = 40, spacing = 1, font = "Liberation Sans", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } diff --git a/tests/regression/dumptest/text-font-direction-tests-expected.csg b/tests/regression/dumptest/text-font-direction-tests-expected.csg index 35c454c4..d4f1eaac 100644 --- a/tests/regression/dumptest/text-font-direction-tests-expected.csg +++ b/tests/regression/dumptest/text-font-direction-tests-expected.csg @@ -7,7 +7,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltl", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltl", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 90], [0, 1, 0, 60], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -16,7 +16,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "rtl", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "rtl", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 10], [0, 1, 0, 160], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -25,7 +25,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ttb", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ttb", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 60], [0, 1, 0, 140], [0, 0, 1, 0], [0, 0, 0, 1]]) { color([1, 0, 0, 1]) { @@ -34,7 +34,7 @@ group() { color([0, 0, 1, 1]) { square(size = [0.5, 20], center = false); } - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "btt", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "btt", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } } } diff --git a/tests/regression/dumptest/text-font-simple-tests-expected.csg b/tests/regression/dumptest/text-font-simple-tests-expected.csg index db086747..790bfbff 100644 --- a/tests/regression/dumptest/text-font-simple-tests-expected.csg +++ b/tests/regression/dumptest/text-font-simple-tests-expected.csg @@ -1,3 +1,3 @@ group() { - text(text = "T-X-U", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 2); + text(text = "T-X-U", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 2, $fa = 12, $fs = 2); } diff --git a/tests/regression/dumptest/text-font-symbol-expected.csg b/tests/regression/dumptest/text-font-symbol-expected.csg index cc22d96c..14199379 100644 --- a/tests/regression/dumptest/text-font-symbol-expected.csg +++ b/tests/regression/dumptest/text-font-symbol-expected.csg @@ -2,35 +2,35 @@ group() { group() { group() { multmatrix([[1, 0, 0, -180], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "0123", size = 40, spacing = 1, font = "MarVoSym", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "0123", size = 40, spacing = 1, font = "MarVoSym", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, -180], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "ABCD", size = 40, spacing = 1, font = "MarVoSym", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "ABCD", size = 40, spacing = 1, font = "MarVoSym", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, -180], [0, 1, 0, 130], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "abcd", size = 40, spacing = 1, font = "MarVoSym", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "abcd", size = 40, spacing = 1, font = "MarVoSym", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } } group() { multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "0123", size = 40, spacing = 1, font = "Amiri", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "0123", size = 40, spacing = 1, font = "Amiri", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 0], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "ABCD", size = 40, spacing = 1, font = "Amiri", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "ABCD", size = 40, spacing = 1, font = "Amiri", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 0], [0, 1, 0, 130], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "abcd", size = 40, spacing = 1, font = "Amiri", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "abcd", size = 40, spacing = 1, font = "Amiri", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } } group() { multmatrix([[1, 0, 0, 180], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "0123", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "0123", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 180], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "ABCD", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "ABCD", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 180], [0, 1, 0, 130], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "abcd", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 7); + text(text = "abcd", size = 40, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "center", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } } } diff --git a/tests/regression/dumptest/text-font-tests-expected.csg b/tests/regression/dumptest/text-font-tests-expected.csg index 751ead2f..394ec103 100644 --- a/tests/regression/dumptest/text-font-tests-expected.csg +++ b/tests/regression/dumptest/text-font-tests-expected.csg @@ -1,20 +1,20 @@ group() { multmatrix([[0.70710678118, 0.5, -0.5, 0], [-0.70710678118, 0.5, -0.5, 0], [0, 0.70710678118, 0.70710678118, 0], [0, 0, 0, 1]]) { multmatrix([[1, 0, 0, 0], [0, 1, 0, 80], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "OpenSCAD", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 0], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "الخط الأميري", size = 20, spacing = 1, font = "Amiri:style=Regular", direction = "rtl", language = "ar", script = "arabic", halign = "left", valign = "baseline", $fn = 7); + text(text = "الخط الأميري", size = 20, spacing = 1, font = "Amiri:style=Regular", direction = "rtl", language = "ar", script = "arabic", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } - text(text = "الخط الأميري", size = 20, spacing = 1, font = "Amiri:style=Regular", direction = "rtl", language = "ar", script = "arabic", halign = "left", valign = "baseline", $fn = 7); + text(text = "الخط الأميري", size = 20, spacing = 1, font = "Amiri:style=Regular", direction = "rtl", language = "ar", script = "arabic", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); multmatrix([[1, 0, 0, 0], [0, 1, 0, -40], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "типографика", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "ru", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "типографика", size = 20, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "ru", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 0], [0, 1, 0, -80], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "positional", size = 30, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "positional", size = 30, spacing = 1, font = "Liberation Sans:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } multmatrix([[1, 0, 0, 0], [0, 1, 0, -100], [0, 0, 1, 0], [0, 0, 0, 1]]) { - text(text = "parameters", size = 12, spacing = 1, font = "Amiri:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 7); + text(text = "parameters", size = 12, spacing = 1, font = "Amiri:style=Regular", direction = "ltr", language = "en", script = "latin", halign = "left", valign = "baseline", $fn = 0, $fa = 12, $fs = 2); } } } diff --git a/tests/regression/echotest/include-recursive-test-expected.echo b/tests/regression/echotest/include-recursive-test-expected.echo new file mode 100644 index 00000000..e01ef4fa --- /dev/null +++ b/tests/regression/echotest/include-recursive-test-expected.echo @@ -0,0 +1,13 @@ +WARNING: Can't open include file 'include-recursive-test.scad'. +WARNING: Can't open include file '../misc/include-recursive-test.scad'. +WARNING: Can't open include file '../../scad/misc/include-recursive-test.scad'. +WARNING: Can't open include file 'include-recursive-test.scad'. +WARNING: Can't open include file '../misc/include-recursive-test.scad'. +WARNING: Can't open include file '../../scad/misc/include-recursive-test.scad'. +WARNING: Can't open include file 'include-recursive-test.scad'. +WARNING: Can't open include file '../misc/include-recursive-test.scad'. +WARNING: Can't open include file '../../scad/misc/include-recursive-test.scad'. +ECHO: "INC" +ECHO: "INC" +ECHO: "INC" +ECHO: "INC"