IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2013/02/25)2013/02/26 
marcosw I messed up ~1/2 of the cluster nodes, but they'll recover on their own in a couple of hours. 00:02.28 
Srini Hi all here10:43.49 
  I am trying to extract fonts from a pdf file... pdfinfo shows the fonts tobe cid identity-h fonts... extractFonts.ps failed to extract the fonts... trying to build mupdf on ubuntu... it is not compiling and installing pdfextract ... can anyone help me out please!10:45.17 
  Is there a sure way of extracting fonts from pdf?10:45.44 
Robin_Watts Srini: bulding from source or from a package manager?10:46.49 
Srini Robin_Watts, I build mupdf from sources10:53.50 
  git ghostscript10:53.55 
  it did not build pdfextract10:54.09 
  is there a patch?10:54.18 
Robin_Watts make all ?10:54.49 
Srini I tried apt-get install mupdf-tools, even then it id not install the pdfextract :(10:54.50 
  Robin_Watts, yes make all10:55.04 
Robin_Watts OH, well, now you get mutool, right?10:55.06 
  "mutool extract" is the new equivalent to pdfextract10:55.23 
Srini Robin_Watts, it did not create a mutool also!10:55.47 
Robin_Watts Did you "make all" ?10:56.02 
Srini Yes I did!10:56.16 
femfum Hi, someone could advise me on how to share PostScript code, via web place (like GitHub or PasteBin), with code-highlighting? (usually we work with VIM editor and TOhtml method) …thanks!10:56.30 
Robin_Watts make all should have left mutool in build/debug10:57.37 
Srini Robin_Watts, you are right it is!10:58.00 
Robin_Watts so maybe you want make all build=release10:58.11 
Srini Robin_Watts, and make install followed by that?10:59.40 
Robin_Watts make install build=release10:59.55 
Srini Robin_Watts, That was help!11:01.10 
  Thanks!11:01.16 
Robin_Watts np11:01.20 
Srini Robin_Watts, gs can convert pdf to html?11:05.53 
  Sorry if I am singling out you Robin_Watts !11:06.34 
chrisl Srini: gs cannot convert pdf to html, no11:07.07 
Srini chrisl, Thanks!11:07.27 
chrisl np11:07.33 
Robin_Watts Time for us to sue LG?11:09.25 
  http://www.theregister.co.uk/2013/02/25/lg_acquires_webos/11:09.31 
chrisl I wonder why they would want it......11:11.14 
Robin_Watts For Smart TVs11:11.31 
chrisl Yeh, but why start with WebOS11:11.56 
Robin_Watts Srini: No, but mupdf can, in some sort of way.11:14.09 
  mudraw -tt in.pdf > out.html11:14.21 
femfum sorry if my question about PS syntax-highlighting seems to have no sense, but the main web sites to share code, don't have the PostScript language available11:16.33 
Srini Robin_Watts, Formatting like bold italic subscript superscript is not possible that way? it is plan text?11:17.45 
chrisl femfum: I don't know any pastebin type site with PS syntax highlighting - if you find one, let us know!11:17.47 
chrisl has to head out for a while.....11:18.51 
femfum chris1_away: yes, of course …we ask why :-)11:20.08 
Robin_Watts Srini: Information is put into the css.11:21.37 
  femfum: Cos in order to syntax highlight you have to have some structure, and ps is practically structure free.11:22.17 
Srini Robin_Watts, Yes! 11:24.01 
  Thanks!11:24.04 
Robin_Watts you're welcome.11:24.15 
femfum Robin_Watts: I agree, but, for example, visually is better to follow a large program with the VIM PS syntax on enabled11:29.00 
tor8 Robin_Watts: hm, I wonder why "mutool" has pulled in all the cmap and font resources...12:14.46 
  right, somewhere in the 'forms' branch merge back in september...12:31.20 
paulgardiner Robin_Watts, tor8: a few commits on paulg/master, if you have a moment13:02.59 
tor8 paulgardiner: can I pick your brain about some pdf_forms things?13:04.31 
paulgardiner sure13:04.40 
tor8 pdf_form.c has a function measure_text which calls pdf_run_glyph13:04.50 
  doing that pulls in the interpreter when linking, and the interpreter pulls in the big font data blobs13:05.25 
  now, I have no problem with forms requiring the interpreter13:05.43 
  but I need to understand why mutool.c pulls in pdf_form.c13:06.05 
  (as a bit of history, we have pdf_new_document_no_run just to let mutool tools that don't need the interpreter avoid pulling in the huge data blobs)13:06.47 
paulgardiner what if you remove pdf_form.c from the build? Do the unresolved functions point at any reason?13:07.42 
sebras tor8: update doc/example.c with regards to -lpng. I might do it, but it will take some time...13:08.24 
tor8 paulgardiner: /facepalm should've tried that!13:08.40 
  sebras: I'm just curious why you put it there. I can take it out easily enough.13:08.55 
  we've *never* ever used libpng in mupdf13:09.02 
  paulgardiner: so, fz_free_widget and pdf_update_appearance13:09.21 
sebras tor8: I think this was before the git submodule things...13:09.49 
tor8 sebras: we've still never used libpng...13:10.19 
paulgardiner tor8: Ah. Possibly pdf_update_appearance should be in pdf_annot.c13:10.22 
  ... but I'm unsure what else it would drag in.13:10.40 
tor8 fz_free_widget should be in doc_interactive.c shouldn't it?13:11.29 
paulgardiner Hmmm. Come to think of it pdf_update_appearance does need to measure test13:11.32 
  tor8: Yes, I'd have thought so13:11.57 
sebras tor8: d'oh! you're right of course! *puts head in a brown paper bag*13:12.28 
tor8 paulgardiner: update_annot is a bigger headache13:12.32 
  paulgardiner: since I think load_page may be called by some tools without wanting to actually run the page contents13:13.17 
  paulgardiner: hm. it may help looking at the current stuff instead of the merge that introduced pulling in the data blobs...13:14.55 
  so doc_interactive needs a lot of pdf functions from pdf_forms, but that's probably okay (though the dependency going that way is a bit...odd)13:15.43 
  there's still update_appearance and pdf_field_type being called in pdf_annot.c13:15.59 
  but now there's more than just measuring text that pulls in the interpreter13:16.51 
paulgardiner I'm pretty sure pdf_field_type could move to pdf_annot.c (or a separate file) without dragging too much with it.13:17.46 
  With update_appearance, I'm unsure as to why I arranged for it to be called on loading the annotations.13:18.29 
tor8 paulgardiner: I've been trying to keep the mupdf code in "layers" where the bottom layer that deals with objects, streams, filters and the xref etc doesn't depend on the content stream interpreter or device interface13:19.50 
  of course, it's not always easy!13:19.57 
  not when pdf_xref is the dumping ground for all manners of caches etc13:20.08 
  so maybe we should just give up that thought and not worry too much13:20.19 
  still, if it can be arranged to not have hard linked dependencies, I consider it a big win in terms of code separation and clarity13:20.52 
  and if that requires hacks like filling in function pointers to avoid hard linking, then that's a clear reminder of where the abstraction falls down13:21.22 
paulgardiner We have this strange split between fz_annot and fz_widget, which are under-the-hood the same thing, but obtained in different ways.13:25.03 
tor8 paulgardiner: there's also the question whether it's worth keeping them in the fz namespace13:25.33 
  nothing but pdf will be using annots and widgets, as far as I can tell13:25.53 
paulgardiner That was the abstraction that fz_interactive was supposed to help with.13:26.26 
tor8 yes, but re-evaluating decisions occasionally is not to be frowned on :)13:26.58 
  if it's working out, then great! if it's just making your work more troublesome, ...13:27.18 
