Re: [Inkscape-devel] cut/crop marks extensions
by Guillermo Espertino
El mié, 26-11-2008 a las 10:10 +0000,
inkscape-devel-request(a)lists.sourceforge.net escribió:
> I'm not convinced by the V shape. It really looks too exotic to me.
> But what about a multi-colored circle (your left drawing) and a cross
> below it (svg attached)?
>
> --
> Nicolas
Hi!
Thaks for your work in this useful extension.
I'd like to know if you considered applying the marks to a selection
(using the bbox rectangle as limit) as an option.
Applying the marks to the artwork area is fine, but in certain
situations you need to use the paper area as a container for several
originals (for instance, placing front and rear of a brochure in a same
document).
Of course there's an easy workaround, and it only takes to create a
document sized as one of the originals and reuse the crop marks in the
other, but crop marks to selection would be very useful anyway.
I've just read a previous comment, and the author of the "cut marks"
extension offers you to join forces and work together. Your extension
looks more polished than the other, but it already has the feature I
mention (using the selection's bbox as area for the crop marks). It
would be nice to add that to your extension.
Another interesting feature would be using guides as placeholders for
fold or die-punch marks.
About the registration marks discussion, I also find the V shapes too
exotic. Generally I only see superposed circles with crosses in C, M, Y
and K channels.
However, I don't see anything wrong with using both. The circles with
crosses on the corners, and the V shapes on the middle.
What do you think?
12 years, 5 months
bzr usage
by jf barraud
Hi all,
Trying to use bzr and launchpad, I bumped into a bunch of newbies
questions... (I'm not sure any of them makes sens!)
Should I do
bzr branch lp:inkscape
like indicated on our inkscape launchpad web page? if yes, how are
sourceforge svn rep and lp:inkscape related? lp:inkscape does not look like
being uptodate. How do I commit to svn?
(more over, this seems to break buildtool under windows, because of
svninfo... but this is another story)
Should I use bzr-svn to checkout the sourceforge svn repository? hm. It's
extremely slow. Can I still register my branches in launchpad then?
Am I missing a straight way to use my local svn tree to work with bzr?...
Anyway, some basic guide lines for newbies and ignorant people like me would
be very helpfull ;-)
Thanks. jfb.
12 years, 5 months
Re : cut/crop marks extensions
by Nicolas Dufour
Hi,
> Recently a Perl extension called "Cut marks" was added to SVN. I must
> admit I didn't have very good feelings about this, because Windows
> users who are majority of our user base or at least very close to it
> will have an extra step of installing ActivePerl to be able to use it.
> IMO, having several programming languages supported is fine as long as
> extensions work everywhere out of box. We already have functionality
> available on one platform and not available on the other and it
> probably wouldn't be wise pushing this even further.
>
> And now here comes a similar extension written in Python:
> https://bugs.launchpad.net/inkscape/+bug/301776
I'm not sure both extensions do exactly the same things.
But it may be possible to merge the codes in one extension. I'll try to have a discussion with Aurelio (cut marks' writer) in order to find a solution.
Before that, your suggestions are welcome!
--
Nicolas
12 years, 5 months
A near to generic CMYK profile
by Aurélio A. Heckert
Hi all,
I and Nicolas will join our work about printing marks, but
the printing marks need to be printed with pure CMYK
color components. And specially the register mark must
be printed with all 4 colors to test the alignment of the
separated printing.
So, the Inkscape already suport ICC profiles and soon
it will export PS and PDF with color profiles. The printing
marks will be ready for this, but to work we need a ICC
file to link in the SVG.
Someone could propose a near to generic CMYK ICC profile?
I only find ICC files about specific printers, and is writen in
some places that "is no generic CMYK profiles"(???).
I don't have knowledge to select the more generic inside
the printes profiles.
Thanks,
Aurium
--
Aurélio A. Heckert http://colivre.coop.br/Aurium
GNU/Linux User #312507 http://counter.li.org
- - - - - - - - - - - - - - - - - - - - - - - - -
Ilustração Vetorial Livre: http://InkscapeBrasil.org
Coop. de Tecnologias Livres: http://Colivre.coop.br
- - - - - - - - - - - - - - - - - - - - - - - - -
"Eu temo pela minha espécie quando penso
que Deus é justo." Thomas Jefferson
Antes de imprimir esta mensagem reflita
sobre a sua responsabilidade com a
preservação do Meio Ambiente.
12 years, 5 months
git-svn trouble / lost revisions?
by Maximilian Albert
Hi,
I recently tried to update my git-svn repository for Inkscape via
"git-svn rebase" as usual. It downloaded the latest commits but when
it seemed to be almost finished (at rev. 20147, to be exact), it threw
the following error:
==>
Found possible branch point:
https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk
=> https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk,
20227
Initializing parent: git-svn@...2085...
W: Ignoring error from SVN, path probably does not exist: (175007):
HTTP Path Not Found: REPORT request failed on
'/svnroot/inkscape/!svn/bc/4302/inkscape/trunk':
'/svnroot/inkscape/!svn/bc/4302/inkscape/trunk' path not found
W: Do not be alarmed at the above message git-svn is just searching
aggressively for old history.
This may take a while on large repositories
<==
Then it started to download _all_ revisions beginning from rev. #1
(dated Oct 2003)!! It looks like git-svn got confused by some
branching or so. Has somebody else who uses git-svn experienced this?
Another strange thing: I downloaded a fresh checkout using svn only
(not git-svn), and the revision numbers in the log jump from #19921
directly to #20226, although clearly there were other commits in
between. The log entry for #20226 says something about merging a
branch. Could it be that accidentally some revisions got lost in the
process and that this is also what confuses git-svn? How can it be
fixed?
Thanks,
Max
12 years, 5 months
Multithreaded blur using OpenMP
by Jasper van de Gronde
Using GCC's support of OpenMP (now also in MingW!) I had a stab at
making the outer loop of blurring parallel (the loops are typical DSP
loops and shouldn't even throw an exception, so it should be perfectly
safe). On my dual-core system blurring (a large image) is approximately
twice as fast, so it seems to scale really well.
As I don't have access to a Linux system at the moment I haven't
modified the Makefiles to add support, but it shouldn't be too difficult
(see the changes to build.xml). Also, I've made it write a log to be
able to analyze the performance, but it uses Win32 specific functions
for timing. So, if anyone would like to have a go at making it work on
Linux and/or testing it that would be great :)
The number of threads defaults to whatever omp_get_num_procs() returns,
but on my system this doesn't work... So to use it, set the number of
threads in the preferences, using:
<group id="threading"
numthreads="1" />
in the "options" group (so it's /options/threading/numthreads).
Obviously this is not the most efficient way to do this, as new threads
are created for each blur. But so far the overhead doesn't appear to be
too bad, compared with the actual blurring operation. And using OpenMP
the impact on the code is minimal, I only had to put two #pragma's
before the blur loops, allocate the temporary data it needs for all
threads and add some preference for the number of threads. So if this
works out it might provide a relatively easy way to start making use of
all these dual- and quad-core machines people have lying around doing
almost nothing these days :)
Patch attached, if wanted I can also provide a binary for Windows. This
version writes a log file (blurlog.txt) that lists how long each blur takes.
Note that inkscape also needs mingwm10.dll to run with this patch. As it
isn't included with devlibs at the moment you'll have to copy it to
Inkscape's directory manually (it's in the MingW bin directory).
Index: build.xml
===================================================================
--- build.xml (revision 20219)
+++ build.xml (working copy)
@@ -375,6 +375,7 @@
-Wall -Wformat -Werror=format-security -W -Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch
-O2
-mms-bitfields
+ -fopenmp
</flags>
<defines>
-DVERSION=\"${version}\"
@@ -476,6 +477,7 @@
objcopycommand="${archutil}objcopy">
<flags>
-mwindows
+ -mthreads
</flags>
<fileset dir="${build}">
<include name="inkres.o"/>
@@ -501,6 +503,7 @@
-lpng -ljpeg.dll -ltiff.dll -lpopt ${devlibs}/lib/zdll.lib
-lgc
-lws2_32 -lintl -lgdi32 -lcomdlg32 -lm
+ -lgomp -lpthreadGC2
</libs>
</link>
</target>
@@ -530,6 +533,7 @@
objcopycommand="${archutil}objcopy">
<flags>
-mwindows
+ -mthreads
</flags>
<fileset dir="${build}">
<include name="inkviewres.o"/>
@@ -553,6 +557,7 @@
-lpng -ljpeg.dll -ltiff.dll -lpopt ${devlibs}/lib/zdll.lib
-lgc
-lws2_32 -lintl -lgdi32 -lcomdlg32 -lm
+ -lgomp -lpthreadGC2
</libs>
</link>
</target>
@@ -572,6 +577,7 @@
stripcommand="${archutil}strip"
objcopycommand="${archutil}objcopy">
<flags>
+ -mthreads
</flags>
<fileset dir="${build}">
<include name="obj/test-main.o"/>
@@ -602,6 +608,7 @@
-lpng -ljpeg.dll -ltiff.dll -lpopt ${devlibs}/lib/zdll.lib
-lgc
-lws2_32 -lintl -lgdi32 -lcomdlg32 -lm
+ -lgomp -lpthreadGC2
</libs>
</link>
</target>
@@ -667,6 +674,7 @@
<copy todir="${dist}" file="${devlibs}/bin/libpopt-0.dll"/>
<copy todir="${dist}" file="${devlibs}/bin/liblcms-1.dll"/>
<copy todir="${dist}" file="${devlibs}/bin/intl.dll"/>
+ <copy todir="${dist}" file="${devlibs}/bin/pthreadGC2.dll"/>
<copy file="${devlibs}/bin/intl.dll" tofile="${dist}/libintl-2.dll"/>
<!-- MSGFMT files -->
Index: src/display/nr-filter-gaussian.cpp
===================================================================
--- src/display/nr-filter-gaussian.cpp (revision 20219)
+++ src/display/nr-filter-gaussian.cpp (working copy)
@@ -16,9 +16,11 @@
#include <algorithm>
#include <cmath>
#include <complex>
+#include <cstdlib>
#include <glib.h>
-#include <cstdlib>
#include <limits>
+#include <omp.h>
+#include <windows.h> // For performance logging
#include "2geom/isnan.h"
@@ -268,9 +270,11 @@
filter2D_IIR(PT *const dest, int const dstr1, int const dstr2,
PT const *const src, int const sstr1, int const sstr2,
int const n1, int const n2, IIRValue const b[N+1], double const M[N*N],
- IIRValue *const tmpdata)
+ IIRValue *const tmpdata[], int const num_threads)
{
+#pragma omp parallel for num_threads(num_threads)
for ( int c2 = 0 ; c2 < n2 ; c2++ ) {
+ unsigned int tid = omp_get_thread_num();
// corresponding line in the source and output buffer
PT const * srcimg = src + c2*sstr2;
PT * dstimg = dest + c2*dstr2 + n1*dstr1;
@@ -288,7 +292,7 @@
for(unsigned int i=1; i<N+1; i++) {
for(unsigned int c=0; c<PC; c++) u[0][c] += u[i][c]*b[i];
}
- copy_n(u[0], PC, tmpdata+c1*PC);
+ copy_n(u[0], PC, tmpdata[tid]+c1*PC);
}
// Backward pass
IIRValue v[N+1][PC];
@@ -303,7 +307,7 @@
int c1=n1-1;
while(c1-->0) {
for(unsigned int i=N; i>0; i--) copy_n(v[i-1], PC, v[i]);
- copy_n(tmpdata+c1*PC, PC, v[0]);
+ copy_n(tmpdata[tid]+c1*PC, PC, v[0]);
for(unsigned int c=0; c<PC; c++) v[0][c] *= b[0];
for(unsigned int i=1; i<N+1; i++) {
for(unsigned int c=0; c<PC; c++) v[0][c] += v[i][c]*b[i];
@@ -326,11 +330,12 @@
static void
filter2D_FIR(PT *const dst, int const dstr1, int const dstr2,
PT const *const src, int const sstr1, int const sstr2,
- int const n1, int const n2, FIRValue const *const kernel, int const scr_len)
+ int const n1, int const n2, FIRValue const *const kernel, int const scr_len, int const num_threads)
{
// Past pixels seen (to enable in-place operation)
PT history[scr_len+1][PC];
+#pragma omp parallel for num_threads(num_threads) private(history)
for ( int c2 = 0 ; c2 < n2 ; c2++ ) {
// corresponding line in the source buffer
@@ -539,13 +544,14 @@
}
// Some common constants
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
int const width_org = in->area.x1-in->area.x0, height_org = in->area.y1-in->area.y0;
double const deviation_x_org = _deviation_x * NR::expansionX(trans);
double const deviation_y_org = _deviation_y * NR::expansionY(trans);
int const PC = NR_PIXBLOCK_BPP(in);
+ int const NTHREADS = std::max(1,std::min(8,prefs->getInt("/options/threading/numthreads",omp_get_num_procs())));
// Subsampling constants
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
int const quality = prefs->getInt("/options/blurquality/value");
int const x_step_l2 = _effect_subsample_step_log2(deviation_x_org, quality);
int const y_step_l2 = _effect_subsample_step_log2(deviation_y_org, quality);
@@ -567,6 +573,11 @@
bool const use_IIR_x = deviation_x > 3;
bool const use_IIR_y = deviation_y > 3;
+ // Temporary performance logging
+ LARGE_INTEGER startTime, endTime, timeFrequency;
+ QueryPerformanceFrequency(&timeFrequency);
+ QueryPerformanceCounter(&startTime);
+
// new buffer for the subsampled output
NRPixBlock *out = new NRPixBlock;
nr_pixblock_setup_fast(out, in->mode, in->area.x0/x_step, in->area.y0/y_step,
@@ -577,13 +588,19 @@
}
// Temporary storage for IIR filter
// NOTE: This can be eliminated, but it reduces the precision a bit
- IIRValue * tmpdata = 0;
+ IIRValue * tmpdata[NTHREADS];
+ std::fill_n(tmpdata, NTHREADS, (IIRValue*)0);
if ( use_IIR_x || use_IIR_y ) {
- tmpdata = new IIRValue[std::max(width,height)*PC];
- if (tmpdata == NULL) {
- nr_pixblock_release(out);
- delete out;
- return 0;
+ for(int i=0; i<NTHREADS; i++) {
+ tmpdata[i] = new IIRValue[std::max(width,height)*PC];
+ if (tmpdata[i] == NULL) {
+ nr_pixblock_release(out);
+ while(i-->0) {
+ delete[] tmpdata[i];
+ }
+ delete out;
+ return 0;
+ }
}
}
NRPixBlock *ssin = in;
@@ -629,16 +646,16 @@
// Filter (x)
switch(in->mode) {
case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_IIR<unsigned char,1,false>(NR_PIXBLOCK_PX(out), 1, out->rs, NR_PIXBLOCK_PX(ssin), 1, ssin->rs, width, height, b, M, tmpdata);
+ filter2D_IIR<unsigned char,1,false>(NR_PIXBLOCK_PX(out), 1, out->rs, NR_PIXBLOCK_PX(ssin), 1, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_IIR<unsigned char,3,false>(NR_PIXBLOCK_PX(out), 3, out->rs, NR_PIXBLOCK_PX(ssin), 3, ssin->rs, width, height, b, M, tmpdata);
+ filter2D_IIR<unsigned char,3,false>(NR_PIXBLOCK_PX(out), 3, out->rs, NR_PIXBLOCK_PX(ssin), 3, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- filter2D_IIR<unsigned char,4,false>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, b, M, tmpdata);
+ filter2D_IIR<unsigned char,4,false>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_IIR<unsigned char,4,true >(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, b, M, tmpdata);
+ filter2D_IIR<unsigned char,4,true >(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
break;
default:
assert(false);
@@ -651,16 +668,16 @@
// Filter (x)
switch(in->mode) {
case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_FIR<unsigned char,1>(NR_PIXBLOCK_PX(out), 1, out->rs, NR_PIXBLOCK_PX(ssin), 1, ssin->rs, width, height, kernel, scr_len_x);
+ filter2D_FIR<unsigned char,1>(NR_PIXBLOCK_PX(out), 1, out->rs, NR_PIXBLOCK_PX(ssin), 1, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_FIR<unsigned char,3>(NR_PIXBLOCK_PX(out), 3, out->rs, NR_PIXBLOCK_PX(ssin), 3, ssin->rs, width, height, kernel, scr_len_x);
+ filter2D_FIR<unsigned char,3>(NR_PIXBLOCK_PX(out), 3, out->rs, NR_PIXBLOCK_PX(ssin), 3, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, kernel, scr_len_x);
+ filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, kernel, scr_len_x);
+ filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
break;
default:
assert(false);
@@ -688,16 +705,16 @@
// Filter (y)
switch(in->mode) {
case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_IIR<unsigned char,1,false>(NR_PIXBLOCK_PX(out), out->rs, 1, NR_PIXBLOCK_PX(out), out->rs, 1, height, width, b, M, tmpdata);
+ filter2D_IIR<unsigned char,1,false>(NR_PIXBLOCK_PX(out), out->rs, 1, NR_PIXBLOCK_PX(out), out->rs, 1, height, width, b, M, tmpdata, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_IIR<unsigned char,3,false>(NR_PIXBLOCK_PX(out), out->rs, 3, NR_PIXBLOCK_PX(out), out->rs, 3, height, width, b, M, tmpdata);
+ filter2D_IIR<unsigned char,3,false>(NR_PIXBLOCK_PX(out), out->rs, 3, NR_PIXBLOCK_PX(out), out->rs, 3, height, width, b, M, tmpdata, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- filter2D_IIR<unsigned char,4,false>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, b, M, tmpdata);
+ filter2D_IIR<unsigned char,4,false>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, b, M, tmpdata, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_IIR<unsigned char,4,true >(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, b, M, tmpdata);
+ filter2D_IIR<unsigned char,4,true >(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, b, M, tmpdata, NTHREADS);
break;
default:
assert(false);
@@ -710,24 +727,32 @@
// Filter (y)
switch(in->mode) {
case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_FIR<unsigned char,1>(NR_PIXBLOCK_PX(out), out->rs, 1, NR_PIXBLOCK_PX(out), out->rs, 1, height, width, kernel, scr_len_y);
+ filter2D_FIR<unsigned char,1>(NR_PIXBLOCK_PX(out), out->rs, 1, NR_PIXBLOCK_PX(out), out->rs, 1, height, width, kernel, scr_len_y, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_FIR<unsigned char,3>(NR_PIXBLOCK_PX(out), out->rs, 3, NR_PIXBLOCK_PX(out), out->rs, 3, height, width, kernel, scr_len_y);
+ filter2D_FIR<unsigned char,3>(NR_PIXBLOCK_PX(out), out->rs, 3, NR_PIXBLOCK_PX(out), out->rs, 3, height, width, kernel, scr_len_y, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, kernel, scr_len_y);
+ filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, kernel, scr_len_y, NTHREADS);
break;
case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, kernel, scr_len_y);
+ filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, kernel, scr_len_y, NTHREADS);
break;
default:
assert(false);
};
}
- delete[] tmpdata; // deleting a nullptr has no effect, so this is save
+ for(int i=0; i<NTHREADS; i++) {
+ delete[] tmpdata[i]; // deleting a nullptr has no effect, so this is safe
+ }
+ // Temporary performance logging
+ QueryPerformanceCounter(&endTime);
+ FILE* logfile = fopen("blurlog.txt", "at");
+ fprintf(logfile, "image size: %dx%d, threads: %d, time: %.3gs\n", width, height, NTHREADS, static_cast<double>(endTime.QuadPart-startTime.QuadPart)/timeFrequency.QuadPart);
+ fclose(logfile);
+
if ( !resampling ) {
// No upsampling needed
out->empty = FALSE;
12 years, 5 months
Re: [Inkscape-devel] build error
by Alexandre Prokoudine
2008/11/25 Ted Gould <ted@...11...>:
>> $ ls -al filters/.deps/.dirstamp
>> ls: cannot access filters/.deps/.dirstamp: No such file or directory
>
> Hmm, that's odd. But the file is really only there to mark when the
> directory was last read. It would seem that:
>
> touch filters/.deps/.dirstamp
>
> Would fix the problem, but I have no idea why it happened.
$ touch src/filters/.deps/.dirstamp
touch: cannot touch `src/filters/.deps/.dirstamp': Permission denied
$ ls -lh src/filters/.deps/
total 80K
-rw-r--r-- 1 root root 8 Nov 25 16:36 blend.Po
etc.
All files have root access permission. I'm quite puzzled. These are
really two different machines with two different checkouts, and the
last successful build was surely after November 8, just like the one
for the laptop at home.
Alexandre
12 years, 5 months
build error
by Alexandre Prokoudine
Hi,
I'm seing this error on two different systems:
rm -f extension/script/libscript.a
ar cru extension/script/libscript.a extension/script/InkscapeScript.o
ranlib extension/script/libscript.a
/bin/sh: filters/.deps/.dirstamp: Access denied
Anyone? :-)
Alexandre
12 years, 5 months
cut/crop marks extensions
by Alexandre Prokoudine
Hi,
Recently a Perl extension called "Cut marks" was added to SVN. I must
admit I didn't have very good feelings about this, because Windows
users who are majority of our user base or at least very close to it
will have an extra step of installing ActivePerl to be able to use it.
IMO, having several programming languages supported is fine as long as
extensions work everywhere out of box. We already have functionality
available on one platform and not available on the other and it
probably wouldn't be wise pushing this even further.
And now here comes a similar extension written in Python:
https://bugs.launchpad.net/inkscape/+bug/301776
So what do we do?
Alexandre
12 years, 5 months
lpe-hatches
by jf barraud
Hi all,
I've just added a new lpe to fill a shape with rough hatches.
It's still at an experimental state.
As usual, I'm in trouble with the parameters. They are purely
technical atm, i.e. they are the onesI used in the code to control the
shape of the hatches.
But what is technical-oriented is generally not user friendly (in
particular, I was not able to supply tips for some of them).
Please try it, and suggest user firendly parameters (from which the
technical ones would be deduced).
Ah, and yes, bending needs improvement, and growth has no effect atm...
Anyway, I hope you'll like it ;-)
jf.
12 years, 5 months