IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2012/05/10)2012/05/11 
Chalu Can ghostscript convert html to ps?06:07.35 
saper I don't think so06:09.44 
  but most of the browsers can06:09.55 
cryptopsy where is the pdf file format described?09:03.16 
kens In the PDF Reference Manual and the ISO 32000 document09:03.33 
cryptopsy tnx09:04.12 
Robin_Watts Does anyone have the PDF-X4 or PDF-X5 standards (ISO 15930-7 and 15930-8) ?09:28.34 
kens Nope...09:28.43 
chrisl Robin_Watts: do we need the X4 and/or X5 specs, given that they're both PDF subsets, and we're looking at consuming, not producing PDF-VT?09:51.20 
Robin_Watts chrisl: Possibly not, but the PDF/VT spec says that they "are indispensible for the application of this document".09:52.32 
kens Possibly for constructing a PDF/VT file09:52.54 
  But not for consumption I would have thought09:53.09 
Robin_Watts Quite possibly. Was just asking. And now I need to reboot my machine for Windows Update. Going to fit a firewire card while it's down, so I'll be back in a bit.09:53.45 
  So, why does my Firewire card have "Highspeed USB certfied" logos on it?10:07.37 
kens Its a USB as well ?10:07.47 
Robin_Watts nope.10:07.55 
kens Its a bug :-)10:08.14 
chrisl I'd guess it "pretends" to be a USB card so it doesn't need extra drivers?10:17.22 
saper Robin_Watts: do you know what kind of FWOHCI chip is there? It might be some chip that has USB EHCI as well onboard10:20.49 
Robin_Watts saper: I don't have a clue. It's a cheap dynamode card with a VIA chip.10:23.57 
chrisl kens: ping10:46.45 
kens pong10:46.51 
tor8 Robin_Watts: take a look at tor/master see if you barf on my splitting the pdf_open_document [_no_run] function to avoid linking in resources in the mubusy tool10:46.59 
chrisl kens: Have you got a second?10:47.06 
kens Yes, good timing, I was just looking at outlines :-(10:47.18 
chrisl Ugh! Could you open zfapi.c and look at the code around line 2453, please?10:47.53 
kens Oh, continuation :-(10:48.28 
  Well it 'sort of' looks OK10:49.15 
chrisl I'm trying to fathom why that code is there10:49.37 
kens It seems to be returning to PostScript in order to run the BuildChar10:50.05 
  Presumably its a PostScript type 3 ?10:50.15 
  Oh, no, its a type 4210:50.32 
chrisl FAPI doesn't handle type 3 fonts10:50.36 
kens Could we have added a BuildChar to the font somewhere else ? That sounds vaguely familiar10:51.13 
  Something to do with the opernd being a name not an integer10:51.29 
chrisl I didn't you were allowed to replace a BuildChar after a font is defined10:52.35 
kens I'm not sure its 'after' the font is defined. It may be part of our code for handling TrueType fonts directly.10:53.04 
  Is this an actual problem somewhere ?10:53.20 
chrisl Well, we can't get to FAPI_do_char() without the font being defined10:53.34 
  It hasn't caused a problem, no, but obviously it uses the PS interpreter specific stuff, and I'm trying to eliminate as much of that as possible10:54.14 
kens Yes but what I mean is that converting a TT to a type 42 (perhaps as a replacement font) may add a BuildChar to convert the glyph name into a glyph index. I'm not certain about that mind you10:54.18 
  chrisl I don't think that will actually ever get exercised by a non-PS interpreter10:54.37 
  If I'm right about the conditions10:54.50 
  And relying on my memory is not a good idea....10:55.01 
chrisl sorry, doorbell.....10:55.52 
kens NP10:55.58 
chrisl Yeh, I'm just trying to fathom whether I need to keep that stuff, and move it into the interp specific code, or I can just drop it - it doesn't seem to get called running on the cluster10:56.35 
kens If I'm right about it being for TT fonts from disk, then it won't :-)10:57.03 
  I suspect it should be in the PS/PDF interpreter-specific code. Probably PS-specific really to be precise.10:57.59 
chrisl But this is in the Type42 section, not the TTF section - and if we do put a BuildChar in the dictionary, it will have been replace by FAPIBuildChar, or we'd never get to this bit of code!10:58.43 
kens Well its possible the code is dead of course.10:59.07 
chrisl In my branch, I've commented it out, and that case returns an invalidfont - I'll leave it that way for now, and see what happens11:00.04 
kens Seems reasonable, I hope you added a comment so you'll know what to do if anyone complains :_)11:00.32 
chrisl Yes, I have. To be honest, all that glyph decoding stuff has to be interpreter specific anyway, I'd just prefer if it didn't have to return the o_push_estack value through the graphics library11:02.15 
aleray what does "Can't set GraphicsAlphaBits > 1 with a vector device pswrite"11:35.18 
  mean?11:35.21 
  hum. I have this eps file I coded by hand. I get an error with ghostscript: http://dpaste.com/746540/11:40.22 
  do yo have any clue?11:40.27 
  ok it had to do with GraphicsAlphaBits=4 I remove it11:49.21 
kens pswrite is a vector dvice, you can't set GraphicsAlphaBits or TextAlphaBits with it.11:59.36 
aleray kens, thanks12:00.02 
kens It is also a deprecated device, don't use it. Instead use ps2write12:00.11 
aleray kens, I have troubles opening my hand coded eps files on osx tiger (well I'm on linux but asked a friend too). Could you have a look at the file and tell me if there is anything wrong wit hit?12:01.02 
  http://git.constantvzw.org/?p=osp.work.cosic.rescue.git;a=blob;f=cards/back.eps;h=ed62c053896b3187460486e0eed84946ce0f5914;hb=HEAD12:01.33 
Robin_Watts tor8: ping12:01.46 
  Looks like lots of code duplication there.12:01.53 
kens aleray : what problem do you get ? errors ?12:02.07 
Robin_Watts Can't we have pdf_open_document call pdf_open_document_no_run ?12:02.15 
kens aleray an EPS file should not execute showpage12:03.29 
  Though that's not catastrophic usually12:03.42 
tor8 Robin_Watts: yeah, I was thinking we might be able to do something to reduce the code duplication12:04.45 
aleray kens, good to know. Do yo see anything else wrong?12:04.52 
  kens, osx tiger document viewer just says it can't convert it to pdf12:05.18 
kens aleray : no, not really, but it would help to know what problems you are getting.12:05.18 
Robin_Watts pdf_open_document basically does the same as pdf_open_document_no_run but with another function (or two) overridden, right?12:05.26 
kens Hmm.12:05.29 
  aleray : have you tried it with Ghostscript ?12:05.40 
Robin_Watts Also, it could use fz_always. (but that may be a hangover from the original code)12:06.03 
  brb12:06.14 
aleray kens, yes. no problem to view the file12:06.20 
tor8 fz_always is true enough. old code :)12:07.17 
kens aleray : then it seems like its a OS/X bug really.12:07.42 
tor8 yeah, but the function weave a nasty web of calling other functions to initialise stuff.12:07.49 
aleray eps2pdf works fine too12:08.06 
  here on linux12:08.12 
chrisl aleray: One thing that springs to mind is that alendar% is an optional device, the interpreter on OS/X might not have it12:08.39 
kens and the GS pdfwrite device happily converts it to PDF as well12:08.46 
  AH, missed that.12:09.04 
  Yes, it may well not exist12:09.10 
  You should check for device existence before using it12:09.53 
aleray chrisl, so it might be caused by the calendar device ? any alternative code to circumvent this?12:10.11 
kens It looks like you are using it for a random seed, just use realtime12:10.32 
  It'll be good enough12:10.41 
chrisl The alternative would be don't use %Calendar%%12:10.59 
kens There is no guaranteed way to get date/time from a PostScript device12:11.07 
  Because if there were you would have to have a real time clock on all PostScript printers.12:11.31 
aleray kens, chrisl thanks a lot. I didn't write this part of the file. Could you help me rewrite it with realtime ?12:13.29 
chrisl aleray: something like: http://pastebin.com/SHZd8rST would probably work.....12:14.06 
kens Yes, looks reasonable tro me12:14.32 
aleray cool, although I don't really get the code12:16.25 
kens If the device is there it works as before, if not then it starts with 012:16.41 
  THen it gets realtime, and adds the numbers, and uses the result as the random number generator seed.12:16.59 
  stopped executes the code in a 'stopped' context12:17.21 
  It doesn't provoke an error, it just reigisters it12:17.34 
  Sort of like throw/catch12:17.43 
aleray nice12:17.57 
  BTW I was wondering if there was any tools/methodology to debug in postscript/eps... I found it very hard when I coded this file to spot the errors, and see the stack for instance12:18.51 
kens Its hard to debug PostScript12:19.04 
Robin_Watts chrisl: I've just had a random idea. You may hate it...12:19.04 
kens == and pstack are your friends12:19.13 
chrisl Robin_Watts: I am braced.......12:19.22 
  aleray: basically, you have to "instrument" the Postscript12:20.00 
Robin_Watts On git.ghostscript.com, if you click on the snapshot link you get a tgz of the snapshot, right?12:20.01 
chrisl Robin_Watts: yep12:20.09 
Robin_Watts Suppose I add a new link to the right of that, that goes to a password protected area of our site, that says "commercial snapshot"12:20.22 
aleray chrisl, thanks12:20.50 
Robin_Watts When you click on that you get a page of dire warnings saying that this snapshot is automatically generated and untested etc, along with a download link.12:21.00 
tor8 Robin_Watts: refetch tor/master, is that better?12:21.12 
chrisl Robin_Watts: I'd need to revise the release script as we discussed at the staff meeting to have a "batch" mode12:21.28 
Robin_Watts The download link would be populated by a version of the source that has been through the script (indeed, yes).12:21.45 
  Can we keep that script in the gs git tree?12:21.58 
chrisl At some point, yes, it's just at the moment, it's tailored to my machine.12:22.26 
Robin_Watts and can part of that script be git locations/hashes for the other libraries we need to pull in?12:22.28 
chrisl We don't pull in other libraries from git12:23.09 
Robin_Watts Or SVN revision.12:23.21 
  i.e. if everything like that is contained within the ghostscript git, then a commercial release becomes an automated,repeatable event.12:23.28 
  And you can tag the gs source for releases again.12:23.40 
chrisl I do tag the gs source for releases12:23.59 
Robin_Watts Ah, just not on master, right, sorry.12:24.09 
chrisl And the changes in the tag aren't related to the commercial release12:24.27 
  the commercial release script just uses the head revision in svn for the luratech libs12:24.56 
Robin_Watts ok, never mind.12:25.06 
  but I do like the idea of integrating it with git.12:25.17 
chrisl I'll put aside some time next week to sort out the script, and get it into git.12:25.33 
Robin_Watts because then customers can grab snapshots of the commercial release easily.12:25.44 
chrisl True, but customers rarely want a snapshot, they invariably want their patch(es) applied to a previous release12:26.37 
kens Because that's much safer than taking a tested snapshot :-)12:27.00 
Robin_Watts customers want "something that works".12:27.11 
  Until now previous release + patch has been the easiest route (but as ken says, it's untested)12:27.41 
kens Robin_Watts : no serioulsy, chrisl is correct12:27.56 
  THat is indeed what customers want12:28.03 
Robin_Watts Ah well.12:28.16 
chrisl But it's often not the previous release - it's often two or three releases old12:28.17 
Robin_Watts tor8: looking now.12:28.39 
chrisl Robin_Watts: I'm not saying it's not a reasonable idea - it might help us re-educate at least come customers that generally do keep up to date. It might be worth getting an opinion from marcosw about it12:30.10 
Robin_Watts tor8: So you've made pdf_new_document public12:30.31 
  Why can't pdf_open_document just call pdf_open_document_no_run and then override the run_page ?12:30.59 
  overriding the run_page can't fail.12:31.09 
  Do we want a pdf_open_document_no_run_with_stream? If so, then pdf_init_document can be kept private too.12:33.12 
tor8 they're all in mupdf-internal12:34.42 
  they have to be non-static for the linker to find them across compilation units12:34.56 
Robin_Watts They don't have to be exposed across compilation units :)12:35.13 
  pdf_open_document(blah) { doc = pdf_open_document_no_run(blah); doc.super->thingy = secret; return doc; }12:36.00 
  same for pdf_open_document_with_stream (calling pdf_open_document_no_run_with stream). No need for pdf_init_document or pdf_new_document to be made public.12:36.54 
tor8 init_document must be public (it's in pdf_xref.c)12:37.46 
Robin_Watts why is it new to mupdf-internal.h this time then ?12:38.45 
  oh, because you split pdf_document1 out from pdf_xref.c ?12:38.58 
  Can we put it back? Do we gain anything from having that separate?12:39.10 
tor8 Robin_Watts: yes. refetch tor/master.12:39.31 
Robin_Watts and that way we can call pdf_document2.c pdf_document_run.c which is a nicer name12:39.46 
tor8 we could put document1.c back12:39.47 
  put the contents of document1.c back into xref.c I mean12:40.04 
Robin_Watts yes.12:40.11 
tor8 and rename pdf_document2.c into pdf_xref_voodoo.c ;)12:40.29 
Robin_Watts pdf_new_document should be static?12:41.01 
  pdf_document_run.c?12:41.11 
tor8 sorry, fetch again. committed without having saved :(12:41.31 
Robin_Watts or pdf_xref_voodoo, yes, I see that logic.12:41.36 
tor8 I don't mind splitting the fz_document interface out of pdf_xref, but it does add to the number of files.12:42.26 
Robin_Watts I like splitting files if there is a good reason. I dislike exposing internal interfaces unless there is a good reason.12:42.56 
tor8 pdf_xref.c is already too big for my taste, but pdf_document.c was a bit small.12:43.00 
  yeah, I hear you.12:43.16 
  so let's merge and rename to voodoo (or do you have a better suggestion? pdf_xref_aux.c maybe?)12:43.47 
Robin_Watts aux is fine.12:43.55 
  voodoo implies 'magic we don't understand' to me :)12:44.11 
  pdf_xref_run ? Cos it provides the 'run' functionality ?12:44.37 
tor8 well, it doesn't implement the run functionality, it just hooks it in12:45.02 
  so it's a bit misleading when you're looking for the right file to edit12:45.16 
  I think I'll go with aux12:45.20 
Robin_Watts Yeah. There should be a comment at the top of the file saying "This has been split out of pdf_xref.c to allow tools to be linked without pulling in unnecessary code"12:45.42 
  (or something along those lines, but better :) )12:45.59 
  I have code in pdfclean to reorder the objects in a file according to the requirements of linearisation - but it's screwing encryption again, and I can't see why.12:50.09 
tor8 Robin_Watts: okay, updated (hopefully final) version on tor/master12:53.57 
Robin_Watts I like that.12:56.28 
tor8 Robin_Watts: multiple iterations helps code quality quite a bit :)12:58.20 
Robin_Watts lunchtime.12:58.20 
  Code reviews work :)12:58.44 