paulgardiner I totally agree.13:27.20 
tor8 there's now a set of annotation types in fitz.h which probably only makes sense for PDF13:28.04 
  the fitz doc_interactive.c forwarding layer is simple enough I guess that it doesn't pose a big headache13:28.46 
  but API decisions like that makes one wonder where the abstraction starts leaking too much13:29.04 
paulgardiner Yes, I see what you mean about the annotation types13:30.13 
  I'd imagined the abstraction left open the possibility to deal with another file type one day that had some of the interactive features of pdf, but as you say having types that are pdf specific blows that away13:31.26 
tor8 yup. that's what I meant.13:31.46 
paulgardiner Also, at the time, the only other option seemed to be to add lots of new indirected doc functions, but I guess just testing if a doc is a pdf and then casting is an alterntive.13:32.34 
tor8 yeah. maybe a pdf_document *pdf_cast_document(fz_document *doc) and that returns NULL if it's not a PDF13:33.16 
paulgardiner Ah yes13:33.24 
Robin_Watts Do we not have a meta function?13:33.55 
tor8 Robin_Watts: I hate the meta function...13:34.10 
paulgardiner Even if we do, pdf_cast_document is nice13:34.22 
tor8 but yes, the meta function should be able to return the document type13:34.37 
paulgardiner Then drop all the fz_interactive stuff13:34.47 
Robin_Watts We use the meta function to find out if it's a pdf document, and if so, we can cast.13:35.03 
  and we can implement pdf_cast_document using that.13:35.11 
paulgardiner I don't think any of this will help unlink update_appearance... other than perhaps make the code look simpler so we can understand what's going on better13:35.24 
Robin_Watts so the users get a nice function, and we don't bloat the document interface.13:35.29 
tor8 making the code simpler is worthwhile in any case!13:35.45 
paulgardiner Robin_Watts: yeah. sounds good13:35.53 
  tor8: yes13:35.59 
  I could make that change when I've finished sorting out why I'm getting opaque highlights.13:37.40 
tor8 paulgardiner: removing both doc_interactive and pdf_form we get link erros from pdf_load_annots and pdf_update_annot to update_appearance and field_type13:38.01 
  paulgardiner: maybe we can split pdf_annot.c into non-interactive and interactive halves13:38.48 
  and your mixing of widget and annot when they're both the same pdf structures under the hood, I'll leave that choice up to you13:39.17 
paulgardiner The problem is avoinding updating appearance streams on the load call13:39.21 
tor8 paulgardiner: that's where we synthesize appearance streams if they're missing?13:40.29 
paulgardiner Yes, and update ones that have been left dirty by their values being altered without their appearance streams13:41.10 
Robin_Watts In the absence of forms, the only time we need to update annots are when they haven't had appearance streams to start with, yes?13:42.02 
paulgardiner Hmmm and somewhere we deal with the possible change due to the mouse being down over a widget13:42.11 
tor8 right. that makes sense to do when loading an annot. so we should probably not load annots in mutool tools.13:42.21 
paulgardiner Robin_Watts: well, we were getting away without doing that at all before form support was added.13:42.40 
  ... but maybe it is desireable in any case13:42.53 
Robin_Watts What tor8 says is simpler, I think.13:42.59 
  If we can avoid loading annots in mutool tools, we should be OK.13:43.13 
paulgardiner With an ifdef?13:43.52 
Robin_Watts No, we shuffle all the load_annots stuff into a different partitioning of the files.13:44.22 
tor8 paulgardiner: by not calling pdf_page13:44.25 
  and by shuffling functions around in files13:44.41 
paulgardiner Ah right.... ish13:45.27 
  not calling pdf_page? Not getting that bit13:45.58 
tor8 paulgardiner: nvm, it doesn't matter13:50.15 
  I've nailed the two functions that pull in the interpreter in pdf_form.c13:50.24 
  paulgardiner: (I meant pdf_load_page)13:50.38 
paulgardiner right13:50.57 
tor8 pdf_measure_text, pdf_text_stride and pdf_load_font/drop_font are the entry points we need to isolate13:51.04 
  and they're all used by update_text_appearance, called by pdf_update_appearance13:51.53 
  so we're out of luck there!13:51.57 
paulgardiner Yep. It's definitely update_appearance that is the problem13:52.22 
Robin_Watts To return to what I was saying before...13:52.32 
  If update_appearance is only really needed if we have forms...13:52.55 
  and forms is only really needed if we are running the interpreter...13:53.12 
paulgardiner Really in update_appearance we should fill in all missing annoations.13:53.52 
Robin_Watts then can we isolate update_appearance via a function pointer that is set/not set in pdf_open_document/pdf_open_document_no_run13:54.12 
paulgardiner The need to generate appearance streams isn't forms specific, but still perhaps if you don't intend to run them, there is no point to generating them13:57.08 
Robin_Watts Seems fair to me.13:57.44 
paulgardiner Alternatively there may be a simple way to avoid calling update_appearance from load_annots, and instead ensuring that it is called before running them13:59.16 
Robin_Watts A 'needs_update' flag stored somewhere?13:59.50 
paulgardiner The need updating in two cases: they don't exist or the widget object has a Dirty flag set14:00.45 
Robin_Watts both of which you can spot when running them? So no flag may be required?14:01.23 
paulgardiner Yes. The problem though, is there may be code that assumes they exist and will fall over if they don't14:01.55 
  though such code would be better fixed14:02.16 
Robin_Watts right, but we could implement an 'ensure_updated' call, and insert that in various places ?14:02.32 
paulgardiner update_appearance is a ensure call14:02.56 
  It does nothing unless one of those two conditions hold14:03.15 
Robin_Watts ok, so basically it's a matter of moving the pdf_update_appearance call from load_annots to 'just in time' before stuff is used.14:03.33 
paulgardiner I'd like to think so. :-)14:04.01 
  Perhaps just move it to pdf_run_annot.14:05.00 
tor8 now is when you want a wall-sized printout of a graph of all object and function dependencies14:05.09 
paulgardiner I'd have thought moving it from load to run had some chance of solving the link problem.14:08.09 
  Other than pdf_widget_type14:08.33 
  There's some chance it would mess up partial update because that keys on changes to the appearance streams.14:13.02 
tor8 paulgardiner: okay, I think splitting pdf_annot.c into interactive/non-interactive functions and moving the update_appearance to running time should solve the dependency14:13.03 
  there's a lot of dependencies on pdf_annot.c from various files14:13.21 
  pdf_xref has the annot enumerator14:13.29 
  but if we ditch the fz_interactive, I think that enumerator can be move away from the function pointer table in pdf_xref14:13.51 
paulgardiner I think we can do both those things independently.14:15.26 
  It's actually fz_interactive that kept the widget enumerator out of the xref14:15.48 
  Does this need doing for the release?14:16.50 
tor8 it would be good if we could (since it blows up mutool from 1.2M to 8.1M, but I won't force the issue14:19.27 
paulgardiner The blowing up of mutool can be solved without removing fz_interactive fz_annot fz_widget etc.14:20.16 
  I could have a go at moving pdf_widget_type into pdf_annot.c and calling update_appearance from run rather than load... oh hang on... we'd then need run_annot to be moved out of pdf_annot.c14:22.31 
  I could also have a go at getting rid of fz_interactive et al, of course.14:25.37 
  But it would be really nice to get my current commits in before the latter. :-)14:28.46 
tor8 paulgardiner: yes. I've looked through the non-android ones and they look fine (given the subsequent rejigging of interactive and annot/widget back into mupdf.h we've been talking about)14:31.50 
  question is what to do about the release, do it now with the bloated mutool exe or wait?14:32.26 
paulgardiner The changes just for avoiding the bloat might be few, although it looks like we do need to split pdf_annot.c, but between run and load, rather than interactive and noninteractive.14:34.56 
  We have a meeting later. henrys is good at making decisions.14:36.48 
tor8 paulgardiner: run would be part of interactive14:39.13 
  *could14:39.25 
paulgardiner oh ok. that makes sense14:39.27 
tor8 which leaves very little non-interactive. feel free to come up with some other organisation between annot.c and form.c if you wish.14:40.05 
henrys releasing soon is priority, if there were something very important to put in then we can delay more - but we commit to a February release and there are 2 days left. Just enough for the rc to fail and be fixed ;-)14:42.45 
paulgardiner I have the opaque, text-highlight-markup problem fixed now. I guess I could have a go at this. It should be fairly quick provided it doesn't break partial update in some mysterious way.14:43.08 
  I am a little worried about breaking partial update.14:43.43 
  But I could try and if partial update is broken then let the release go without it.14:45.15 
  without the changes I mean14:45.30 
tor8 paulgardiner: fair enough.15:01.14 
paulgardiner unless we think a coupke of days freeze on other than bug fixes is safer15:02.32 
Robin_Watts release now.15:02.52 
  fix later.15:02.56 
paulgardiner Robin_Watts: tor8's checked my non-android commits (other than the one tiny one I just pushed). Be handy if you could give the android ones a check over.15:05.33 
Robin_Watts looking now.15:07.07 
paulgardiner ta muchly15:07.29 
Robin_Watts How come ReaderView needs docHeight, but not docWidth ?15:09.59 
paulgardiner I don't know. Eclipse told be it wasn't used.15:10.26 
Robin_Watts indeed, it seems not to be.15:11.10 
  pdf_delete_annot...15:18.25 
  if you pass in an annot that's not in the page, you'll get bad results.15:18.45 
  and it'll crash if you pass annot == NULL15:18.56 
paulgardiner Yeah, it would be safer to just return. I'll update that once you've done.15:20.47 
Robin_Watts Suppose I delete an annotation, so it moves onto the deleted list. Then I do an update, so it moves onto the tmp list. Then I delete another annotation, and do another update. Won't the first tmp list get lost ?15:22.41 
paulgardiner I see the problem with NULL. Would one not in the list be a problem? other than its being strange not to be there.15:23.01 
Robin_Watts It's a sign that someone might be passing in an annot from the wrong page.15:23.21 
paulgardiner Good point.15:23.33 
Robin_Watts If you try to delete an annotation from the wrong page, nothing should happen.15:23.55 
  I'd vaguely prefer "death_row" to "tmp_annots" :)15:24.16 
paulgardiner delete;update;deleteupdate is ok I think15:24.18 
Robin_Watts how so?15:24.26 
  page->tmp_annots = page->deleted_annots15:24.34 
  delete A makes deleted_annots = A, A->next = NULL;15:25.18 
  update makes tmp_annots = A, delete_annots = NULL15:25.32 
  delete B makes deleted_annots = B, B->next = NULL15:25.42 
  update makes tmp_annots = B, delete_annots = NULL. Where has A gone ?15:25.57 
  "death_row_annots", better name than "death_row" actually.15:26.43 
paulgardiner ah. Usage it to call update just before enumating the changed annotations. Next call to update will throw away ones you didn't enumerate.15:26.45 
Robin_Watts ok, so it's safe because of usage.15:27.03 
  (that's internal usage, not usage by callers, right?)15:27.18 
  wierd indentation in jni/mupdf.c at line 1500ish. In "Android: implement annotation deletion"15:29.05 
paulgardiner No external, but defined usage. The only way it was intended to work. You are about to do a partial update. You call update which handles all dirty widgets and sorting out the right appearance streams. Then you enumerate the changed annotations so that you know which rectangles to draw15:29.13 
Robin_Watts Could we always update on the start of an enumeration to be sure?15:29.44 
  or would that be slow/break stuff?15:30.01 
paulgardiner You also call update when you are about to draw the whole page, but then you don't want the rectangles, and you never will want the current ones15:30.02 
  update means prepare any dirty stuff and set up a list of annotations changed since the last update call in case I need them.15:31.53 
Robin_Watts paulgardiner: Right. So if it's expected/assumed that you will always do that before starting an enumeration, can we not force an enumeration to do it anyway?15:32.35 
  Or would that redo work unnecessarily ?15:32.46 
paulgardiner Possibly, but then you'd have to do the first step of enumeration even when you didn't need the result just to get the dirty things accounted for and to give you a starting point for the next call.15:33.43 
Robin_Watts paulgardiner: I don't follow.15:34.09 
  I'm not saying we should remove update from the API.15:34.19 
paulgardiner You mustn't call update twice before an enumation15:34.56 
Robin_Watts Just that rather than designing an API that relies on us doing update before an enumeration, wouldn't it be nicer to not have that restriction?15:35.00 
  ah, why not?15:35.04 
  because then dirty rectangles might be lost ?15:35.37 
paulgardiner Yes, and you want them to be in the draw-the-whole-page case.15:36.04 
Robin_Watts paulgardiner: Ok, that sounds... fragile to me.15:36.19 
paulgardiner What would be less so? given that not only do you want to avoid accidently missing a rectangle, you also want to avoid accidently drawing one that you already drew15:38.09 
Robin_Watts (For the logs, sorted on the phone. My objection is withdrawn. One possible idea would be to rename 'update' to be 'prepare_for_redraw')15:50.10 
  paulgardiner: OK, the rest of the stuff looks good to me.15:51.55 
henrys meeting in 5, coffee time15:53.32 
  looks like everything is moving along well. We should be able to have a quick meeting.16:00.14 
Robin_Watts henrys: When we had to do the reflow, you said "do a PDF -> HTML extraction".16:01.13 
  Was that a requirement from the potential customer, or you thinking of the best way to get something going fast?16:01.33 
henrys fast - I think there should be a longer term project to do native reflow but we don't have the bandwidth now.16:02.21 
Robin_Watts It may be that we could get much better results by implementing our own scalable view. We'd get better font matching, better indents etc.16:02.57 
  OK.16:03.00 
henrys I did want to bring up an overarching concern: have we done a careful feature check of the native android app and know what we are missing?16:03.59 
Robin_Watts Of *what* native android app?16:05.02 
henrys I'm looking at the nexus 16:05.13 
Robin_Watts There is no standard android app, it's different on every device.16:05.28 
  OK, the standard nexus app. I would assume we have not, as none of us 3 have a nexus.16:05.43 
henrys but there is a standard pdf viewer that goes with the OS release - ice cream jelly bean etc. no?16:06.27 
paulgardiner I think my S2 had Polaris Office16:06.32 
Robin_Watts henrys: no.16:06.37 
  paulgardiner has been working on the annotation stuff with the intention of matching the mobile Adobe Reader thing, I think.16:07.04 
paulgardiner That's been my initial target16:07.26 
Robin_Watts Different vendors bundle different PDF apps with their kit. There is no standard app for us to match.16:07.36 
henrys who is the vendor for native pdf on the nexus?16:08.23 
Robin_Watts I have jelly bean on my transformer prime, and it has a different PDF app to jelly bean on the nexus, which is still different to jelly bean on the samsung SIII.16:08.39 
  henrys: I *think* it might be derived from Repligo?16:09.04 
henrys so I guess the question is do those apps have any obvious important feature that we are missing and could put on Paul's todo list.16:09.53 
Robin_Watts I think I'm right in thinking that Sony use QuickOffice, and that's recently changed to using Adobe as the PDF engine.16:09.57 
  henrys: Well, matching Adobe Reader for annotations seems like a good first step.16:10.37 
  mvrhel_laptop reported, IIRC, that reflow on on of his devices included images, but it was fairly braindead.16:11.10 
  (For every image on the page, stick it in the output).16:11.24 
henrys yes that is in the works. I am asking if there is anything else we are sorely missing?16:11.29 
Robin_Watts hence images used in patterns would appear as standalone images etc.16:12.11 
  I am not aware of anything missing from our app compared to the apps I've looked at, but can't claim to have done an exhaustive sweep.16:13.05 
paulgardiner We're still behind Adobe Reader with annotatoin creation, but catching up.16:13.16 
Robin_Watts Does Adobe Reader do forms or javascript?16:13.42 
henrys next show it would be unpleasant to go through "Does it do this cool thing that this other app does?" again that's what I'm trying to avoid. I'll look at my app also.16:14.39 
paulgardiner Robin_Watts: Strangely, it does forms without javascript.16:14.59 
henrys all cool things should be implemented ;--)16:15.05 
  should we talk about the release this meeting?16:15.29 
  tor8?16:15.49 
Robin_Watts I'd be happy for us to release now, as is, no further fiddling.16:16.28 
  The issue with mutool being a bit larger than we'd like is no biggy IMHO.16:16.41 
paulgardiner I've had a quick look at what we discussed earlier (re unbloating mutool) and run into problems.16:16.49 
Robin_Watts mutool users are running on the desktop, +/- 6Meg ain't going to matter a damn.16:17.16 
  It's nice to fix it if we can, but it doesn't make or break a release.16:17.49 
paulgardiner I don't think we can quite as easily as we'd previously suspected.16:18.57 
henrys phone call16:19.57 
  sorry I'm back16:21.29 
  seems like something that would get stuck in tor8's craw his okay with it?16:22.17 
paulgardiner Robin_Watts: changes you requested are done and pushed.16:22.50 
henrys so I'll just chase after tor8 sometime today about the release.16:23.49 
  thanks for the meeting16:24.05 
paulgardiner cheers henrys 16:25.28 
Robin_Watts mvrhel_laptop: ping ?16:26.36 
tor8 right, so release now16:26.39 
henrys tor8:was that a question?16:27.26 
  if so yes16:27.31 
tor8 henrys: it was an acknowledgement.16:27.40 
  Robin_Watts: with or without v8? how did we do with the tech preview release?16:27.47 
henrys I do think mvrhel_laptop should start coming to the forms meeting - which should probably just become the mupdf meeting, but it might be early for him.16:29.04 
tor8 mvrhel_laptop: do you have your windows 8 app in a git somewhere?16:30.01 
mvrhel_laptop good morning16:31.25 
  tor8: I could add it in the mupdf project if you want16:31.36 
  I have it in my local copy16:31.44 
tor8 mvrhel_laptop: you could do like I, robin and paul and host a personal repo on casper in ~/repos/mupdf.git16:32.26 
mvrhel_laptop oh ok. I will do that then16:32.40 
tor8 we have a rule that everything that hits the main repo has to go through a review by one other person16:33.22 
mvrhel_laptop tor8: sounds reasonable. I will get my personal repo in place this week16:34.00 
tor8 and your personal repo is yours to do with as you wish. rebase and amend commits freely.16:34.16 
henrys hi marcosw16:34.56 
marcosw morning henrys 16:35.03 
henrys I haven't really been following the bugs carefully do we need to go over them after the meeting or are they up to date?16:35.23 
  marcosw ^^^16:35.34 
mvrhel_laptop tor8 I think I have only one mupdf related change that I needed which is #ifdef __cplusplus extern "C" { #endif sort of thing16:35.56 
marcosw I think we are up to date. There are a couple of minor issues assigned to support.16:36.08 
tor8 mvrhel_laptop: extern "C" { #include "mupdf.h" } doesn't work for you?16:36.27 
mvrhel_laptop in the fitz header16:36.28 
Robin_Watts tor8: We should probably add that in the header. It's considered polite, I think.16:36.48 
tor8 it's what we force the sumatrapdf folks to do :)16:36.52 
  ugh. I don't want to be polite to C++.16:36.59 
mvrhel_laptop it did not work for some reason. I can go back and look again though16:37.02 
Robin_Watts If there is no more mupdf business, I have a gs question for mvrhel.16:37.23 
mvrhel_laptop I did try that at the time I remember16:37.24 
tor8 considers adding variable names like "class" and "template".16:37.38 
mvrhel_laptop :)16:37.46 
tor8 mvrhel_laptop: if it doesn't work, knowing why would be good. if there's a valid reason we can add the ifdef c++, but my antipathy towards c++ would prefer not to16:38.31 
mvrhel_laptop Robin_Watts: I can talk about gs16:38.33 
Robin_Watts mvrhel_laptop: I've been looking at bug 693653, which is about a slowdown when using shadings.16:38.45 
  I think the basic reason for the slowdown is "we now do it properly".16:38.59 
mvrhel_laptop tor8: ok I will reinvestigate this week16:39.03 
Robin_Watts but in the discussion, alex has claimed that there is a problem with gx_icc_is_linear_in_line16:39.26 
  (see comment 12)16:39.29 
mvrhel_laptop ok hold on16:39.36 
  Robin_Watts: I would need to see this running to know what is going on exactly. icclink->link_handle should have the number of input and output components16:42.17 
  and the output components should match the number of the device profile16:42.30 
  but let me take a closer look at remap_fast16:42.46 
Robin_Watts mvrhel_laptop: I am assuming that the icclink passed in is somehow related to the cs and the device :)16:43.51 
mvrhel_laptop yes. it is calculated early on in the shading code16:44.06 
Robin_Watts Could the icclink not be calculated from the other params passed into this function?16:44.57 
  or would that take longer than just passing it in?16:45.08 
mvrhel_laptop is there a case where ndes = gsicc_get_device_profile_comps(dev_profile) is not the number we are going out to?16:48.50 
Robin_Watts I am not aware of one.16:49.14 
mvrhel_laptop Robin_Watts: so the icclink is calculated way before we ever get to this point16:49.16 
Robin_Watts but alexcher's comment lead me to think that maybe he had seen such a case.16:49.39 
  alex?16:49.42 
  mvrhel_laptop: Would this function be faster if we use remap_buffer rather than remap_color?16:49.51 
mvrhel_laptop that would be very strange16:49.53 
  if we have a buffer of colors it would be faster16:50.03 
Robin_Watts i.e. make 1 call for 3 colors into the ICC rather than 3 calls for 1 color each.16:50.26 
  In the next function, we make 7 calls, when we could make one.16:51.03 
mvrhel_laptop oh yes this is the linear test stuff16:51.33 
  yes, we could pack them into a single buffer, transform and then do the linear test16:51.53 
  I don't know if with that few of colors if it will make much timing difference Robin_Watts 16:52.13 
Robin_Watts The whole bug is about decompose_linear_color taking a long time.16:52.28 
mvrhel_laptop Robin_Watts: do we know what commit made it take a long time? I am wondering, since there were some shading bugs that I fixed in the last year where we were not doing things that we should have been doing. Those included transparency I think though.16:53.46 
Robin_Watts Each time we recurse (to split the range in half) we check to see if the colorspace is linear in the required region.16:53.55 
mvrhel_laptop Robin_Watts: yes16:54.02 
Robin_Watts mvrhel_laptop: I know exactly what caused it to be slow :)16:54.07 
mvrhel_laptop uhoh16:54.26 
henrys it's probably slow because it is unlinear ;-)16:54.26 
Robin_Watts originally (years ago, before I joined the company) the code used to decompose to single pixel level.16:54.43 
  Then (not so long ago, but still before I joined) it was changed to only decompose to 1pt accuracy.16:55.18 
  This was much faster, but less accurate.16:55.31 
  and noticeably so, so we got a bug report.16:55.51 
  so last year, I reverted the optimisation, with the option of having a #define in there to set MAX_SHADING_RESOLUTION, so people could opt for the faster speed if they wanted it.16:56.43 
mvrhel_laptop I see. so you gave them a taste of speed16:57.20 
Robin_Watts I thought it might be possible to use the MAX_SHADING_RESOLUTION trick in the case where we are using linear color fills, but having tested that, it produces unacceptable results (IMHO, see my bmpcmp page if you're interested).16:57.53 
  As it is, we now take 250 seconds instead of 4 (in the inaccurate, pre color corrected days), but we get it right.16:58.44 
mvrhel_laptop oh yes the one image has some bad contours. some don't look too bad though Robin_Watts 16:59.17 
alexcher Robin_Watts: I'm back.16:59.25 
mvrhel_laptop Robin_Watts: there is probably def. room for speed up in the linear check code16:59.57 
  especially if that is a hot spot that you are seeing17:00.05 
  I made no attempt to optimize at the time17:00.17 
Robin_Watts mvrhel_laptop: At the moment, I'm still trying to get my head around the whole thing.17:00.23 
  alex: hi.17:00.27 
ray_laptop how many times do we check to see if a colorspace is linear ?17:00.41 
mvrhel_laptop as long as it is still nonlinear ;)17:00.54 
Robin_Watts It's not "is the colorspace linear". It's "is the colorspace linear in this region".17:01.05 
  and we recheck repeatedly until the region is small enough that it's linear.17:01.24 
ray_laptop can't we do a more complete check ONCE and mark it as linear (most colorspaces are pretty linear)17:01.34 
Robin_Watts alex: in comment 12 you talk about ndes coming from the wrong place. Have you ever seen a case where ndes is the wrong value?17:01.59 
alexcher Robin_Watts: Yes, in this bug.17:02.31 
Robin_Watts ray_laptop: At every stage of the decomposition, if it's not already linear, we check to see if it has become so.17:02.33 
  hence a colorspace that is essentially linear throughout will only be checked once.17:03.10 
  alexcher: With this example file? Right.17:03.39 
mvrhel_laptop if ndes is wrong, then that is a bug that I would like to look at. alexcher, is there anything special I need to do to catch this case?17:03.44 
alexcher Only 1 output component is generated. The following code compares wild core for linearity.17:04.15 
henrys chrisl:so I guess you have heard mupdf release is imminent hopefully17:05.12 
alexcher mvrhel_laptop: I think I've posted everything.17:05.14 
mvrhel_laptop alexcher: ok I will take a look at it17:05.35 
Robin_Watts alexcher: You also talk about converting more colors at once by keeping them in a single array... is that to avoid repeated gsicc_remap_fast calls within the gx_icc_is_linear code ? or elsewhere?17:05.36 
chrisl henrys: yep, I will keep an eye out for it17:05.53 
henrys good to get it out before march 1 (rapidly approaching)17:06.16 
mvrhel_laptop Robin_Watts: if you would rather me not poke into this since you have already started, I can back off and keep working on my windoze app. not sure what you have on your plate17:06.37 
chrisl henrys: Doing the mupdf commercial release is trivial - takes only minutes17:06.46 
alexcher Robin_Watts: Yes. Probably this will not be so significant when other errors are fixed.17:06.55 
Robin_Watts mvrhel_laptop: I'd appreciate you looking at it, if you wouldn't mind.17:07.23 
  I can see various places where we can safe some time, but no massive algorithmic fixes.17:07.53 
  s/safe/save/ bah.17:08.01 
mvrhel_laptop Robin_Watts: ok. first I will look at seeing if I can catch the ndes issue17:08.18 
henrys we don't think a profile is needed with 693653?17:08.25 
Robin_Watts henrys: I'll do a profile, but it would be better to profile after the known bugs are fixed.17:09.03 
henrys okay17:09.25 
Robin_Watts I'm gonna have to run away for about 10 minutes in the next 10 minutes or so - anyone want me for anything?17:09.31 
alexcher Robin_Watts: There's another problem there. I've initialized the arrays, i.e. made this code work a little close to the original intent. And another branch broke completely.17:09.39 
kens Not me17:09.39 
henrys Robin_Watts: fine for me.17:09.53 
  ray_laptop:have you inherited smask?17:10.05 
  my initial thinking was alexcher would do the work with help from others. but if you have the cycles ...17:10.50 
Robin_Watts alexcher: This is the "cleaning the buffers" thing?17:10.51 
mvrhel_laptop henrys: before we profile, let me see if I can catch the bug that alexcher mentioned. if the ndes values is wrong, then that would/could give wacky results17:10.57 
henrys mvrhel_laptop: okay17:11.22 
  kens:I'm going to check in the xps code shortly but I'll probably just continue working on it. I've grown fond of it.17:11.53 
mvrhel_laptop he has been assimilated. 17:12.10 
alexcher Robin_Watts: Initializing first 3 elements is enough.17:12.19 
Robin_Watts alexcher: OK. so we should understand/fix that too before I profile.17:13.10 
henrys I have had a chance to dive into the XPS C API - it is very difficult for me to believe folks are going to relatively their fairly simple gdi code without extreme pressure from MS17:13.15 
  s/relatively/change17:13.47 
kens THe XPS API is OK, I had to reaqd it a bit to get the printing going17:13.49 
  ]From my POV I'm done with XPS printingfor now, I cna take an existing XPS file and print it to a designated printer17:14.20 
  SO for a GSPrint, we just need to run xpswrite to generate an XPS file, then send it to the printer.17:14.48 
alexcher Robin_Watts: Currently profiling shows that about 30% of time is spent by LCMS, but this happens because the shading is decomposed into smallest possible fragments.17:15.13 
kens If you wanted a tighter integration we could do something that builds an internal XPS file.17:15.18 
ray_laptop henrys: sorry -- I was working on the changes, but Yes, I took the SMask bug and know how to make it work17:15.27 
kens henrys but I htink an xpswrite device should not be tied to the WIndows API :_)17:15.43 
henrys kens:oh okay can you set arguments though, so we can fix the bugs?17:15.46 
  kens:certainly not17:15.54 
kens henrys, at the moment my code just takeds an existing XPS file17:16.12 
  THere aren't really any arguments to give, other than the printer name17:16.24 
  If you want flourishes we can pop up a printer dialog to set up the printer defaults17:16.41 
chrisl ray_laptop: can I ask you a cust 532 question?17:16.48 
ray_laptop chrisl: sure -- do we need a private chat ?17:17.26 
henrys kens:what I meant about difficult is creating an xps document. It is horribly complex a bizillion objects to do very simple stuff, I don't think that is going to fly unlesss microsoft pulls out gdi17:18.01 
chrisl ray_laptop: No I don't think so - their latest font bug is a broken CFF that the "new" C parser fixes. Are we happy giving them that as a 8.71++ patch?17:18.14 
ray_laptop chrisl: as long as it builds with their pre 9.00, sure17:18.58 
kens henrys, yes certainly creating an XPS file is hard and complex (like writing a PDF file but with no advantages). You can make an internal XPS document comparatively easily using the WIndows API though. But I agree, as long as there is a legacy path, (ie GDI) nobody is going to use the XPS pritn path17:19.12 
ray_laptop chrisl: note that they _are_ moving to 9.0x and so it's only a patch on the older products (that are already heavily patched with fixes that are now in 9.0x)17:19.48 
chrisl ray_laptop: Yep, I've got it integrated and seems to be working. But I was going to leave the "heavy" testing to them......17:19.49 
ray_laptop chrisl: yes, they will run it through their QA process, but if you tell them the nature of the changes and what to check (i.e. all text) then that might help them17:21.14 
chrisl ray_laptop: yeh, I'll do that17:22.11 
henrys kens:can you override the page size? see http://bugs.ghostscript.com/show_bug.cgi?id=691921 comment 517:22.21 
ray_laptop chrisl: you should also let them know that it is already fixed in the newer code, and that we have extensively tested it in 9.0x17:22.43 
  chrisl: which release had this ?17:22.58 
kens henrys We can certainly pop up a print dialog so that the suer can select the appropriate media17:23.00 
chrisl ray_laptop: 9.00 introduced the C CFF parser17:23.25 
kens I haven't gone that far because I wanted to talk to you about how you saw this going. Maybe we can talk at the meeting in 2 weeks17:23.26 
henrys kens:I thought they were aware of that but wanted unattended processing, maybe marcosw remembers.17:23.43 
kens henrys I *think* we cna set up a XPS job ticket, but again I haven't looked at this in detail to see whatr's in it17:24.13 
henrys they can pop up the printer dialog now.17:24.15 
ray_laptop chrisl: OK, thanks. So you can tell them that the 9.06 code they have been testing has this same code. That will help them feel more comfortable17:24.23 
kens henrys, no, they have to set up the prtiner *default* before starting17:24.28 
chrisl ray_laptop: sure will do17:24.40 
kens In our case we would pop up a dialog after starting to print, and user can select settigns for that print job only17:25.09 
  henrys, I'll make a point of reading the docs before the meeting so I can talk sensibly about this again, its been a few weeks since I last looked into this17:25.55 
henrys kens:I imagine the printer default is set once and left alone - then they want batch (no interaction) processing, but I am not 100%17:25.56 
kens henrys, this is the sort of thing I wanted to discuss :-) What exactly we want this 'GSPrint replacement' to be able to do....17:26.32 
  I'll look at the job ticket and see what control we have17:26.51 
henrys mvrhel_laptop: do you think you can start making the mupdf meetings, be nice to have you weigh in since you are working on the windows platform.17:27.15 
  ?17:27.16 
mvrhel_laptop henrys: yes what time are they?17:27.37 
kens 1 hour before this one :-)17:27.46 
henrys an hour before the gs meeting17:27.47 
mvrhel_laptop henrys: sure. I will plan on it17:28.10 
henrys great17:28.17 
  kens:I'll look at the print stuff also.17:29.09 
  kens:I was thinking the printer would be a windows only device and a subclass of xpswrite, but I don't know what sort of minefield that will be.17:31.29 
kens henrys yes I was assuming it would be a winpdws only thing17:31.46 
  I would suggest adding it as a bolt-on to xpswrite, but subclass works too17:32.09 
  I was thinking in terms of having xpswrite create a temp file, then xpsprint sending it to the printer, then deleting the file.17:32.35 
  so xpswrite would remain unchanged17:32.49 
henrys yes it uses the regular outputfile mechanism now17:33.19 
kens THat was what I was thinking. If we write to a temp location we can then print the file and finally delete it17:33.43 
henrys other stuff for the meeting we are 3 minutes over17:33.44 
  you're still plugging away on cm yes?17:34.14 
  kens ^^^17:34.20 
kens henrys yes afraid so17:34.30 
  Currently constructing a test file for all possible combinations of colour spaces, vector and images17:34.46 
  Bascially it works right now, but I haveto test all the edge cases, then start adding enhancements17:35.12 
henrys right17:35.41 
kens I can now test all spaces with vectors and type 1 images17:35.50 
  Still to do imagemasks (don't expect problems) and type 3 and 4 images17:36.06 
  THen I cna look at 12 and 16 bit images, which we handle very badly at present17:36.23 
henrys 693663 is definitely a problem for PXL because the resolution options are really just 300 and 600.17:41.00 
kens Ah crap the print ticket is in XML :(17:41.03 
henrys kens:you were expecting ???17:41.19 
kens expceting XML, hoping for somethign nicer :-(17:41.37 
Robin_Watts It shows a certain consistency that Microsoft are not known for :)17:41.51 
kens henrys 693663 he should set the resolution to 300 then17:41.52 
  Or get more memory17:42.24 
  OK off to make dinner, bye all17:42.55 
henrys chrisl, alexcher: have we really looked into these cairo files to make sure we can't be more lazy about installing pdf14? I guess we did look at that a while back.17:44.41 
  oh wait ray_laptop was going to have banding for all devices and then cleverly mark bands transparent. right?17:45.58 
  so 693663 should say the problem will be fixed when that is done, yes?17:46.49 
chrisl henrys: yes, we did look at spotting such "pointless" transparency, but for a reason which currently escapes me, we concluded it wouldn't work - too slow, for "real" files17:47.22 
  IIRC, one of the files I looked at contained an all opaque softmask, so we'd need to process all the samples to check it, but I think there were other issues with other files17:48.58 
Robin_Watts henrys: ps2write doesn't support banded operation (nor does pdfwrite). hence any magic trickery that ray may do in the clist will not help those cases.17:49.26 
chrisl Robin_Watts: the plan is to use a clist for the transparency flattening for those devices17:49.58 
Robin_Watts so the devices would use the clist without knowing they were using the clist ?17:50.19 
chrisl They'd probably need updated to accept the flattened groups in bands, if required17:51.07 
mvrhel_laptop alexcher: so I am running the test file with a gray device, and I never see a case where ndes is not 1. what do I need to do to see the issue you mentioned? the comments in the bug do not provide any guidance 17:51.10 
henrys well I thought he was going to do something like the pattern clist machinery, but ray_laptop should answer17:51.25 
ray_laptop henrys: I have the 'cleverly mark bands' for transparency. 17:51.56 
henrys the question is will it work with any device?17:52.33 
ray_laptop henrys: and putting in a clist for "other" devices is on the list (when the bitmap exceeds the MaxBitmap setting)17:52.37 
henrys So the answer to 693663 is: it's in the works17:53.26 
  not: go away17:53.35 
chrisl henrys: sure that is covered in 689805?17:55.07 
mvrhel_laptop alexcher: any hints on where and how you see the issue with ndes, would be much appreciated17:55.36 
henrys chrisl: oh okay right, I can shutup now.17:55.58 
ray_laptop henrys: the goal is to work with any raster device. High level devices that render transparency to a memory device will use it17:56.41 
chrisl I guess ken's comment could have made it clearer that we have a plan being tracked under 68980517:56.48 
henrys ray_color:okay so pxcolor will need work to use it.17:57.28 
ray_laptop high level devices that handle transparency directly (that grab the pdf14 compositor actions) won't use it17:57.41 
  henrys: "high level" devices like pxlcolor render transparent pages to a bitmap. The default pdf14 compositor in gdevp14.c snags all drawing operations and the pxlcolor device only gets called at end of page with a full page bitmap17:59.23 
henrys ray_laptop:I take that back pxcolor will work17:59.41 
  oh what you said17:59.46 
ray_laptop henrys: probably will work without mods. Note that this will NOT work without mods to use clist to render large bitmaps that don't use transparency18:00.54 
henrys got it18:01.51 
ray_laptop but to add this for really large bitmaps to something like the display device won't be too bad, but "normal" painting operations to 'vector' devices won't get picked up unless the page uses transparency18:02.18 
alexcher mvrhel_laptop: gs -r87 -sDEVICE=bmp16m -o /dev/null enac1.pdf18:20.07 
  mvrhel_laptop: Just put a breakpoint in gx_icc_is_linear_in_line(). The first break has this problem.18:21.19 
  mvrhel_laptop: I'm using 64-bit Linux. 32-bit Linux is also slow.18:22.04 
mvrhel_laptop ok. so is bmp16m gray?18:23.16 
alexcher mvrhel_laptop: No, it's RGB.18:23.29 
Robin_Watts mvrhel_laptop: No.18:23.34 
mvrhel_laptop ok so ndes is coming out as 3 for me18:23.39 
  which I would expect18:23.47 
  I thought the issue was a gray issue18:24.02 
  I need to head out now unfortunately for about an hour to the kids school18:24.15 
alexcher mvrhel_laptop: But CMS generates only 1 component.18:24.22 
mvrhel_laptop ok let me step in there real quick18:24.42 
  ok. yes. there is an issue 18:25.55 
  I wonder if there is something going wrong because of the 16 bit case18:26.14 
  I will look at this more when I return now that I can see18:26.27 
  thanks alexcher18:26.36 
Robin_Watts paulgardiner: ping18:40.29 
malc_ tor8: hi, hit a very interesting issue today, after some transform_rect (for a very tall argument 10K+ pixels high), the result has a height of 6.. furthermore i can not reproduce it on my home machines (not on x86_64 neither on ppc32), perhaps that rings any bells for you? [oh and futhermore mupdf on that other machine which i will only have access tomorow kills X (the pdf contains only one page, though this one page is rather gargantuan hight wise, this19:07.01 
Robin_Watts malc_: What architecture were you seeing the strange result on ?19:20.41 
  Can we see the file?19:20.50 
malc_ Robin_Watts: x86_64, it's just a pango-view -o moo.pdf output of some ~7.5KLOC source file, since i'm not sure what fonts were embedded the file would have to wait till tomorow19:22.21 
  Robin_Watts: i sortof ruled out optimization problem given that same thing happens with debug and release builds and both gcc and clang produced binaries exhibit same behavior19:23.17 
  pretty weird if anyone would have been interested in my opinion19:23.28 
Robin_Watts malc_: Well, it's probably an overflow of some sort, obviously.19:24.00 
malc_ given that mupdf is not really gcc -Wall friendly it might be19:24.44 
Robin_Watts http://ghostscript.com/~robin/MuPDF-9.apk <- New android build for testing.19:29.18 
malc_ Robin_Watts: btw. any answer to the question i asked few days ago?19:33.34 
  apparently not19:43.46 
ray_laptop mvrhel_laptop: do you have a file laying around that has nested SMasks ? (or Robin_Watts) ?20:15.36 
  I have the test_smask2.pdf rendering correctly now. Two simple changes20:16.39 
  the changes ended up being almost what I thought was needed last week when I dove into this, but finding out where in the mess to put them took the time (PS debugging is much harder than C, so I spent too much time tracing the C code)20:18.08 
  I sure am glad user jobs jump in ahead of commit tests :-)20:31.15 
  letting the cluster tell me what my changes break20:44.56 
Robin_Watts ray_laptop: Excellent!20:52.18 
  No, I don't have any such files (that I know of), sorry.20:52.30 
ray_laptop Robin_Watts: np. The cluster pointed me to some differences that I need to investigate. I'm hoping that many will be progressions, but that is just my optimistic nature ;-)20:55.24 
Robin_Watts ray_laptop: Have you bmpcmp'd ?21:03.55 
mvrhel_laptop ray_laptop: I can't find the bug that had the softmask in softmask file21:09.59 
  I think it is in the data base though21:10.07 
  the regression suite I mean21:10.17 
  ok. so the issue with ndes is a pdf14 color chameleon issue 21:14.33 
  As I suspected21:14.41 
  should be easy to fix this21:15.02 
  bbiab21:15.05 
ray_laptop I have the file Bug690535.pdf that shows problems. Starting with that one...21:18.41 
  time for lunch...21:19.01 
Robin_Watts ray_laptop: Did you run bmpcmp ?21:19.39 
xreal Can I convert fonts to paths and keep copying chars? Acrobat can do I this.21:40.51 
 Forward 1 day (to 2013/02/27)>>> 
ghostscript.com
Search: