mirror of https://github.com/vitalif/openscad
Merge remote-tracking branch 'origin/master' into launchingscreen
commit
72c6982f85
|
@ -2,8 +2,10 @@
|
||||||
// (c) 2014 Torsten Paul
|
// (c) 2014 Torsten Paul
|
||||||
// CC-BY-SA 4.0
|
// CC-BY-SA 4.0
|
||||||
|
|
||||||
$vpr = [0, 0, 0];
|
echo(version=version());
|
||||||
$vpt = [-250, 0, -80];
|
|
||||||
|
$vpr = [90, 0, 0];
|
||||||
|
$vpt = [250, 0, 80];
|
||||||
$vpd = 500;
|
$vpd = 500;
|
||||||
|
|
||||||
r = 60;
|
r = 60;
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
// (c) 2014 Torsten Paul
|
// (c) 2014 Torsten Paul
|
||||||
// CC-BY-SA 4.0
|
// CC-BY-SA 4.0
|
||||||
|
|
||||||
|
echo(version=version());
|
||||||
|
|
||||||
font = "Liberation Sans";
|
font = "Liberation Sans";
|
||||||
|
|
||||||
cube_size = 60;
|
cube_size = 60;
|
||||||
|
|
|
@ -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:**
|
||||||
|
|
|
@ -41,15 +41,6 @@ printUsage()
|
||||||
echo " -d Build for deployment"
|
echo " -d Build for deployment"
|
||||||
}
|
}
|
||||||
|
|
||||||
create_dummy_cmd()
|
|
||||||
{
|
|
||||||
cmd="$1"
|
|
||||||
file="$2"
|
|
||||||
|
|
||||||
echo "$cmd" > "$file"
|
|
||||||
chmod 755 "$file"
|
|
||||||
}
|
|
||||||
|
|
||||||
patch_qt_disable_core_wlan()
|
patch_qt_disable_core_wlan()
|
||||||
{
|
{
|
||||||
version="$1"
|
version="$1"
|
||||||
|
@ -110,12 +101,18 @@ build_qt()
|
||||||
;;
|
;;
|
||||||
esac
|
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
|
./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()
|
build_qt5()
|
||||||
{
|
{
|
||||||
version=$1
|
version=$1
|
||||||
|
|
||||||
|
if [ -d $DEPLOYDIR/lib/QtCore.framework ]; then
|
||||||
|
echo "Qt5 already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building Qt" $version "..."
|
echo "Building Qt" $version "..."
|
||||||
cd $BASEDIR/src
|
cd $BASEDIR/src
|
||||||
v=(${version//./ }) # Split into array
|
v=(${version//./ }) # Split into array
|
||||||
|
@ -125,8 +122,15 @@ build_qt5()
|
||||||
fi
|
fi
|
||||||
tar xzf qt-everywhere-opensource-src-$version.tar.gz
|
tar xzf qt-everywhere-opensource-src-$version.tar.gz
|
||||||
cd qt-everywhere-opensource-src-$version
|
cd qt-everywhere-opensource-src-$version
|
||||||
./configure -prefix $DEPLOYDIR -release -opensource -confirm-license -nomake examples -nomake tests -no-xcb -no-c++11 -no-glib
|
./configure -prefix $DEPLOYDIR -release -opensource -confirm-license \
|
||||||
make -j6 install
|
-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
|
# Hack warning: gmplib is built separately in 32-bit and 64-bit mode
|
||||||
|
@ -310,7 +314,7 @@ build_boost()
|
||||||
BOOST_TOOLSET="toolset=clang"
|
BOOST_TOOLSET="toolset=clang"
|
||||||
echo "using clang ;" >> tools/build/v2/user-config.jam
|
echo "using clang ;" >> tools/build/v2/user-config.jam
|
||||||
fi
|
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 -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_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
|
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"
|
CGAL_EXTRA_FLAGS=";i386"
|
||||||
fi
|
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
|
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
|
make install
|
||||||
install_name_tool -id $DEPLOYDIR/lib/libCGAL.dylib $DEPLOYDIR/lib/libCGAL.dylib
|
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
|
install_name_tool -id $DEPLOYDIR/lib/libCGAL_Core.dylib $DEPLOYDIR/lib/libCGAL_Core.dylib
|
||||||
|
@ -414,10 +418,6 @@ build_eigen()
|
||||||
{
|
{
|
||||||
version=$1
|
version=$1
|
||||||
|
|
||||||
if [ -d $DEPLOYDIR/include/eigen2 ]; then
|
|
||||||
echo "eigen2 already installed. not building"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if [ -d $DEPLOYDIR/include/eigen3 ]; then
|
if [ -d $DEPLOYDIR/include/eigen3 ]; then
|
||||||
echo "eigen3 already installed. not building"
|
echo "eigen3 already installed. not building"
|
||||||
return
|
return
|
||||||
|
@ -431,7 +431,9 @@ build_eigen()
|
||||||
if [ $version = "3.1.2" ]; then EIGENDIR=eigen-eigen-5097c01bcdc4;
|
if [ $version = "3.1.2" ]; then EIGENDIR=eigen-eigen-5097c01bcdc4;
|
||||||
elif [ $version = "3.1.3" ]; then EIGENDIR=eigen-eigen-2249f9c22fe8;
|
elif [ $version = "3.1.3" ]; then EIGENDIR=eigen-eigen-2249f9c22fe8;
|
||||||
elif [ $version = "3.1.4" ]; then EIGENDIR=eigen-eigen-36bf2ceaf8f5;
|
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
|
if [ $EIGENDIR = "none" ]; then
|
||||||
echo Unknown eigen version. Please edit script.
|
echo Unknown eigen version. Please edit script.
|
||||||
|
@ -452,7 +454,7 @@ build_eigen()
|
||||||
EIGEN_EXTRA_FLAGS=";i386"
|
EIGEN_EXTRA_FLAGS=";i386"
|
||||||
fi
|
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" ..
|
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
|
make install
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,6 +489,11 @@ build_freetype()
|
||||||
version="$1"
|
version="$1"
|
||||||
extra_config_flags="$2"
|
extra_config_flags="$2"
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libfreetype.dylib ]; then
|
||||||
|
echo "freetype already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building freetype $version..."
|
echo "Building freetype $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "freetype-$version"
|
rm -rf "freetype-$version"
|
||||||
|
@ -504,6 +511,11 @@ build_libxml2()
|
||||||
{
|
{
|
||||||
version="$1"
|
version="$1"
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libxml2.dylib ]; then
|
||||||
|
echo "libxml2 already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building libxml2 $version..."
|
echo "Building libxml2 $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "libxml2-$version"
|
rm -rf "libxml2-$version"
|
||||||
|
@ -521,6 +533,11 @@ build_fontconfig()
|
||||||
{
|
{
|
||||||
version=$1
|
version=$1
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libfontconfig.dylib ]; then
|
||||||
|
echo "fontconfig already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building fontconfig $version..."
|
echo "Building fontconfig $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "fontconfig-$version"
|
rm -rf "fontconfig-$version"
|
||||||
|
@ -540,6 +557,11 @@ build_libffi()
|
||||||
{
|
{
|
||||||
version="$1"
|
version="$1"
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libffi.dylib ]; then
|
||||||
|
echo "libffi already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building libffi $version..."
|
echo "Building libffi $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "libffi-$version"
|
rm -rf "libffi-$version"
|
||||||
|
@ -557,6 +579,11 @@ build_gettext()
|
||||||
{
|
{
|
||||||
version="$1"
|
version="$1"
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libgettextlib.dylib ]; then
|
||||||
|
echo "gettext already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building gettext $version..."
|
echo "Building gettext $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "gettext-$version"
|
rm -rf "gettext-$version"
|
||||||
|
@ -575,6 +602,11 @@ build_glib2()
|
||||||
{
|
{
|
||||||
version="$1"
|
version="$1"
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libglib-2.0.dylib ]; then
|
||||||
|
echo "glib2 already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building glib2 $version..."
|
echo "Building glib2 $version..."
|
||||||
|
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
|
@ -597,6 +629,11 @@ build_ragel()
|
||||||
{
|
{
|
||||||
version=$1
|
version=$1
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/bin/ragel ]; then
|
||||||
|
echo "ragel already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building ragel $version..."
|
echo "Building ragel $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "ragel-$version"
|
rm -rf "ragel-$version"
|
||||||
|
@ -616,6 +653,11 @@ build_harfbuzz()
|
||||||
version=$1
|
version=$1
|
||||||
extra_config_flags="$2"
|
extra_config_flags="$2"
|
||||||
|
|
||||||
|
if [ -f $DEPLOYDIR/lib/libharfbuzz.dylib ]; then
|
||||||
|
echo "harfbuzz already installed. not building"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Building harfbuzz $version..."
|
echo "Building harfbuzz $version..."
|
||||||
cd "$BASEDIR"/src
|
cd "$BASEDIR"/src
|
||||||
rm -rf "harfbuzz-$version"
|
rm -rf "harfbuzz-$version"
|
||||||
|
@ -693,6 +735,7 @@ echo "Building for $MAC_OSX_VERSION_MIN or later"
|
||||||
|
|
||||||
if [ ! $NUMCPU ]; then
|
if [ ! $NUMCPU ]; then
|
||||||
NUMCPU=$(sysctl -n hw.ncpu)
|
NUMCPU=$(sysctl -n hw.ncpu)
|
||||||
|
echo "Setting number of CPUs to $NUMCPU"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if $OPTION_DEPLOY; then
|
if $OPTION_DEPLOY; then
|
||||||
|
@ -710,9 +753,9 @@ fi
|
||||||
|
|
||||||
echo "Using basedir:" $BASEDIR
|
echo "Using basedir:" $BASEDIR
|
||||||
mkdir -p $SRCDIR $DEPLOYDIR
|
mkdir -p $SRCDIR $DEPLOYDIR
|
||||||
build_qt5 5.3.0
|
build_qt5 5.3.1
|
||||||
# NB! For eigen, also update the path in the function
|
# 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_gmp 5.1.3
|
||||||
build_mpfr 3.1.2
|
build_mpfr 3.1.2
|
||||||
build_boost 1.54.0
|
build_boost 1.54.0
|
||||||
|
@ -724,14 +767,12 @@ build_libffi 3.1
|
||||||
build_glib2 2.40.0
|
build_glib2 2.40.0
|
||||||
build_opencsg 1.3.2
|
build_opencsg 1.3.2
|
||||||
build_freetype 2.5.3 --without-png
|
build_freetype 2.5.3 --without-png
|
||||||
|
build_ragel 6.8
|
||||||
build_harfbuzz 0.9.28 "--with-coretext=auto --with-glib=no"
|
build_harfbuzz 0.9.28 "--with-coretext=auto --with-glib=no"
|
||||||
export FREETYPE_CFLAGS="-I$DEPLOYDIR/include -I$DEPLOYDIR/include/freetype2"
|
export FREETYPE_CFLAGS="-I$DEPLOYDIR/include -I$DEPLOYDIR/include/freetype2"
|
||||||
export FREETYPE_LIBS="-L$DEPLOYDIR/lib -lfreetype"
|
export FREETYPE_LIBS="-L$DEPLOYDIR/lib -lfreetype"
|
||||||
build_libxml2 2.9.1
|
build_libxml2 2.9.1
|
||||||
build_fontconfig 2.11.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
|
if $OPTION_DEPLOY; then
|
||||||
# build_sparkle andymatuschak 0ed83cf9f2eeb425d4fdd141c01a29d843970c20
|
# build_sparkle andymatuschak 0ed83cf9f2eeb425d4fdd141c01a29d843970c20
|
||||||
build_sparkle Cocoanetics 1e7dcb1a48b96d1a8c62100b5864bd50211cbae1
|
build_sparkle Cocoanetics 1e7dcb1a48b96d1a8c62100b5864bd50211cbae1
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <QClipboard>
|
||||||
#include <QSortFilterProxyModel>
|
#include <QSortFilterProxyModel>
|
||||||
|
|
||||||
#include "FontListDialog.h"
|
#include "FontListDialog.h"
|
||||||
|
@ -41,9 +42,12 @@ FontListDialog::~FontListDialog()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void FontListDialog::on_pasteButton_clicked()
|
void FontListDialog::on_copyButton_clicked()
|
||||||
{
|
{
|
||||||
font_selected(selection);
|
font_selected(selection);
|
||||||
|
|
||||||
|
QClipboard *clipboard = QApplication::clipboard();
|
||||||
|
clipboard->setText(selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FontListDialog::on_filterLineEdit_textChanged(const QString &text)
|
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 &)
|
void FontListDialog::selection_changed(const QItemSelection ¤t, const QItemSelection &)
|
||||||
{
|
{
|
||||||
if (current.count() == 0) {
|
if (current.count() == 0) {
|
||||||
pasteButton->setEnabled(false);
|
copyButton->setEnabled(false);
|
||||||
return;
|
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 name = model->item(idx.row(), 0)->text();
|
||||||
const QString style = model->item(idx.row(), 1)->text();
|
const QString style = model->item(idx.row(), 1)->text();
|
||||||
selection = QString("\"%1:style=%2\"").arg(name).arg(style);
|
selection = QString("\"%1:style=%2\"").arg(name).arg(style);
|
||||||
pasteButton->setEnabled(true);
|
copyButton->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FontListDialog::update_font_list()
|
void FontListDialog::update_font_list()
|
||||||
{
|
{
|
||||||
pasteButton->setEnabled(false);
|
copyButton->setEnabled(false);
|
||||||
|
|
||||||
if (proxy) {
|
if (proxy) {
|
||||||
delete proxy;
|
delete proxy;
|
||||||
|
|
|
@ -18,7 +18,7 @@ public:
|
||||||
void update_font_list();
|
void update_font_list();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void on_pasteButton_clicked();
|
void on_copyButton_clicked();
|
||||||
void on_filterLineEdit_textChanged(const QString &);
|
void on_filterLineEdit_textChanged(const QString &);
|
||||||
void selection_changed(const QItemSelection &, const QItemSelection &);
|
void selection_changed(const QItemSelection &, const QItemSelection &);
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,12 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="3">
|
<item row="4" column="3">
|
||||||
<widget class="QPushButton" name="pasteButton">
|
<widget class="QPushButton" name="copyButton">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Paste font selector to Editor Window</string>
|
<string>Paste font selector to Editor Window</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Paste</string>
|
<string>Copy to Clipboard</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -126,7 +126,7 @@ std::vector<const Geometry *> FreetypeRenderer::render(const FreetypeRenderer::P
|
||||||
{
|
{
|
||||||
FT_Face face;
|
FT_Face face;
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
DrawingCallback callback(params.fn);
|
DrawingCallback callback(params.segments);
|
||||||
|
|
||||||
FontCache *cache = FontCache::instance();
|
FontCache *cache = FontCache::instance();
|
||||||
if (!cache->is_init_ok()) {
|
if (!cache->is_init_ok()) {
|
||||||
|
|
|
@ -47,6 +47,15 @@ public:
|
||||||
void set_fn(double fn) {
|
void set_fn(double fn) {
|
||||||
this->fn = 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) {
|
void set_text(std::string text) {
|
||||||
this->text = text;
|
this->text = text;
|
||||||
}
|
}
|
||||||
|
@ -79,10 +88,12 @@ public:
|
||||||
<< "\", script = \"" << params.script
|
<< "\", script = \"" << params.script
|
||||||
<< "\", halign = \"" << params.halign
|
<< "\", halign = \"" << params.halign
|
||||||
<< "\", valign = \"" << params.valign
|
<< "\", valign = \"" << params.valign
|
||||||
<< "\", $fn = " << params.fn;
|
<< "\", $fn = " << params.fn
|
||||||
|
<< ", $fa = " << params.fa
|
||||||
|
<< ", $fs = " << params.fs;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
double size, spacing, fn;
|
double size, spacing, fn, fa, fs, segments;
|
||||||
std::string text, font, direction, language, script, halign, valign;
|
std::string text, font, direction, language, script, halign, valign;
|
||||||
|
|
||||||
friend class FreetypeRenderer;
|
friend class FreetypeRenderer;
|
||||||
|
|
|
@ -137,7 +137,6 @@ private slots:
|
||||||
void compileEnded();
|
void compileEnded();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void pasteText(const QString text);
|
|
||||||
void pasteViewportTranslation();
|
void pasteViewportTranslation();
|
||||||
void pasteViewportRotation();
|
void pasteViewportRotation();
|
||||||
void hideEditor();
|
void hideEditor();
|
||||||
|
|
|
@ -1316,12 +1316,6 @@ void MainWindow::pasteViewportTranslation()
|
||||||
cursor.insertText(txt);
|
cursor.insertText(txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::pasteText(const QString text)
|
|
||||||
{
|
|
||||||
QTextCursor cursor = editor->textCursor();
|
|
||||||
cursor.insertText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::pasteViewportRotation()
|
void MainWindow::pasteViewportRotation()
|
||||||
{
|
{
|
||||||
QTextCursor cursor = editor->textCursor();
|
QTextCursor cursor = editor->textCursor();
|
||||||
|
@ -2366,7 +2360,6 @@ void MainWindow::helpFontInfo()
|
||||||
{
|
{
|
||||||
if (!this->font_list_dialog) {
|
if (!this->font_list_dialog) {
|
||||||
FontListDialog *dialog = new FontListDialog();
|
FontListDialog *dialog = new FontListDialog();
|
||||||
connect(dialog, SIGNAL(font_selected(QString)), this, SLOT(pasteText(QString)));
|
|
||||||
this->font_list_dialog = dialog;
|
this->font_list_dialog = dialog;
|
||||||
}
|
}
|
||||||
this->font_list_dialog->update_font_list();
|
this->font_list_dialog->update_font_list();
|
||||||
|
|
|
@ -77,10 +77,11 @@ fs::path find_valid_path(const fs::path &sourcepath,
|
||||||
const std::vector<std::string> *openfilenames)
|
const std::vector<std::string> *openfilenames)
|
||||||
{
|
{
|
||||||
if (boosty::is_absolute(localpath)) {
|
if (boosty::is_absolute(localpath)) {
|
||||||
if (check_valid(localpath, openfilenames)) return boosty::absolute(localpath);
|
if (check_valid(localpath, openfilenames)) return boosty::canonical(localpath);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fs::path fpath = sourcepath / localpath;
|
fs::path fpath = sourcepath / localpath;
|
||||||
|
if (fs::exists(fpath)) fpath = boosty::canonical(fpath);
|
||||||
if (check_valid(fpath, openfilenames)) return fpath;
|
if (check_valid(fpath, openfilenames)) return fpath;
|
||||||
fpath = search_libs(localpath);
|
fpath = search_libs(localpath);
|
||||||
if (!fpath.empty() && check_valid(fpath, openfilenames)) return fpath;
|
if (!fpath.empty() && check_valid(fpath, openfilenames)) return fpath;
|
||||||
|
|
11
src/text.cc
11
src/text.cc
|
@ -55,8 +55,12 @@ AbstractNode *TextModule::instantiate(const Context *ctx, const ModuleInstantiat
|
||||||
c.setVariables(args, evalctx);
|
c.setVariables(args, evalctx);
|
||||||
|
|
||||||
double fn = c.lookup_variable("$fn").toDouble();
|
double fn = c.lookup_variable("$fn").toDouble();
|
||||||
double fs = c.lookup_variable("$fs").toDouble();
|
|
||||||
double fa = c.lookup_variable("$fa").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);
|
double size = lookup_double_variable_with_default(c, "size", 10.0);
|
||||||
int segments = Calc::get_fragments_from_r(size, fn, fs, fa);
|
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
|
// by using a fraction of the number of full circle segments
|
||||||
// the resolution will be better matching the detail level of
|
// the resolution will be better matching the detail level of
|
||||||
// other objects.
|
// 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_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_text(lookup_string_variable_with_default(c, "text", ""));
|
||||||
node->params.set_spacing(lookup_double_variable_with_default(c, "spacing", 1.0));
|
node->params.set_spacing(lookup_double_variable_with_default(c, "spacing", 1.0));
|
||||||
node->params.set_font(lookup_string_variable_with_default(c, "font", ""));
|
node->params.set_font(lookup_string_variable_with_default(c, "font", ""));
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
include <include-recursive-test.scad>
|
||||||
|
include <../misc/include-recursive-test.scad>
|
||||||
|
include <../../scad/misc/include-recursive-test.scad>
|
||||||
|
|
||||||
|
echo("INC");
|
|
@ -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/utf8-tests.scad
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/concat-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-tests.scad
|
||||||
|
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-recursive-test.scad
|
||||||
${CMAKE_SOURCE_DIR}/../testdata/scad/bugs/empty-stl.scad)
|
${CMAKE_SOURCE_DIR}/../testdata/scad/bugs/empty-stl.scad)
|
||||||
|
|
||||||
list(APPEND DUMPTEST_FILES ${FEATURES_FILES})
|
list(APPEND DUMPTEST_FILES ${FEATURES_FILES})
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
group() {
|
group() {
|
||||||
|
group();
|
||||||
multmatrix([[1, 0, 0, 110], [0, 1, 0, 0], [0, 0, 1, 80], [0, 0, 0, 1]]) {
|
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([[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]]) {
|
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]]) {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
group() {
|
group() {
|
||||||
|
group();
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
color([0.501961, 0.501961, 0.501961, 1]) {
|
color([0.501961, 0.501961, 0.501961, 1]) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 10], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -16,7 +16,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 10], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -25,7 +25,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 10], [0, 1, 0, 100], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -34,7 +34,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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() {
|
group() {
|
||||||
|
@ -45,7 +45,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 249.2], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -54,7 +54,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 316.1], [0, 1, 0, 70], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -63,7 +63,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
group() {
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 90], [0, 1, 0, 60], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -16,7 +16,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 10], [0, 1, 0, 160], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -25,7 +25,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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]]) {
|
multmatrix([[1, 0, 0, 60], [0, 1, 0, 140], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||||
color([1, 0, 0, 1]) {
|
color([1, 0, 0, 1]) {
|
||||||
|
@ -34,7 +34,7 @@ group() {
|
||||||
color([0, 0, 1, 1]) {
|
color([0, 0, 1, 1]) {
|
||||||
square(size = [0.5, 20], center = false);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
group() {
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,35 +2,35 @@ group() {
|
||||||
group() {
|
group() {
|
||||||
group() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, -180], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
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]]) {
|
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]]) {
|
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() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
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]]) {
|
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]]) {
|
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() {
|
group() {
|
||||||
multmatrix([[1, 0, 0, 180], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
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]]) {
|
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]]) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
group() {
|
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([[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]]) {
|
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]]) {
|
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]]) {
|
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]]) {
|
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]]) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
Loading…
Reference in New Issue