aleray chrisl, kens thanks a lot for you advices13:13.44 
kens NP13:13.51 
Robin_Watts tor8: KS has relatives that play minecraft right? http://www.tomshardware.com/news/Minecraft-Calculator-Graphing-MaxSGB-Scientific,15109.html13:42.34 
tor8 Robin_Watts: I sincerely hope the people making all these projects use scripting tools or something, because laying out those things manually.... eep!13:59.48 
Robin_Watts Aha, generation numbers are screwed.14:02.48 
  tor8: Yeah. Or at least a really powerful copy/paste :)14:05.34 
  tor8, sebras: ping15:06.46 
  When writing linearised PDF we have to write out a linearisation params dictionary as the first thing in the file.15:11.58 
  Some of the entries in that need to know offsets of things that haven't been written yet.15:12.29 
  I was thinking we could write them out as 0000000000 and come back and replace them with the real values later?15:12.56 
  but that's not trivial to do with the existing object printing code.15:19.05 
  so I was pondering adding a new pdf_obj type that would mean "int, but prints really big when output". What do you think?15:19.44 
  kens: How does pdfwrite cope with that?15:20.34 
  Likewise, we have to put a hint stream into the middle of the document. The hint stream contains offsets to objects throughout the document (some before it, and some after it).15:21.45 
  The spec is slightly cunning in that the offsets after the hint stream are given as if the hint stream wasn't included (so we can write the document out once without the hint stream, then create the hint stream, then copy the document, inserting the hint stream, and just 'fixup' the final trailer.15:23.14 
  <fx: tumbleweeds roll past>15:23.41 
kens busy sorry15:25.37 
Robin_Watts kens: np. I'm most interested in getting feedback from tor8 as to how offended he is by the idea before I go and code it...15:27.04 
  actually, I can just use INT_MIN, I think.15:47.21 
henrys marcosw:we don't need a meeting today but I was hoping to update bugzilla with enhancements you gathered from Drupa.15:56.08 
Robin_Watts tor8: We appear to have missed renaming fz_new_name to pdf_new_name16:02.59 
tor8 Robin_Watts: yuck, backpatching? I can understand why you lost your appetite reading the linearized pdf spec.16:10.54 
Robin_Watts tor8: Yeah, it's foul.16:11.14 
tor8 are you proposing a new pdf_obj type, pdf_placeholder_int (or something like it)?16:11.45 
Robin_Watts That is one option.16:12.02 
tor8 or you just set it to 99999999916:12.22 
  and backpatch later anyway16:12.28 
Robin_Watts The other option is that I just put INT_MIN in there to start with, then when we go back and rewrite, use the proper value.16:12.39 
  That option requires us to pad the dictionary with whitespage though.16:13.02 
  or whitespace.16:13.10 
tor8 I think I'd prefer '9999999' (of however many digits you need) and then pad with spaces when printing the real value16:13.33 
  writing a temp file then copying things around seems a bit awkward16:14.17 
Robin_Watts I'd have to pad the object with spaces, rather than the individual entries, I think.16:14.20 
tor8 I don't understand.16:14.45 
Robin_Watts I have to output: something like:16:14.59 
  45 0 obj << /L 999999999 /O 9999999 ... >> endobj16:15.21 
  then a bit later come back and rewrite as:16:15.35 
  45 0 obj << /L 1234 /O 34 ... >> endobj16:15.52 
  I don't really want to get into changing the object output routines (unless we go the placeholder route)16:16.19 
  so the spaces would have to be added after endobj rather than after 123416:16.36 
tor8 oh, you were going to rewrite the whole dictionary. of course.16:18.09 
  hm, just print with 999999 and record the file position at the end of the dictionary16:18.25 
  then pad after the dictionary with spaces when you re-print it16:18.45 
Robin_Watts That's the plan, yeah.16:19.33 
tor8 ugh. the linearization parameter dictionary contains the file length. that's just... ick!16:20.44 
  what brain dead monkey thought this spec up?16:20.53 
Robin_Watts So my plan is to write the file once, with placeholders and an empty hint stream.16:22.11 
  then make the real hint stream, and write the file again with real values/padding and the hint stream.16:22.36 
tor8 I really hope we never have to actually parse linearized pdf files based on the spec!16:24.13 
  what was that bit about offsets and hint streams?16:25.29 
