| <<<Back 1 day (to 2013/03/07) | 2013/03/08 |
ray_laptop | yet | 00:00.12 |
| darn. two separate commits, and it's doing the trivial makefile fix first :-( Should have marked that CLUSTER_UNTESTED -- if that even still works) | 00:05.07 |
| mvrhel_laptop: looks like that didn't break anything, so I committed it | 00:05.52 |
Robin_Watts | tsdgeos: Wow. I wasn't expecting it to be in that one. | 00:45.42 |
ray_laptop | have to go now. I'll check my results from the regressions in a few hours (daughter's choir concert) | 00:52.58 |
tsdgeos | Robin_Watts: yeah :/ | 01:12.30 |
Robin_Watts | I'll need to discuss it with chrs tomorrow, but one idea occurs to me. | 01:13.03 |
| http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=58937f6debfbed7675a0ce5cb8d0aa629e3fa7b8 | 01:13.11 |
| That's the diff. | 01:13.15 |
| At various points in that diff we do return(gs_error_undefined) | 01:13.30 |
| There is a fairly strong possibility that it's one of those points going wrong. | 01:13.48 |
| so I'd be tempted to try replacing each one of those in turn with return(-1000) (for the first) return (-1001) for the second etc. | 01:14.24 |
| Then rebuild, rerun, and the error code you get will tell us what line the error is being raised at. | 01:14.45 |
| Does that make sense? | 01:14.49 |
| There are around 20 of them in that commit. | 01:15.03 |
| Or you could just grep the source. | 01:15.09 |
| (grepping the source would catch any other cases too) | 01:15.25 |
tsdgeos | Robin_Watts: can try tomorrow, need to get some sleep now | 01:18.57 |
| 2am here | 01:19.00 |
| will kill you updated | 01:19.04 |
Robin_Watts | 1:15am here :) | 01:20.08 |
| Thanks. | 01:20.10 |
ray_laptop | OK. I bit the bullet and committed the pdf14 clist optmization | 07:18.14 |
| not sure about whether or not the intermediate commits might result in regressions, but together they are OK. | 07:19.49 |
marcosw | ray_laptop: did you intentionally push a commit from May 2012? | 07:26.13 |
mvrhel_laptop | good night all | 07:33.03 |
ray_laptop | marcosw: which one? the Optimize PDF 1.4 transparency, then, yes | 08:36.40 |
chrisl | kens: did Miles send the hotel details for Miami? | 08:41.47 |
kens | Yes, its the Sherton, just a moment | 08:41.58 |
| http://www.starwoodhotels.com/sheraton/property/overview/index.html?propertyID=3620&EM=VTY_SI_3620_MIAMIAIRPORT_PROP_OVERVIEW | 08:42.18 |
| mail sent on 17th January | 08:42.38 |
chrisl | Ah, cool, thanks | 08:42.43 |
Robin_Watts | Morning chrisl | 10:10.42 |
chrisl | Morning Robin_Watts | 10:10.54 |
Robin_Watts | Did you follow the discussions with tsdgeos yesterday ? | 10:11.37 |
chrisl | Yes, can't reproduce it, can't get to freedesktop.org to download libspectre. I can't think of anything I added that would cause the locale to make a difference | 10:12.20 |
Robin_Watts | It does seem bloody odd. | 10:13.15 |
chrisl | BTW, I could only find ~5 places I added a gs_error_undefined return value...... | 10:13.40 |
| And I think all of those were replacing e_undefined | 10:14.06 |
kens | chrisl ther re-organisation of the directory. In ghostscript.vcproj I see (for example) RelativePath="\base\gdevpdf.c" which doesn't seem right to me. The build will work I believe buyt the solution won't open the file from teh solution explorer because the path is incorrect. | 10:18.16 |
chrisl | kens: I thought I fixed those..... | 10:18.40 |
kens | chrisl I could be wrong but I updated my checkout only this morning | 10:18.57 |
| The project file has a date of 4/3/2013 | 10:19.09 |
chrisl | Let me fire up winblows and see | 10:19.15 |
tor8 | Robin_Watts: chrisl: kens: what time are you arriving tomorrow? | 10:21.54 |
kens | tor8 we kand at 17:40 local time | 10:22.04 |
| but robin will be picking up a car and expectsz to be later at the hotel | 10:22.27 |
vtorri | tor8: ping | 10:22.27 |
tor8 | kens: I'm landing at 18.20 so if you're not all starving perhaps meet up for dinner at the hotel? | 10:22.38 |
| vtorri: hi. | 10:22.51 |
kens | tor8 sounds good to me, we will have to wait for RObin and co :-) | 10:22.58 |
vtorri | tor8: hey | 10:22.59 |
Robin_Watts | cool. | 10:23.10 |
vtorri | tor8: have you tried to compile mupdf with -Wextra -Wshadow ? | 10:23.17 |
tor8 | vtorri: no, I have not. | 10:25.46 |
chrisl | kens: I made the changes to the VS project, but they went awol somewhere..... give me a few minutes | 10:26.03 |
kens | chrisl not a great problem, but it would be good to get fixed | 10:26.19 |
vtorri | not sure you want to solve all the warnings they produces | 10:26.26 |
| but you can maybe have a look at them | 10:26.41 |
| I also use aother useful warings : | 10:27.09 |
| -Wpointer-arith | 10:27.18 |
| -Wdeclaration-after-statement | 10:27.36 |
| -Wstrict-prototypes | 10:27.44 |
| it allows me to find : | 10:28.43 |
| int fz_javascript_supported(); | 10:28.45 |
| without void in () | 10:28.52 |
| while all other functions in mupdf have void in that case | 10:29.12 |
Srini | Hi all | 10:29.13 |
| anyone to help me on mutool? | 10:29.32 |
| I am facing strange problems extracting fonts with mutools | 10:29.46 |
| not getting valid ttf files everytime.... | 10:29.59 |
chrisl | kens: try it now..... | 10:30.54 |
kens | chrisl need a minute myself now :-) | 10:31.06 |
Robin_Watts | Srini: Tell us more. | 10:31.33 |
tor8 | Srini: embedded fonts in PDF files are not always truetype, they can be opentype, type1, cff and other formats too | 10:31.37 |
| Srini: and they're often cut down subsets which only contain the bare minimum number of glyphs needed for the document | 10:32.02 |
Srini | hmmm not a problem... I can convert them later to ttf... | 10:32.03 |
kens | Srini I'll be intrigued to see you convert a type 3 font | 10:32.16 |
Srini | kens, :) | 10:32.27 |
chrisl | Srini: Also, if the TTF is a subset, they can cause "normal" TTF tools to have problems | 10:32.53 |
Srini | I was extract fonts using pdf2htmlEX.. the fonts were correct... the same pdf mutool saved ttf were not valid files... | 10:33.24 |
| I was wondering! what could be going wrong... | 10:33.43 |
kens | Hard to say wihtout seeing an example | 10:34.09 |
| chrisl that looks correct now | 10:34.57 |
tor8 | mutool extract just dumps the exact contents of the embedded font file | 10:34.59 |
Srini | tor8, does that require some post processing? | 10:35.21 |
chrisl | kens: there may be files still referenced in wrong place. If you find one, just ping me, and I'll move it | 10:35.30 |
kens | chrisl I'll let you know :-) | 10:35.43 |
Srini | This is what pdffonts shows me... http://pastie.org/private/76mzb5eebu6krjesvgubdq | 10:35.46 |
tor8 | Srini: the ABCDEF+ prefixes indicate that the fonts are subset | 10:36.33 |
| so as chrisl said, quite probable that normal ttf tools will have problems with them | 10:36.54 |
Srini | tor8, are there other tools in that case who can save them? | 10:37.23 |
malc_ | Robin_Watts: have you ruled out scanf with locale dependent format strings? | 10:37.28 |
tor8 | Srini: fontforge can open subset fonts. the bigger question to ask is why would you want to use a subset font? | 10:38.07 |
chrisl | malc_: in the libspectre issue? | 10:39.44 |
malc_ | chrisl: yes, 9.07 has some sscanfs with %g (compared to 9.06) and that's locale dependent | 10:40.53 |
| just a shot in the dark | 10:41.07 |
vtorri | do you guys know VFlib ? | 10:41.41 |
kens | chrisl bench.c has a RelativePath of "..\gs\base\bench.c" which I htink works, but seems daft | 10:43.10 |
chrisl | kens: I didn't change that..... | 10:43.35 |
kens | I guess not, but it still seems silly | 10:43.57 |
Robin_Watts | malc_: I have not ruled that out - in fact that was my first thought. | 10:45.18 |
chrisl | malc_: But I don't see any *new* instances of sscanf added in that commit - and the ones that already exist, are only used when integrating a commercial font scaler library | 10:46.06 |
Robin_Watts | but... I hadn't found any such strings, and the reported commit does not have any new ones, as chrisl says. | 10:46.32 |
chrisl | kens: there you go.... | 10:47.41 |
kens | :-) Thanks | 10:47.51 |
malc_ | index 129361c..5e45c35 100644 | 10:47.56 |
| --- a/gs/base/gdevpdf.c | 10:47.56 |
| +++ b/gs/base/gdevpdf.c | 10:47.56 |
Robin_Watts | pdfwrite has a few. cups has some %f's | 10:49.56 |
chrisl | I didn't change pdfwrite in that FAPI commit........ | 10:50.22 |
Robin_Watts | plmain.c has some | 10:50.54 |
chrisl | Not gs.... | 10:51.10 |
Robin_Watts | chrisl: Indeed. I was just listing all sscanfs of %f and %g that appear in the diffs between 9.06 and 9.07 | 10:51.35 |
chrisl | I *really* hate this behind the scenes localization, it should never have been done in glibc like that :-( | 10:52.27 |
| I also hate f*cking libtool builds!! They are a complete pain in the arse! | 10:58.58 |
Robin_Watts | Morning tsdgeos | 11:21.15 |
tsdgeos | morning | 11:21.38 |
chrisl | tsdgeos: I'm trying to work with the spectre-test tool, but I get an "undefined" error out when I have it linked with (systems) 9.06 - and I can't remember how to tell gdb to load a specific shared lib, instead of the system one.... | 11:27.42 |
tsdgeos | chrisl: LD_LIBRARY_PATH= should help | 11:29.17 |
| LD_LIBRARY_PATH=/path/to/my/lib | 11:29.26 |
| actually not | 11:29.30 |
| LD_LIBRARY_PATH=/path/to/the/folder/holding/the/lib | 11:29.37 |
chrisl | tsdgeos: works on the command line, not in gdb :-( | 11:29.47 |
tsdgeos | chrisl: do this | 11:29.53 |
| LD_LIBRARY_PATH=/path/to/the/folder/holding/the/lib gdb blabla | 11:30.01 |
| should work | 11:30.04 |
tsdgeos | gives more cpu power to the VM | 11:31.35 |
chrisl | Nope, doesn't work. I wonder if it's because I'm using ddd, rather than gdb directly | 11:32.34 |
tsdgeos | may be, haven't used ddd in a long time | 11:33.16 |
malc_ | chrisl: info gdb --index solib-search | 11:39.51 |
tsdgeos_vm | it is weird, i can't step *in* when getting to gsapi_run_string_continue even if i did "make sodebug" | 11:40.09 |
chrisl | malc_: nope, still ain't working :-( | 11:43.24 |
malc_ | chrisl: what exactly have you done? | 11:44.22 |
chrisl | malc_: at the gdb prompt: set solib-search-path /path/to/my/debug/build | 11:45.09 |
malc_ | chrisl: what is `show sysroot' s output? | 11:45.33 |
chrisl | The current system root is "./usr3". | 11:46.19 |
| I set it to a non-existent place as a second attempt.... | 11:46.50 |
Robin_Watts | Ah. New ndk out, and they've fixed the rebuild bug. thank god for that. | 11:52.41 |
tsdgeos | how do you guys build a proper debug version of libgs? | 12:01.00 |
| make sodebug is still giving me -O2 | 12:01.07 |
| and no -g | 12:01.25 |
chrisl | tsdgeos: we almost never debug with the so build, we almost always use a "monolithic" build - I also just noticed CFLAGS are wrong.... | 12:02.17 |
| tsdgeos: any idea how I can get Ghostscript stdout/stderr messages from libspectre? | 12:15.53 |
| Huh, "Unrecoverable error: undefined in obj" | 12:22.07 |
tsdgeos | chrisl: not idea how stdout/stderr is forwarded sorry :-/ | 12:23.14 |
Robin_Watts | chrisl: That sounds right. He was getting -21 which is undefined. | 12:23.22 |
chrisl | Ah, that's because I was trying to run a PDF, if I run a Postscript file, it seems okay | 12:25.54 |
| tsdgeos: so, I can run Postscript files through libspectre, with Ghostscript 9.07 and the locale set to es_ES.utf8 | 12:30.20 |
| Robin_Watts: can you get tohttp://www.freedesktop.org ? | 12:37.32 |
kens | fails for me 'connection reset' | 12:37.58 |
chrisl | Well, I just get "unable to connect" - I guess it's really down..... | 12:38.49 |
| Well, that's basically all I can do - the version of libspectre I can access seems to work okay with 9.07 and current HEAD, so..... | 12:40.35 |
tsdgeos | chrisl: can you? | 12:42.40 |
| chrisl: can you try running them thorugh evince or okular instead of libspectre directly? | 12:42.55 |
Robin_Watts | tsdgeos: Can you get to freedesktop.org ? | 12:43.35 |
tsdgeos | nah seems to be down again :/ | 12:43.57 |
| unfortunately freedesktop is not the most reliable site out there | 12:44.12 |
Robin_Watts | tsdgeos: Did you try my suggestion from last night? | 12:44.36 |
| grep the source for gs_error_undefined, specifically for places where it is used. | 12:45.03 |
| Then replace it with -1001, -1002, -1003 etc. | 12:45.16 |
chrisl | tsdgeos: I cannot get evince to use my libgs.so so no, I cannot | 12:45.28 |
tsdgeos | Robin_Watts: changing the errors of the diff? not yet, i was trying debuggning, but i'm realizing it's stupid, that intepr code is too hard for a newbie like me to follow | 12:45.34 |
chrisl | Robin_Watts: there are *loads* of places where we return undefined! | 12:45.57 |
Robin_Watts | right, and this will get us the individual one. | 12:46.18 |
tsdgeos_vm | sorry isp disconnected | 12:46.45 |
tsdgeos | Robin_Watts: changing the errors of the diff? not yet, i was trying debuggning, but i'm realizing it's stupid, that intepr code is too hard for a newbie like me to follow | 12:47.05 |
chrisl | Frankly, as far as I can see, libspectre is just fine with gs 9.07, so unless there's more information we can get, I can't debug the problem | 12:47.30 |
kens | tsdgeos you shouldn't try understanding GS without a lot of time, a large ball of string, and possibly some prescription drugs | 12:47.50 |
tsdgeos | chrisl: you are right, i can't reproduce the problem if i run plain libspectre, only with okular/evince (that use libspectre underneath), it is really weird, i'll try to see why that happens | 12:50.00 |
chrisl | tsdgeos: if you can find how evince is calling libspectre, and suggest a (small!) patch to spectre-test.c to emulate that, we might get somewhere | 12:52.43 |
tsdgeos_vm | sure, i'll try that | 12:54.43 |
| thanks for the help so far | 12:54.47 |
| i'll give you guys a ping when i have a testcase for spectre that fails | 12:55.06 |
Robin_Watts | tsdgeos_vm: We are away for part of next week, so bear with any delays. | 13:05.05 |
| Online checkin time. | 13:25.24 |
kens | aha yes | 13:25.49 |
tsdgeos_vm | amazing | 13:43.27 |
| so i have the same exact code | 13:43.30 |
| that works | 13:43.32 |
| but if i do | 13:43.34 |
| QApplication a(argc, argv); | 13:43.43 |
| it stops working | 13:43.46 |
| :D | 13:43.47 |
| QApplication is doing something that upsets someone | 13:44.01 |
| chrisl: do you want that test code? | 13:45.00 |
chrisl | Sure, but not if it depends on Qt! | 13:45.48 |
tsdgeos | well, if you don't have the Qt part | 13:46.27 |
| it works :D | 13:46.29 |
| i can probably add a gtk dependency if you want | 13:46.37 |
| since evince has the same problem | 13:46.45 |
chrisl | Well, that suggest it's not a ghostscript problem | 13:47.01 |
tsdgeos_vm | well | 13:47.06 |
| i'd disagree there | 13:47.11 |
| it was working with gs9.06 | 13:47.17 |
| something changed in gs9.07 that made it not work | 13:47.36 |
chrisl | That doesn't mean gs is wrong..... | 13:47.50 |
tsdgeos_vm | agreed | 13:48.03 |
| doesn't mean it isn't either | 13:48.11 |
chrisl | But throw me the Qt test code, if I can't get that to work, we can try a gtk one | 13:48.28 |
tsdgeos_vm | i just want to know what changed, so we can workaround it even at the spectre level if changing gs is out of question | 13:48.56 |
| http://paste.kde.org/~tsdgeos/690560/ | 13:49.27 |
| http://paste.kde.org/~tsdgeos/690566/ | 13:49.48 |
| put those in a folder | 13:49.52 |
| qmake | 13:49.54 |
| make | 13:49.55 |
| ./binary file.ps | 13:50.02 |
| and you should be getting the error | 13:50.21 |
| if you comment out the QApplication line | 13:50.26 |
| it'll be fine | 13:50.28 |
kens | network not co-operating, rebot time | 13:55.47 |
chrisl | tsdgeos_vm: I don't get a binary out, only an object file | 13:58.21 |
tsdgeos_vm | chrisl: you should get a binary with the name of the folder you created, is that qt4 or qt5? qt4 i assume, no? | 13:58.54 |
chrisl | Yes, qt4 - ubuntu package | 13:59.20 |
tsdgeos_vm | that is weird | 13:59.40 |
| ah wait | 13:59.42 |
| the second file | 13:59.44 |
| has to be named something.pro | 13:59.50 |
| for the qmake command to work | 13:59.54 |
| sorry | 13:59.56 |
| rename, run qmake, make | 14:00.07 |
chrisl | Nope, http://paste.kde.org/~tsdgeos/690578/ | 14:01.38 |
tsdgeos_vm | ok, do this | 14:02.05 |
| have just the .cpp file | 14:02.09 |
| kill everything else | 14:02.12 |
| qmake -project; qmake; make | 14:02.17 |
| this should try to build a binary but fail to link | 14:02.26 |
| then just add the "LIBS += -lspectre" to the resulting .pro file | 14:02.38 |
chrisl | I also had to add -lgs - but it built | 14:03.47 |
tsdgeos_vm | good :-) | 14:03.54 |
| can you repro the error? | 14:04.02 |
chrisl | give me sec | 14:04.10 |
tsdgeos_vm | fwiw if i do gtk_init(&argc, &argv); instead of QApplication a(argc, argv); it also fails | 14:06.13 |
chrisl | tsdgeos_vm: nope, doesn't fail | 14:09.03 |
| Oh, hang on....... | 14:09.12 |
| tsdgeos_vm: are you building gs as we ship it, or are you using shared third party libs? | 14:12.17 |
tsdgeos_vm | chrisl: i'm running ./autogen.sh in the gs folder of the git | 14:12.56 |
| and then make sodebug | 14:13.00 |
chrisl | Okay, good. And what locale(s) failed for you? | 14:13.23 |
tsdgeos_vm | not sure if that is first or second :D | 14:13.23 |
| ca_ES.UTF-8 that is the one i'm using | 14:13.56 |
| i can try some other if you want | 14:14.04 |
chrisl | I'm using es_ES.utf8 - I guess they're basically the same? | 14:14.39 |
tsdgeos_vm | different language | 14:15.08 |
| but locale should be the same | 14:15.12 |
| let me make sure | 14:15.14 |
| yes, i get the fail with es_ES.UTF-8 too | 14:15.44 |
| http://paste.kde.org/~tsdgeos/690584/ | 14:16.29 |
| maybe i should share this eps file? | 14:17.05 |
| in case it's triggering something special? | 14:17.15 |
chrisl | That's possible - is it private? | 14:17.32 |
tsdgeos_vm | https://bugs.kde.org/attachment.cgi?id=77770 | 14:18.08 |
| nope | 14:18.10 |
| chrisl: âââ | 14:18.12 |
chrisl | bingo! | 14:18.46 |
malc_ | excitement of the audience is pallatable | 14:19.51 |
tsdgeos_vm | sorry for not providing the file earlier | 14:21.15 |
| newbie mistake | 14:21.18 |
chrisl | tsdgeos_vm: I have found the error - and this is *not* in new code!! | 14:34.49 |
tsdgeos | :?¿ | 14:35.04 |
| but triggered by the new code? or? | 14:35.12 |
chrisl | Nope, it's used in the same way, with the same data as in 9.06 - the only difference is that the source file moved from "psi" to "base" | 14:35.54 |
tsdgeos | ouch | 14:36.34 |
| that's weird, different compilation flags from folder to folder? or why did it work in 9.06? | 14:37.00 |
chrisl | <shrug> as far as I can see, it should work just the same - i.e. is *should* cause a problem in 9.06, too | 14:37.53 |
tsdgeos_vm | chrisl: if i go to a971121e9e50c672908f1b3185f42d497adf0b02 in git, it works for me | 14:38.35 |
chrisl | tsdgeos_vm: yeh, I've no idea why.... | 14:39.56 |
tsdgeos | anyway i'm happy enough if you know how to fix it going forward | 14:42.07 |
| is it hard to fix now that you found it? | 14:42.15 |
Robin_Watts | chrisl: eh? Your source file move was POST 9.07 release, right? | 14:42.39 |
chrisl | Robin_Watts: this was part of the FAPI enhancement - FAPI moved from psi into base | 14:43.11 |
Robin_Watts | oh, right. | 14:43.20 |
| So, what's the problem? | 14:43.35 |
chrisl | tsdgeos_vm: it's not hugely hard to fix, but it will take me a little time. For safety you'd be safe to use the "POSIX" locale during calls to libspectre/gs | 14:44.10 |
| Robin_Watts: when we serialize a type 1 font, we use sprintf() with %f to handle floating point numbers | 14:44.44 |
Robin_Watts | Ah. | 14:46.16 |
| so... that is indeed odd that it worked before but not now. | 14:46.37 |
tsdgeos | chrisl: not sure what you mean with 'use the "POSIX" locale during calls to libspectre/gs' | 14:47.11 |
tsdgeos_vm | you mean change the locale back and forth? | 14:47.29 |
chrisl | Yes, especially as the CFF parser suffered from something similar, and it was also in psi... | 14:47.32 |
| tsdgeos_vm: yes - as a workaround | 14:47.43 |
Robin_Watts | tsdgeos: Change libspectre to set LANG to POSIX (or C) before calling gs. | 14:47.49 |
tsdgeos_vm | ok, i'll give it a try | 14:48.17 |
| not sure the spectre maintainer will like it | 14:48.23 |
| but if it works, it works :D | 14:48.27 |
chrisl | I will fix it in gs as soon as I can, but then the next release in August | 14:49.04 |
tsdgeos | right, not that spectre releases much more often :D | 14:49.51 |
chrisl | tsdgeos_vm: well, you can also do it around libspectre calls, so libspectre doesn't have to change...... | 14:50.31 |
tsdgeos_vm | true | 14:51.17 |
Robin_Watts | remembers to download maps to his phone, for the first time ever. | 14:51.30 |
kens | I see the hotel has a shuttle but it doesn't seem to say if it needs to be summoned or just turns up | 14:56.49 |
chrisl | Hmmm, nasty, hacky, quick'n'dirty solution is tempting me - time for a hot beverage, I think...... | 14:59.19 |
Robin_Watts | chrisl: which is? | 15:03.28 |
chrisl | Robin_Watts: search the resulting string for a ',' and replace it with a '.' | 15:04.50 |
Robin_Watts | ew! Do other locales have other possibilities? | 15:05.24 |
chrisl | Not that I know of - it's cost vs benefit, given the type of numbers we see there | 15:06.05 |
kens | write own sprintf. I wonder if GS already has one | 15:06.37 |
chrisl | kens: I haven't found one yet - that's what I would say was the "proper" solution | 15:07.06 |
kens | I hate to say it but there may be other places with this hidden assumption | 15:07.38 |
chrisl | Almost certainly, there are, yes | 15:07.56 |
kens | Well, its probably my area, you cna open a bug for me if you like | 15:08.25 |
Robin_Watts | Writing a portable ftos ? | 15:09.18 |
kens | Well given that pdfwrite/ps2write would almost certainly be the biggest users, yes | 15:09.48 |
Robin_Watts | no, I mean, we can probably avoid a fully fledged sprintf, and get away with a simpler ftos. | 15:10.22 |
kens | Oh yes, that was more or less what I was thinking | 15:10.35 |
Robin_Watts | It's easy enough to do if we hardwire precisions etc. | 15:10.47 |
henrys | is this a buffer overflow? | 15:10.49 |
kens | I'm fairly sure we don't need a full sprintf | 15:10.51 |
Robin_Watts | henrys: No, it's a locale issue. | 15:11.02 |
kens | henrys no, locale problem . or , for separator | 15:11.02 |
Robin_Watts | In spanish PI is "3,141..." not "3.141..." | 15:11.26 |
henrys | ah wonder if snprintf does it right. | 15:11.46 |
chrisl | snprintf is affected by locale, too | 15:12.04 |
Robin_Watts | we could update the readers to cope with , as a decimal point? | 15:12.41 |
kens | I think there are some cases where we already did that | 15:13.08 |
henrys | oh I see you don't want the locale effect. | 15:13.12 |
kens | henrys correct | 15:13.20 |
| PDF and PostScript use '.' necer ',' | 15:13.32 |
tsdgeos | that'd be a bit weird, probably the format defines . as the *correct* thing, no? | 15:14.00 |
chrisl | tsdgeos: yes, we don't want to be handling , for these cases - it's wrong | 15:14.41 |
| This is why (I say again) I *hate* the way localization was foisted on us by glibc! | 15:15.32 |
henrys | set locale before and restore after sprintf? | 15:16.27 |
chrisl | henrys: Windows won't like that | 15:16.50 |
paulgardiner | Code our own, based on the BSD implementations? | 15:17.32 |
henrys | wow I just used sprintf out the wazoo in the xpswrite driver and , probably won't be okay. | 15:17.53 |
chrisl | paulgardiner: IIRC, the BSD implementation of ftoa using sscanf | 15:18.18 |
tsdgeos | paulgardiner: that's what we ended up doing in spectre with strrod, copy it from somewhere :D | 15:18.36 |
| strtod | 15:18.40 |
Robin_Watts | can we not just setlocale(C) when we start up ? | 15:18.55 |
chrisl | Robin_Watts: we do, at the app level, not the lib level | 15:19.12 |
paulgardiner | chrisl: I meant take on the whole lot and remove the localisation | 15:19.22 |
Robin_Watts | can we not just setlocale(C) when we start up at the lib level? | 15:19.29 |
tsdgeos | Robin_Watts: that's going to make all my apps unhappy :D | 15:19.36 |
chrisl | Robin_Watts: Windows won't like that | 15:19.45 |
Robin_Watts | chrisl: why not? | 15:19.55 |
henrys | what is the windows issue? | 15:20.02 |
paulgardiner | Would also mean we could trust snprintf to give a sensible result even on Windows | 15:20.03 |
chrisl | Robin_Watts: Does windows have setlocale? | 15:20.17 |
kens | I think so one minute | 15:20.27 |
| We cna always add a WIndows dummy version | 15:20.36 |
Robin_Watts | It does | 15:20.45 |
tsdgeos | Robin_Watts: still, if my application is running in catalan i would think it's a bug that libgs decides to change the locale under my feet | 15:20.52 |
Robin_Watts | ever since windows 95 at least. | 15:21.03 |
chrisl | tsdgeos: we'd set it back again | 15:21.08 |
tsdgeos | ah, ok | 15:21.16 |
| i was reading Robin_Watts suggestion as to do it once at startup | 15:21.28 |
kens | I guess we would have to 'wrap' all teh API calls | 15:21.54 |
chrisl | tsdgeos: we'd never get away with that! | 15:22.03 |
tsdgeos | probbly this does not help license wise, no? http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00022.html | 15:22.55 |
chrisl | I think it might be easier to have a gs_sscanf() which sets and puts back the local around calls to sscanf() | 15:23.12 |
tsdgeos | btw, freedesktop is up again | 15:23.32 |
Robin_Watts | chrisl: depends on how expensive the set/reset operation is. | 15:24.10 |
| Can anyone see how we query the current locale ? | 15:24.20 |
chrisl | setlocale | 15:24.31 |
| It returns the current setting as well | 15:24.56 |
| setlocale( <category>, NULL ) returns the current locale for <category> | 15:25.52 |
Robin_Watts | calls credit card companies to tell them I'm going to the states. | 15:31.19 |
paulgardiner | Robin_Watts, tor8: fix for bug #693664 on paul/master | 15:43.23 |
| Robin_Watts, tor8: ah no sorry, somehow that has broken selection of the last added annotation. | 15:48.59 |
henrys | I'd be surprised if I get out of Denver Saturdayâ¦. I've been a Skype talking head at a meeting before and it worked okay. | 15:49.25 |
chrisl | henrys: depends on the wifi in the meeting room! | 15:50.37 |
kens | what is hte problem henrys, weather ? | 15:54.45 |
henrys | 8 - 14 inches of snow predicted ⦠| 15:55.18 |
kens | Yikes, OK I se | 15:55.26 |
Robin_Watts | henrys: And denver airport isn't geared up for that ? | 15:58.06 |
henrys | oh I'm sure it'll be fine as soon as the storm passes over the question is getting out on Saturday. | 16:03.05 |
| this will be "blizzard like" which usually grounds the flights | 16:04.42 |
Robin_Watts | right. | 16:04.52 |
| what time are you supposed to be flying on saturday? | 16:05.07 |
henrys | but it could be milder - very difficult to predict weather here on the front range. | 16:05.21 |
| get there around 4:00 pm | 16:05.34 |
Robin_Watts | is the storm scheduled for friday night or for "some time saturday" ? | 16:05.48 |
henrys | http://www.wunderground.com/US/CO/039.html?MR=1 | 16:06.24 |
Robin_Watts | The next winter storm is expected to move into north central and northeastern Colorado late today and continue producing snow into Saturday evening. The Heaviest Snow is expected from Midnight Tonight into Saturday afternoon for the mountains. The Plains will see heavy snow on Saturday. | 16:06.53 |
henrys | we actually get our heaviest snows this time of year - just before or start of spring. | 16:08.00 |
| kens:grace and peace? | 16:12.46 |
| I'm going to check if I can fly out today. | 16:18.44 |
ray_laptop | chrisl: so this LOCALE stuff affects sprintf as well as sscanf ? | 16:37.21 |
chrisl | ray_laptop: yes, we end up with a string with ',' for the point - i.e. "3,14" | 16:37.57 |
ray_laptop | YUK. | 16:38.25 |
henrys | why don't we trip over this all the time with pdfwrite? | 16:38.31 |
chrisl | <shrug> I find it incomprehensible that there isn't a standard, trivial way to avoid the localization | 16:39.17 |
ray_laptop | chrisl: yes, like a sPLAINOLDORIGINALprintf | 16:39.53 |
chrisl | ray_laptop: TBH, my preference would have to keep sprintf and co as they are, and a lsprintf (or something) *added* which used the locale | 16:40.51 |
ray_laptop | chrisl: you mean that has a locale value as an arg ? | 16:41.45 |
chrisl | ray_laptop: no, just that used the current locale. Windows (and BSD it seems) has sprintf_l which takes a locale as a arg | 16:42.51 |
ray_laptop | IMHO, it was a mistake for glibc to change the behaviour of an existing function (*printf) to use LOCALE and not have changed the name | 16:43.02 |
marcosw | henrys: is there a reason that both of your cluster nodes are down? | 16:43.07 |
chrisl | ray_laptop: I agree, I find that appalling :-( | 16:43.23 |
| ray_laptop: more to the point, existing "standard" functions | 16:43.55 |
henrys | macrcosw:oh I did have a power failure yesterday⦠i was wondering why the office was so quiet ;-) | 16:44.06 |
ray_laptop | they probably had a committee deciding it and it had a lot of vociferous Europeans on it | 16:44.27 |
henrys | marcosw:they are starting up | 16:44.48 |
ray_laptop | henrys: your machines don't automatically start when power is restored ? | 16:44.54 |
chrisl | ray_laptop: well, it certainly wouldn't have been us - we *never* speak anything other than English! | 16:45.18 |
henrys | ray_laptop:sometimes, I should look at it. | 16:45.23 |
ray_laptop | henrys: that's a BIOS setting. Since you are expecting more bad weather, maybe you should set it for auto start before leaving | 16:45.45 |
marcosw | henrys: and on your macpro it's a setting in System Preferences -> Energy Saver | 16:47.04 |
henrys | I notice amazon instance prices are dropping ⦠I'm happy to give up my nodes ... | 16:47.05 |
| marcosw:okay I'll set it. | 16:47.23 |
| ray_laptop:nice to see that band complexity stuff ousted! | 16:48.41 |
marcosw | henrys: I've looked at aws again, but it's still not cost effective. If they were willing to bill in less than hourly increments or if we were willing to use an hour for each cluster run it might make sense. | 16:50.45 |
| I've also considered just using aws for the "weekly" regression runs that occur just before a release, but sine we want to have users look at the release candidate for a while there isn't any real hurry to get those done. | 16:51.32 |
henrys | cost is not the only issue. Availability, I think all of us are too lazy to bill for power, etc. | 16:52.48 |
ray_laptop | henrys: I agree. At least now we get REAL per band info, no matter how many bands | 16:53.12 |
marcosw | we should discuss it at the staff meeting (either in person or via Skype :-( ) | 16:53.41 |
ray_laptop | kens: that dict_find_string zcolor.c bug doesn't look fun | 16:55.01 |
henrys | marcosw:okay there is also scalability ⦠I think we are really out of space right? | 16:55.11 |
| I mean a place to put new machines not disk space. | 16:55.49 |
marcosw | henrys: I was going to bring a couple of my machines with me to Miami to give to mvrhel_laptop to take back to Seattle. | 16:56.43 |
| I currently have seven at my house, so I figure I can spare some. | 16:57.09 |
mvrhel_laptop | whoa | 16:57.15 |
ray_laptop | henrys: I have room for at least a couple of machines in my office, and the rent includes an electricity surcharge, but I don't actually get metered | 16:57.16 |
mvrhel_laptop | seven | 16:57.18 |
ray_laptop | I'd have to get rid of some old machines to make room, but I should visit the e-waste site anyway | 16:58.22 |
marcosw | three are 'temporary'. they are living my garage, but probably can't stay there during the summer (my garage doesn't have air conditioning and we routinely have 100 degree days). | 16:58.24 |
ray_laptop | I keep one old machine around with a Windows and linux (ancient) dual boot to do performance testing closer to customer's old machines | 16:59.13 |
henrys | does mvrhel_laptop and his wife no about this plan of yours? | 16:59.54 |
chrisl | Robin_Watts, kens: ahem, lookup ensure_dot() in gs/psi/iutil.c........ | 17:00.15 |
marcosw | henrys: electricity is cheap in Seattle, so it's for the greater good. | 17:00.23 |
ray_laptop | although AC in my office is a problem. The thermostat is in a different office, and so when it's comfortable there, it is quite warm (85 F) | 17:00.49 |
mvrhel_laptop | My garage never gets hot here | 17:01.13 |
| A little cool though in the middle of winter | 17:01.32 |
henrys | mvrhel_laptop: you probably need more than wireless. | 17:02.55 |
marcosw | mvrhel_laptop: cool is okay, but what about the damp? :-) | 17:02.59 |
kens | chrisl so there is one tehn | 17:03.08 |
ray_laptop | chrisl: that doesn't quite look like what we want (to force a '.' on an integer) | 17:04.05 |
marcosw | henrys: I run the nodes in my garage over powerline ethernet, it actually works well. wireless wasn't working (which is why angstroms and parsecs kept dropping off the cluster). | 17:04.06 |
chrisl | kens: it doesn't do exactly what we want, but we already reformat the result of sprintf() a bit in one place, so we could easily augment it, and generalize it | 17:04.26 |
ray_laptop | chrisl: and it uses sscanf | 17:04.29 |
henrys | what is really cool about amazon is we could just set the number of machines we want to use right. When we have these big queues we can just pull in more machines right? | 17:04.31 |
mvrhel_laptop | I actually have a hard wire in my garage | 17:04.33 |
henrys | s/right/right? | 17:04.45 |
marcosw | mvrhel_laptop: really? why? | 17:05.11 |
henrys | yes I use power line also, and we don't seem to have had problems. | 17:05.37 |
ray_laptop | marcosw: I have hardwire in my garage because that's where I had the cable modem installed, and where I have my wi-fi router | 17:05.56 |
mvrhel_laptop | macosw: I actually used to work out there in the summer sometimes to get away from the kids/wife for a bit | 17:06.39 |
marcosw | henrys: correct. | 17:07.12 |
ray_laptop | mvrhel_laptop: that only works if you have a deadbolt you can use from inside the garage ;-) | 17:07.17 |
mvrhel_laptop | hehe yes | 17:07.25 |
kens | Need to go pack, see you all tomorow | 17:07.36 |
chrisl | see you kens | 17:07.51 |
mvrhel_laptop | bye kens | 17:07.53 |
marcosw | kens: night | 17:07.56 |
henrys | marcosw:well that is a really nice feature given our usage which tends to "clump" | 17:08.10 |
marcosw | henrys: particularly the mupdf commits, which usually come in tens at a time. | 17:08.48 |
| and this week as been really busy with clusterpush jobs as people try to get stuff done to look like they've accomplished something between meetings :-) | 17:09.37 |
| think of how much productivity would increase if we had 6 meetings per year... | 17:10.04 |
henrys | slimy bastards ;-) | 17:10.05 |
ray_laptop | marcosw: you sussed me out :-) | 17:10.07 |
henrys | marcosw:let's keep that idea to yourself. | 17:11.16 |
ray_laptop | Finally closed bug 693013 (pdf14 clist optimization). Now on to the next cust 532 issue | 17:15.28 |
Robin_Watts | Adding more speedbumps to the street increases the average acceleration, not the average speed :) | 17:15.38 |
ray_laptop | does anyone have any thoughts on the acceptability (or not) of limiting interpolation to less than full device resolution ? (bug 693684 - enhancement request) | 17:17.00 |
chrisl | ray_laptop: I'm in favour - I've said many times our interpolation is too aggressive.... | 17:17.48 |
Robin_Watts | ray_laptop: As a build option? Or as a device option? | 17:17.49 |
ray_laptop | Robin_Watts: right. We'd have to get a lot less productive right after staff meetings more frequently | 17:18.01 |
Robin_Watts | chrisl: I'm not in favour of such as a global thing. | 17:18.07 |
ray_laptop | so one question is -- should it be a settable parameter ? and how should we be able to set the parameter ? | 17:19.06 |
chrisl | Robin_Watts, ray_laptop: I'd suggest it be a run-time parameter, and we set the default to 1/2 device resolution | 17:19.07 |
Robin_Watts | chrisl: a device parameter, with the default set by the device ? | 17:20.04 |
chrisl | Robin_Watts: that would work, yes | 17:20.25 |
ray_laptop | if it is a device parameter, it can't be changed by setpagedevice without clearing the page, but of course '.putdeviceprops' can set it | 17:20.42 |
chrisl | ray_laptop: I wouldn't envisage it as something that would get set during a job (like, part way through), would you? | 17:21.54 |
ray_laptop | if it is a graphics state operator similar to .setaccuratecurves then it could be set directly | 17:22.50 |
| chrisl: well -- say if we wanted to be able to limit interpolation for a certain class of images, such as JPEG compressed, but not lossless compressed (in the PDF interp) | 17:24.48 |
| but then our PDF interp can use putdeviceprops and not have to use setpagedevice | 17:25.12 |
Robin_Watts | IIRC, we used to have code in gs that would limit the interpolation used if we were going to a halftoned device. | 17:25.50 |
| and the way it detected that was a bit nasty. | 17:26.01 |
| I can't remember if I changed it to use a dev_spec_op or not. | 17:26.24 |
ray_laptop | Robin_Watts: really ? I don't recall that, but I hadn't poked around in that area until the recent work (at least not for the past 5+ years), so my memory is also rusty | 17:26.47 |
| Robin_Watts: oh, there is stuff for halftoned devices (depth <= 4) that does downsampled images using a special filter | 17:28.09 |
Robin_Watts | Aha. look for gxdso_interpolate_threshold | 17:29.26 |
| That's a neater (IMHO) coding of what was there already. | 17:30.05 |
| The point with this stuff is that the device can set the threshold at which interpolation is worthwhile. | 17:30.33 |
| It might be possible to extend that so that your code is called so that we only interpolate enough to bring it below the threshold ? | 17:31.12 |
ray_laptop | Robin_Watts: bring it down to the threshold, you mean ? | 17:32.20 |
Robin_Watts | To put it another way... the gxdso_interpolate_threshold stuff currently says "If we're in a halftoning device, it's not worth interpolating unless we are scaling up more than a factor of 4". | 17:32.45 |
ray_laptop | so if the interpolate_threshold is 4, we interpolate down to 4x4 pixels | 17:32.46 |
Robin_Watts | That's equivalent to saying "don't bother interpolating to more than 1/4 of the current resolution" | 17:33.06 |
ray_laptop | Robin_Watts: yes, I agree, and that was part of my change for cust 532 -- ignore interpolation if it isn't scaled up to the threshold | 17:33.36 |
| Robin_Watts: but if the scaling was, say 8x and the threshold was 4x, doesn't it still (currently) interpolate down to device pixels ? | 17:34.31 |
Robin_Watts | The limitation in the current code is, I think, that if we DO have an image that's being scaled up 8 times, we'll still scale it up 8 times. | 17:34.40 |
| With your code we could be smart and only interpolate it up twice. | 17:35.02 |
| ray_laptop: Yes, exactly. | 17:35.12 |
ray_laptop | Robin_Watts: I think you confirmed my understanding | 17:35.19 |
| I just type too slowly | 17:35.26 |
Robin_Watts | So... I think it would be nice to continue to hook into the dev_spec_op stuff. | 17:36.07 |
| The question is how to make the dev_spec_op thresholds settable from the device. | 17:36.22 |
ray_laptop | Robin_Watts: but that means this will only work for devices that handle the gxdso_interpolate_threshold | 17:36.35 |
Robin_Watts | All devices handle that. | 17:36.48 |
| cos it's in gdevdflt.c | 17:36.56 |
| (it just means that devices can override the default if they want a smarter way of handling it) | 17:37.26 |
| dev_spec_op *could* query the device param (but querying device params is expensive, wheras gxdso is supposed to be cheap) | 17:37.44 |
ray_laptop | Robin_Watts: all devices that use the gx_default_dev_spec_op will support it (or if the call gx_default_dev_spec_op from their private spec_op proc) | 17:38.17 |
Robin_Watts | ray_laptop: The implementation notes say that all devices should ultimately call down to the default one, I think. | 17:38.47 |
| (If they don't, they should) | 17:38.57 |
ray_laptop | Robin_Watts: querying device parameters is FREE (almost): thresh = pdev->interp_threshold | 17:39.04 |
Robin_Watts | ray_laptop: If the device has cached the param within in, yes. | 17:39.30 |
ray_laptop | Robin_Watts: a device is a structure in memory. params are stored directly -- NOT in a param list | 17:40.04 |
Robin_Watts | but we don't have an interp_threshold field in gx_device. | 17:40.15 |
| yes, I appreciate that. | 17:40.29 |
ray_laptop | Robin_Watts: adding one is easy. We ADD device params all the time. Getting rid of a device param is the difficult part. | 17:41.00 |
Robin_Watts | IF we extend every gx_device, will every device populate it properly? | 17:41.20 |
ray_laptop | Robin_Watts: for instance, I added MaxPatternBitmap not too long ago. No biggee | 17:42.07 |
| and graphics_type_tag and mvrhel_laptop added icc_struct | 17:42.47 |
Robin_Watts | fair enough. | 17:42.55 |
ray_laptop | Then we just add it to the gx_default_get/put params and it's available from the command line | 17:44.37 |
| chrisl: Robin_Watts: others: any suggestions on what to call it? InterpLimit ? | 17:45.35 |
chrisl | ray_laptop: I'd be fine with that. | 17:46.47 |
Robin_Watts | InterpThreshold ? | 17:46.50 |
ray_laptop | The one nice thing is that we can get rid of the chicanery for -dNOINTERPOLATE and just set the InterpLimit | 17:46.51 |
| and to get rid of -dDOINTERPOLATE ? Maybe we could ALWAYS interpolate if it was a negative value (or is that to hackish) -- we would use it to implement -dDOINTERPOLATE | 17:47.55 |
Robin_Watts | So InterpLimit (or InterpThreshold or whatever) would be set to 1 for current operation, 0 for "never interpolate", 2 for "only interpolate to at most half of the value" etc ? | 17:48.17 |
ray_laptop | I've never liked the hacking around with the PS operator defs | 17:48.24 |
| Robin_Watts: and -1 for ALWAYS interpolate to level 1 | 17:48.50 |
henrys | minor nit but can we spell output interpolate - interp can mean other stuff. | 17:48.54 |
ray_laptop | (same as -dDOINTERPOLATE now) | 17:49.03 |
| henrys: good point. Thanks | 17:49.20 |
Robin_Watts | ray_laptop: At the moment, the dso returns 0 for "no change", or an integer threshold below which interpolation should be suppressed. | 17:50.26 |
| It would be better to return 1 for "no change", I think. | 17:50.49 |
ray_laptop | Robin_Watts: and, BTW, I don't really like the default interpolate_threshold. Can we drop that ? | 17:50.50 |
Robin_Watts | and 0 for "never interpolate". | 17:51.05 |
| what exactly don't you like ? | 17:51.20 |
ray_laptop | Robin_Watts: I would just get rid of the dso and just use the device param | 17:51.35 |
Robin_Watts | ray_laptop: But then you can't allow the device to vary it. | 17:51.58 |
| a halftone device doesn't need to interpolate to the same degree as a contone one. | 17:52.39 |
| a mono halftoned device needs even less than a 4 level device. | 17:53.03 |
ray_laptop | If we want to make the default limit for halftoned devices have a certain value, then we set that in the device structure prototypes (the macros) | 17:53.20 |
| Robin_Watts: I agree that a halftoned device doesn't need to interpolate as far (usually) but '4' is quite arbitrary. The limit is more related to the screening method, IMHO | 17:54.27 |
Robin_Watts | ray_laptop: As I say, the current implementation is just a recoding of what was already there. I didn't pick '4'. | 17:54.50 |
ray_laptop | Robin_Watts: in particular with error diffusion or stochastic threshold, one may want to interpolate much further than if the screen is ordered dither and the cell size is 6x6 | 17:55.34 |
Robin_Watts | ray_laptop: Right, so by having the gxdso, does that maybe help devices pick a sensible value based upon the cell size/dither method ? | 17:56.20 |
ray_laptop | mvrhel_laptop: any thoughts ? | 17:56.23 |
mvrhel_laptop | ray_laptop: sorry was not listening (reading) let me catch up | 17:56.46 |
ray_laptop | Robin_Watts: but the device doesn't know the cell size | 17:56.50 |
Robin_Watts | I'm not wedded to the gxdso - if we can achieve what we want without it, then great. It'd just be a shame to remove it, only to find we could have used it in future. | 17:57.02 |
| The device knows if we're error diffusing or not. | 17:57.43 |
ray_laptop | Robin_Watts: well we can always add it back. After all, the place that uses the InterpolateThreshold will be readily identifiable | 17:58.10 |
Robin_Watts | The device knows if we are doing dithering in general as a post process thing from contone. | 17:58.29 |
| The device also potentially knows if we are doing downscaling or not. | 17:58.42 |
ray_laptop | Robin_Watts: but it doesn't know the difference between 10x10 pixel ordered dither screen and stochastic threshold array that is 256x256 | 17:59.00 |
Robin_Watts | if it's the one applying the dither as a post-process step it does, surely? | 17:59.22 |
ray_laptop | Robin_Watts: if the device is downscaling (such as the tiffscaled) that device can set the InterpolateThreshold default or in accordance with the downscale factor | 18:00.13 |
mvrhel_laptop | so is the issue here one of user control vs. some attempt at an automatic optimal value? | 18:00.48 |
| sorry trying to understand the exact issue | 18:01.13 |
Robin_Watts | mvrhel_laptop: I guess I'd like to have devices 'automatically' pick a value, based on the user supplied value. | 18:01.40 |
ray_laptop | Robin_Watts: in fact, tiffscaled may want to take the InterpolateThreshold param combined with the DownScaleFactor when setting the device struct param value | 18:02.10 |
Robin_Watts | Wheras, I think ray_laptop would rather see the devices able to pick a value, but for the user to be able to override it with a specific set value ? | 18:02.33 |
mvrhel_laptop | as a user, I would expect to be able to specify that I want to set a max limit for interpolation | 18:03.04 |
ray_laptop | mvrhel_laptop: Robin_Watts: I wouldn't change to default (from 1), but having the default for the downscaling devices be DownScaleFactor makes sense | 18:03.14 |
Robin_Watts | ray_laptop: And for limited color devices? | 18:03.29 |
ray_laptop | Robin_Watts: I think we have to leave the default as-is, otherwise customers may gripe at the 'surprise' | 18:04.15 |
Robin_Watts | so how would you achieve the default staying as is without a dso ? | 18:04.44 |
ray_laptop | but in the News.htm (and the release notes) we can describe the new parameter and suggest that to customers | 18:05.07 |
| Robin_Watts: Oh, that's right. You already _did_ change the default for halftoned devices :-( | 18:05.48 |
Robin_Watts | did I? | 18:06.06 |
ray_laptop | Robin_Watts: yes, since the default dso returns 4 | 18:06.27 |
Robin_Watts | ray_laptop: That was always there previously, just not coded as a dso. | 18:06.46 |
| It was always hardcoded in the interpolation code. | 18:06.57 |
ray_laptop | Robin_Watts: hmm... I need to look at the old code. Just a sec. | 18:07.20 |
Robin_Watts | http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=aa7d7ffcc390b05a8e36b6cf85e4688ae69c2a85 | 18:08.34 |
| Ah, that's why I did it. It was so we could correctly see 'through' pdf14. | 18:08.58 |
ray_laptop | Robin_Watts: ahh. That makes sense since pdf uses 8-bit colors | 18:09.44 |
| Robin_Watts: so it's a matter of setting the device structure interpolate_threshold by default for devices. Most use the std macros -- just a few 'clever' ones (like gdevbit) | 18:11.11 |
Robin_Watts | yay. macro hell. | 18:12.27 |
ray_laptop | Robin_Watts: but if we keep the dso, how do we coordinate between the device parameter and this old fixed (opaque) method ? | 18:13.03 |
Robin_Watts | We set the device param to 0 (or -1) by default. | 18:13.39 |
| We have the dso check to see if it's the default value, or a changed one. | 18:13.56 |
| If it's unchanged, the dso does what it always has. | 18:14.17 |
ray_laptop | Robin_Watts: I though we said 0 was to mean NOINTERPOLATE and -1 was to mean DOINTERPOLATE with interpolate_threshold = 1 | 18:14.23 |
Robin_Watts | OK, so default = -666 then :) | 18:14.47 |
| If it's changed, then we can either 1) just return the changed value, or 2) we can modify what the dso did before to take the new value into account. | 18:15.48 |
ray_laptop | Robin_Watts: to "check to see if it's the default value, or a changed one." we could use a bogus value hack, or have a parameter 'interpolate_threshold_set' (as with Duplex & DuplexSet) | 18:15.52 |
| Robin_Watts: the temptation is to use the hack :-) | 18:16.13 |
Robin_Watts | I don't see why having a "Set" is more or less hacky than using -666, but OK. | 18:16.36 |
| The dso gets us 'through' pdf14 and the like too. | 18:17.36 |
ray_laptop | Robin_Watts: but I prefer 2718,28182 | 18:18.22 |
| oops 271828182 | 18:18.38 |
Robin_Watts | Which locale is that in? | 18:18.39 |
ray_laptop | Robin_Watts: the interpolate_threshold of pdf14 will be copied from the target device. It has no reason to change it | 18:19.45 |
Robin_Watts | right, it's just the color stuff that isn't. | 18:20.14 |
| obviously. | 18:20.18 |
mvrhel_laptop | bbiaw | 18:20.24 |
ray_laptop | so the tunneling problem for pdf14 goes away if the device sets the interpolate_threshold based on the bpp | 18:20.47 |
Robin_Watts | ray_laptop: Right. | 18:20.58 |
| Well, I'm happy to bow to however you see fit to do it. | 18:21.17 |
| But I will say "I told you so" if it goes wrong >8*) | 18:21.31 |
ray_laptop | Robin_Watts: no, I appreciate your thoughts on this. | 18:21.32 |
| So the bogus default value means that devices that want to control it (and users via the device parameter machinery) can do so and the dso returns 4 IFF the interpolate_threshold parameter == the bogus value | 18:23.47 |
| and, of course, devices can implement their own handing of that dso | 18:24.25 |
Robin_Watts | yes. | 18:25.32 |
ray_laptop | Robin_Watts: I'll add the comment to the dso that this default handler in primarily for backward compatibility to give devices more flexibility prior to the addition of the device parameter. Does that sound roughly OK ? | 18:30.58 |
Robin_Watts | Yeah. | 18:32.14 |
ray_laptop | BTW, and rather than code in the bogus number, I WILL use a #define INTERPOLATE_THRESHOLD_NOT_SET | 18:32.16 |
Robin_Watts | enum { INTERPOLATE_THRESHOLD_NOT_SET = x }; is better style than a #define | 18:32.41 |
ray_laptop | Robin_Watts: actually, I was thinking of #define INTERPOLATE_THRESHOLD_NOT_SET(dev) ((dev)->interpolate_threshold == 271828182) | 18:34.29 |
| in keeping with ghostscript's abuse of macro's ;-) | 18:35.03 |
| but using enum { INTERPOLATE_THRESHOLD_NOT_SET_VAL = 271828182 } does make sense | 18:36.06 |
| then using the _VAL in the macro that computes the bool | 18:36.58 |
| any comments from anyone on whether the name of the device param (i.e. from the command line) be InterpolateThresh or InterpolateThreshold or InterpolateLimit or something else ? | 18:45.36 |
Robin_Watts | InterpolateLimit sounds like it should be a resolution maybe? | 18:46.40 |
| but then the same might be said of InterpolateThreshold :( | 18:46.54 |
ray_laptop | it's all in the (yet to be completed) documentation, but who reads that ? | 18:47.42 |
| Robin_Watts: if we want to make it more concise and less subject to misinterpretation since people will HAVE to read the docs, we could go with something like IIPL (Image Interpolation Pixel Limit) | 18:49.15 |
| and talking about IIPL=4 is easier to say than InterpolationThreshold=4 (not to mention, easier to type) | 18:50.39 |
ray_laptop | hears people barfing | 18:51.16 |
Robin_Watts | InterpolationControl ? | 18:53.16 |
ray_laptop | Robin_Watts: reminiscent of Immigration Control, but I like it. It makes people look it up, and it lets us use the 'overloaded' negative, 0 and positive values. | 18:57.11 |
| Robin_Watts: also, thinking about it, 0 can mean NOT_SET and for NOINTERPOLATE we just set it to a huge number | 18:57.45 |
| right ? | 18:57.52 |
Robin_Watts | indeed. | 18:57.59 |
| I *should* have used '1' for the threshold from the dso to mean "interpolate as normal" rather than 0. | 18:58.40 |
| and '0' should have meant "always interpolate" as that would have been entirely in keeping with the values. | 18:59.18 |
ray_laptop | Robin_Watts: I have no problem changing the dso to return 1 for max_color/max_gray > 15 | 19:05.51 |
| Robin_Watts: I added a comment collecting these thoughts in bug 693684. Please comment there if I got something wrong. | 19:06.35 |
| One thing about doing this as a device parameter is that this would allow us to force image interpolation for PDL's other than PS/PDF | 19:11.14 |
| henrys: does PCL or PXL have any control of image interpolation ? | 19:11.56 |
henrys | ray_laptop:it does. | 19:12.17 |
ray_laptop | I can only imagine what overriding that will do to a file with non-idempotent RasterOp however | 19:12.48 |
henrys | well it is off by default but if you want to explicitly set it ... | 19:13.48 |
ray_laptop | henrys: does HP specify the interpolation method ? or it 'device dependent' like PostScript ? | 19:14.31 |
| s/or/or is/ | 19:14.52 |
henrys | device dep. | 19:14.55 |
ray_laptop | OK, so it is probably already broken w.r.t. RasterOps | 19:15.23 |
| pouring down rain here, and even hail. I'm glad my daughter took a poncho to Disneyland today. :-) | 19:25.41 |
| rain paused... time to head to lunch | 19:36.13 |
mvrhel_laptop | Sunny here ray_laptop . Opposite the normal case again | 20:37.09 |
henrys | mvrhel_laptop: I was telling the others I'll be lucky to be there. | 20:37.51 |
| at the meeting, that is. | 20:39.03 |
mvrhel_laptop | henrys: yes I saw that. | 20:45.15 |
| I am going through chicago on my way there | 20:45.25 |
| but it looks ok | 20:45.29 |
| henrys: I am going to send you a few things to add to the list | 20:45.54 |
henrys | yeah you should be well in front of it. | 20:45.56 |
| mvrhel_laptop: okay thanks | 20:46.12 |
Robin_Watts | ray_laptop: (For the logs) The writeup on bug 693684 looks perfect. | 22:54.44 |
| Forward 1 day (to 2013/03/09)>>> | |