Robin_Watts The hint stream contains the offsets of each page start (and other things) within it.16:25.49 
kens Night all16:26.07 
tor8 oh, so the hint stream offsets are minus the hint stream?16:26.20 
Robin_Watts So if the length of the hint stream changes, you'd expect everything after the hint stream to move, and hence the hint stream would be invalid.16:26.29 
  So any offset > the start of the hint stream is stored with the hint stream length subtracted from it.16:27.02 
tor8 right. makes sense. the only way you could do this braindead scheme and not run into an instable system.16:27.21 
Robin_Watts yes.16:27.28 
  I'm disappointed that I still have to do the dictionary padding trick, but...16:28.29 
rayjj__ somehow I missed a line when re-applying part of the reverted patch (to gsicc_profilecache.c). Code still worked, but still had the problem (referenced freed memory) :-( 17:13.05 
  fixed now17:13.12 
  that problem had existed for a long time. I'm surprised that it never showed up with someone running -Z@17:14.14 
  to write a linearized PDF, can you open several temp file streams, then write the "final" PDF once you have the whole thing (leaving construction of the initial xref and hints until then) reading in the temp files as needed.17:17.36 
  this is mostly what GS pdfwrite does -- it has several temp files for stuff that then get assembled into the resulting PDF at the 'close'17:18.35 
Robin_Watts rayjj__: Could do. But doing it using just 1 file, but in 2 passes seems reasonable.17:19.33 
rayjj__ that's how it manages to do 'ps2write' since that requires careful ordering of Resources and other stuff17:19.47 
  the GS ps2write is basically the 'streamable' PDF that gets processed by a canned ProcSet that interprets it17:20.47 
  Robin_Watts: but padding all 'forward' object numbers, etc. to 10 digits seems rather wasteful (doesn't apply to xref since that is always 10 digit offsets)17:22.38 
Robin_Watts rayjj_: It's for 2 dictionaries in the entire document. I think we can live :)17:23.07 
  with maybe 10 entries in each.17:23.18 
rayjj__ Robin_Watts: you also have to 'fill in' the xref's for each page, right ?17:24.00 
Robin_Watts I have to output 2 xrefs.17:24.11 
  not 1 xref per page.17:24.41 
  first xref = page1, second xref =rest of the pages.17:25.01 
  It's the hint streams that are going to be a bitch.17:25.11 
  gs doesn't have nearly the problem with the hint streams that I will.17:25.45 
  (no thumbnails in gs, no outlines, no article threads, no named destinations, no interactive forms, etc etc)17:26.18 
  actually the first xref is going to be a pain too.17:29.13 
mvrhel Robin_Watts: question for you17:37.34 
Robin_Watts mvrhel: please god, distract me :)17:37.46 
mvrhel so on 69287017:38.01 
Robin_Watts Right.17:38.33 
mvrhel what needs to happen in the pdf14 stroking code to ensure we dont do the stroke the slow way17:38.55 
  I try to follow this stuff but it is a bit confusing17:39.09 
Robin_Watts The stroking code tests for lop_is_idempotent17:39.15 
  (IIRC)17:39.21 
  basically, if you ensure that the alpha is set to 1, we should stroke the fast way.17:39.38 
mvrhel oh so likely update_lop_for_pdf14 is the thing that is doing it17:40.49 
Robin_Watts see: update_lop_for_pdf1417:41.05 
  in gdevp14.c17:41.12 
  yes :)17:41.17 
mvrhel :)17:41.20 
  ok. so let me see if I can wrap a zstroke with a knockout group17:41.44 
  in which case we should be able to set this for the faster case17:42.14 
Robin_Watts a zstroke with a knockout group in the case where update_lop_for_pdf14 would set lop_pdf14.17:42.29 
mvrhel so pis->log_op |= lop_pdf14 makes it the slow case, yes?17:43.24 
Robin_Watts yes.17:44.21 
mvrhel ok thanks!17:44.31 
Robin_Watts lop_is_idempotent returns true when lop_pdf14 is set.17:44.44 
mvrhel huh? that sounds backwards17:45.39 
Robin_Watts returns false, sorry!17:45.49 
mvrhel ok. I am already confused enough...17:46.00 
  now I have enough knowledge to jump in and break something17:46.38 
  Robin_Watts: it ripped through the file with that change18:27.08 
  I need to do a cluster push to see what effect this has if any18:27.45 
  I am thinking that we would not need to set the lop_pdf14 bit any more with the knockout group present18:28.30 
Robin_Watts Quite probable.18:34.18 
mvrhel we will see what comes back from the cluster push. I went ahead and disabled update_lop_for_pdf1418:36.01 
  lunch time now18:36.47 
Robin_Watts Well, presumably with the knockout group in place, the final condition will always equate to false anyway ?18:39.13 
mvrhel no. the blend mode was not normal18:39.43 
  but that is a good point18:39.55 
  anyway. I am about done for the day actually. I have been fighting a head cold/sore throat since getting back and now I have a fever18:40.24 
Robin_Watts With the knockout group in place, does the internal rendering still see a non-standard blending mode?18:44.21 
  If it does, then presumably we still have to use the slow code?18:44.40 
  (Or was the test wrong before?)18:44.49 
  I hope you feel better soon.18:44.55 
  Have a good weekend.18:44.58 
marcosw henrys: will enter enhancements after I go through my emails. Just returned home from physical therapy.19:16.53 
tor8 Robin_Watts: the first xref shouldn't be difficult, as it's fixed size :) 19:24.55 
  it'll need to be filled out proper in the second pass though19:25.08 
Robin_Watts tor8: It's not fixed size.19:59.34 
  It has an offset to the final one.19:59.43 
  but I have all that done.19:59.47 
  In theory everything except the hint stream should be done in the code I have here (but something isn't quite right)20:00.22 
  but I'm done for the night I think.20:00.32 
 Forward 1 day (to 2012/05/12)>>> 
ghostscript.com
Search: