IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2016/08/07)20160808 
Robin_Watts If I apply a sheer to the control points of a bezier curve, and then plot it, do I get the same results as if I plot a bezier curve and then apply the same sheer ?08:45.10 
  Yes, must do, from the convex hull property.09:23.28 
sebras Robin_Watts: are you fully immersed in SOT (where does the T come from?) or do you have time for a review?14:16.54 
kens T=Technology14:17.05 
sebras is less of a n00b.14:17.24 
kens It cna always change :)14:17.45 
  Could be Tomfoolery14:18.12 
Robin_Watts sebras: Sure.14:18.39 
  or "Two"14:18.48 
sebras Robin_Watts: two patches over at sebras/master14:18.51 
Robin_Watts Top 2 both look good, thanks.14:19.43 
sebras Robin_Watts: cool, I see nothing new over at robin/master, so unfortunately I cannot reciprocate the review. :)14:21.15 
Robin_Watts sebras: No, nothing there yet.14:21.32 
  I fixed a bug in the new scan converter this morning for gs though, so the bmpcmp is looking MUCH closer now.14:21.55 
sebras Robin_Watts: you are replacing the scan converter?14:22.37 
kens tkamppeter this bug report:15:54.03 
  http://bugs.ghostscript.com/show_bug.cgi?id=69702315:54.03 
  points to a Ubuntu changelog which 'seems' to indicate that, amongst other things, FreeType is being excluded because its not DSFG compliant or is 'unused'. However, the reporter includes a file which does not render correctly on his Ubuntu Ghostscript, and does with ours. The culprit looks likely to be that FreeType is absent, because he is getting Ghostscript-specific warnings about patented TrueType instructions. If the packa15:54.03 
  ge does not link Ghostscript to FreeType, then GS is going to fail, possibly spectacularly.15:54.03 
fredross-perry sebras - I did some experimentation regarding releasing things upon failure. I believe it's sufficient to just return NULL, and GC will destroy everything. I tested this by adding finalize() to each of the new classes, and I see they are all getting called if I return NULL from getBlocks(). Thoughts?16:11.15 
sebras fredross-perry:I'm not sure you can count on the GC running garbage collection immediately.16:22.11 
  fredross-perry: so the finalizer may not be called immediately. I'm not sure if you can trigger it to run.16:23.44 
fredross-perry I can trigger it (for the purpose of this experiment) bu I wouldn't do it in practice.16:24.29 
  The upshot is, though, I don't think we should do anything about explicitly cleaning up.16:26.31 
sebras fredross-perry: right now I understand: since we do not attach those new objects to any memeber variable there is nothing to clean up. Correct?16:27.42 
fredross-perry correct.16:27.58 
sebras fredross-perry: after rereading the code just now i agree .16:28.40 
fredross-perry ok then. Thanks.16:28.50 
Robin_Watts fredross-perry: Did you see my array of nitpicks from the weekend?16:29.19 
sebras fredross-perry: but it lead me to find two similar bugs in the implementation of links and annotations.16:29.32 
Robin_Watts (Possibly you said there was a new version for me to look at?)16:29.33 
fredross-perry yes, I just fixed the one about getting the char's bbox twice. 16:29.40 
  robin yes, just now.16:30.00 
  sebras said something about the order of declarations which I did not truly understand. Again?16:30.30 
  robin - there's a few other things on my master if you want to look at those as well.16:31.58 
Robin_Watts fredross-perry: I can only see 1 strangeness... &(sbbox)16:32.07 
  Is there a reason for that ?16:32.11 
  I mean, it's harmless, but why not just &sbbox? Is there some cunning implicit thing there?16:32.48 
sebras fredross-perry: I think you separated your added list of fid_ variable declarations from the other ones. And those lists are probably kept sorted.16:32.56 
fredross-perry no reason, probably a cut/paste/edit fiasco.16:33.03 
Robin_Watts like doing if (NULL == fred) rather than if (fred == NULL) is better, theoretically.16:33.08 
  OK, cool.16:33.14 
fredross-perry I've seen that before, theory?16:33.34 
  I think it's less readble actually.16:33.43 
Robin_Watts The theory is that if you make the classic C typo of doing if (NULL = fred) then the compiler warns you.16:33.58 
sebras Robin_Watts: everything looks better in reverse polish notation? ;)16:34.00 
Robin_Watts or rather, it's an error rather than a warning.16:34.12 
fredross-perry Robin - I understand.16:34.31 
Robin_Watts I prefer if (fred == NULL) personally, but purely because "it's what I'm used to".16:35.14 
  If I had to learn my C style again, I'd probably try and learn it the other way round.16:35.38 
chrisl It's not really a C thing, though16:36.28 
malc_ Robin_Watts: why not !fred?16:36.34 
sebras Robin_Watts: or use another language where these things are not issues.16:36.41 
fredross-perry do all compiler do !fred the same way?16:36.49 
Robin_Watts malc_: !fred is evil.16:36.50 
malc_ Robin_Watts: the world is full of evil then16:37.21 
Robin_Watts Treat bools as bools. Treat anything that's not a bool as something other than a bool.16:37.41 
sebras More specifically tor8 is full of evil (just like that)16:38.00 
Robin_Watts malc_: The world is full of crap C code, yes.16:38.06 
sebras !strcmp()...16:38.37 
Robin_Watts because: is "if (!fred)" "if (fred == NULL)" or "if (fred != NULL)"16:39.03 
  sebras: yes.16:39.12 
Robin_Watts shudders.16:39.18 
  I can just about live with if (fred), but if (!fred) is just evil.16:40.07 
fredross-perry I am happier with either (fred==NULL) or (NULL==fred), but not (!fred)16:40.48 
sebras Robin_Watts: I agree with you in theory but I often treat other types as bools.16:40.50 
fredross-perry I think it's best to be as explicit about a type as you can in C.16:41.11 
Robin_Watts fredross-perry: amen.16:41.23 
fredross-perry There are also tools that can be used to analyze for and enforce coding standards, btw.16:41.48 
malc_ It's all lost cause anyway, just stumbled upon a portion where ISO/IEC 9899:201x uses incorrect main definition16:42.07 
sebras fredross-perry: I don't have any further comments on your code. LGTM.16:42.55 
fredross-perry ok thanks. I am reordering the declarations and fixing &(sbbox) and that's it.16:43.22 
Robin_Watts fredross-perry: Your first commit has "fale" in a commit, that should be "false"16:43.31 
  and in DocPageView.java you now have 3 different brace styles in 3 successive functions :)16:44.04 
  getPage/setNewScale/getCalculatedWidth. I think the last one is correct. We may be accepting the first one as a java idiom.16:44.49 
  DocView.java looks like you've untabbed it all or something?16:45.29 
  Ah, you've fixed the "fale" typo in the next commit.16:46.11 
  In the next commit, you use "setupTab(tabHost, "BLAH", R.id.blah, ...)16:47.31 
sebras fredross-perry: oh are the other patches ready for review too?16:47.31 
Robin_Watts Shouldn't you be using R.string.blah ?16:47.47 
  i.e. move all the strings into the resources file to ease internationalisation?16:48.03 
fredross-perry sebras - not for JNI. Raobin's looking at a bunch of Android/java stuff now. Thanks.16:48.04 
  R.string.blah - yes16:48.24 
Robin_Watts again, we've lost tabness.16:48.30 
fredross-perry tabs - I need to figure out how that's happening, sorry.16:48.54 
  Android Studio settings somewhere.16:49.05 
Robin_Watts for (int i = 0; i < getPageCount(); i++)16:50.37 
  Having function calls as loop limits is bad, Mkay.16:50.49 
fredross-perry right.16:51.43 
Robin_Watts scrollBoxIntoView... point.y >viewport.bottom16:52.50 
  should that be >= ?16:52.56 
  Boxes are often inclusive...exclusive.16:53.24 
  Though I generally expect top to be > bottom, and that can't be the case here, right?16:53.43 
fredross-perry Dunno. but "if the point is outside the viewport", so that's why I am using < and >16:56.34 
Robin_Watts Suppose I've got a 320x240 viewport.16:56.52 
  Then generally, that runs from 0 to 240.16:57.10 
  0 is inclusive, 240 is exclusive.16:57.20 
  hence 240 is outside the viewport.16:57.27 
  Hence >=16:57.29 
  I have a stylistic objection to the right hand drift in functions like showPages and hidePages, but I think I get outvoted on that a lot.16:58.39 
fredross-perry It's working with the result of getGlobalVisibleRect(). Is that inclusive...exclusive ?16:58.46 
Robin_Watts I'd bet it is, but I can't produce evidence at the moment.16:59.56 
  If you assume that you can subtract left from right to get width, then yes.17:00.13 
fredross-perry gotcha.17:00.34 
  "right hand drift" ?17:01.19 
Robin_Watts A = getA();17:02.14 
  if (A) {17:02.15 
  B = getB();17:02.17 
  if (B) {17:02.18 
  C = getC();17:02.20 
  if (C) {17:02.21 
  ...17:02.23 
  as opposed to:17:02.24 
  A = getA();17:03.01 
  if (!A)17:03.03 
  return;17:03.04 
  B = getB();17:03.06 
  if (!B)17:03.07 
  return;17:03.09 
  etc17:03.10 
  I claim the latter is easier to read. Also it means you have to scroll left <-> right less often to keep stuff in view in narrow windows.17:04.16 
fredross-perry I generally agree with you. 17:04.22 
Robin_Watts With:17:05.18 
  if (A) {17:05.19 
  if (B) {17:05.21 
  ... BIG STUFF HERE ...17:05.22 
  }17:05.24 
  }17:05.25 
  I always find it hard to look for matching elses etc.17:05.27 
fredross-perry But, rather than getting outvoted, we could publish and enforce some standards.17:05.47 
  Your favorite text editor should show you matching structures in this day/age.17:06.09 
Robin_Watts fredross-perry: It does, but when you close a } and it helpfully tells you that that matches with a { from some indeterminate place higher in the file that you can't see cos it won't all fit in your window, it's not that much help.17:07.41 
  I think Rect.contains() is wrong for the same reason.17:08.56 
  (inclusive/exclusive, not right hand drift :) )17:09.10 
  (Right Hand Drift, starring Vin Diesel, coming to a cinema in Summer 2017)17:09.36 
fredross-perry ;-)17:09.55 
Robin_Watts set/getHilight unless there is some java specific preference for Hilight over Highlight, I think we should use the latter.17:10.59 
fredross-perry sure17:11.50 
  clearly there is a lot here. I'd prefer to do it all in a new commit if that's OK.17:13.05 
Robin_Watts fredross-perry: And that's all I have.17:13.40 
fredross-perry sweet, thanks!17:13.50 
Robin_Watts fredross-perry: Sure. I might be tempted to just squash it all to a single commit?17:13.58 
  What with all the renaming and stuff, that will probably be easier to look at again.17:14.18 
fredross-perry it's OK by me.17:14.23 
Robin_Watts returns to figuring out WTF is going wrong with the imagemask decoding in SOT :(17:14.43 
fredross-perry except I'll keep the JNI/Java API stuff separate.17:14.51 
  Robin - I've reword all of that into one commit now.18:21.37 
  "reworked"18:21.46 
Robin_Watts Working my way through it. Looks great so far.18:27.03 
  private String mTagHidden ?18:27.14 
  This is just an internal string used to identify a tab, right?18:28.17 
  Does it ever change?18:28.27 
  Ah, I see it.18:28.54 
  If it's a string visible in the UI, then your new code looks perfect.18:29.23 
  (Forgive me feeling my way a bit here)18:29.29 
fredross-perry sure, np. Yes those are visible trings.18:32.40 
Robin_Watts } else\n{ should be {\nelse\n{ (likewise } catch ...) (can you tell, I'm struggling to find anything serious to say?)18:32.55 
fredross-perry yes.18:34.13 
  Android Studio settings again. But that's easy to fix, looking...18:34.49 
Robin_Watts Looks really nice.18:37.32 
fredross-perry ok i'll fix the } else\n{ should be {\nelse\n{ (likewise } catch ...) 18:39.46 
Robin_Watts fredross-perry: There was a } finally in there too, but I suspect your automated fixing will fix that too.18:40.21 
fredross-perry yes18:40.30 
  done18:41.51 
Robin_Watts fred: Great. Go for it.19:38.10 
sebras when running my latest clusterpush I got:19:41.10 
  /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o: unrecognized relocation (0x2a) in section `.init'19:41.12 
  /usr/bin/ld: final link failed: Bad value19:41.15 
  collect2: error: ld returned 1 exit status19:41.17 
  are these known issues?19:41.24 
  are these the indeterminisms that kens talked about?19:41.37 
  or that's something completely different?19:41.46 
Robin_Watts That's something diffent19:42.09 
sebras Robin_Watts: ok. I get this the second time too (sorry to keep you waiting ray)19:42.48 
  Robin_Watts: ok, so there's a tentative commit for .cbr-suppor on sebras/master19:44.24 
  Robin_Watts: I really dislike the ifdefs in there. I'm thinking that I should separate cbz/mucbz.c into cbz/mucb.c as well as cbz/mucbr.c and cbz/mucbz.c somehow.19:44.54 
  Robin_Watts: haven't bothered to do that yet though. and the code as it is decodes .cbr and renders .pngs inside just fine. without leaks.19:45.34 
Robin_Watts rarhack.c looks like a .h file to me.19:46.17 
sebras Robin_Watts: correct, it should be.19:46.34 
  Robin_Watts: because the underlying library does #include WHATEVER_THE_IDENTIFIER_WAS19:46.58 
Robin_Watts Is there mileage in making fz_archive a base class, and having fz_zip_archive and fz_rar_archive derive from it?19:47.34 
  Then we could have fz_count_archive_entries etc work with both types?19:48.09 
  yeah, I like that idea.19:48.49 
sebras Robin_Watts: mmm, that and the table of entries, I think the entries can be kept in the same struct.19:48.51 
  Robin_Watts: just not having filling in all fields for .cbr19:49.05 
  Robin_Watts: can do!19:49.18 
Robin_Watts sebras: Don't need to be the same struct. Just need to start with a list of function pointers to implement the different things.19:49.24 
  sebras: Cool. That would be a really nice addition.19:49.37 
sebras Robin_Watts: but the table of entries are actually quite similar (.cbr has offset and compressed size that .cbr does not)19:50.00 
Robin_Watts sebras: Yeah, I'm just pondering what other archive types there are that might be useful.19:50.19 
sebras Robin_Watts: wikipedia mentions .cbt (tar), .cb7 (7z) and .cba (ACE)19:51.53 
  Robin_Watts: I believe that libarchive supports tar and 7zip19:52.04 
  Robin_Watts: adding those wouldn't be too hard.19:52.32 
  Robin_Watts: other than those I don't think we have any good reasons to add any other archive formats..?19:53.00 
Robin_Watts Not yet, but these things come around.19:53.28 
sebras Robin_Watts: oh, and me working on this might seem unnecessary, but it educates me in good interface design so it pays of in the long run. :)19:54.07 
  Robin_Watts: also to make libarchive more appealing I should provide them with a patch so you can easliy replace malloc and friends. ohh! I forgot to check if they use strdup, etc...20:13.07 
  3~/quit20:27.15 
fredross-perry I did a cluster test. "differences form trunk" and "differences from last clusterpush" show 0 diff. But, the bmpcmp is LOADED with rendering differences. What gives? Thanks.20:43.11 
tkamppeter kens, I have added a comment to http://bugs.ghostscript.com/show_bug.cgi?id=697023.20:51.45 
malc_`` tkamppeter: haven't the hint patent expired a couple of years ago?20:58.59 
Robin_Watts fredross-perry: So you ran a clusterpush.21:17.39 
  That produces the report.21:17.46 
  It doesn't update the bmpcmp unless you specifically run a bmpcmp.21:18.02 
  And if you *do* run a bmpcmp it only runs the files that had differences in the last report.21:18.23 
  If there were no differences, then it doesn't actually do anything.21:18.32 
fredross-perry I did not run a bmpcmp, just a plain clusterpush.21:18.53 
Robin_Watts So your bmpcmp shows whatever your previous bmpcmp run had shown.21:18.54 
  Ok.21:19.03 
fredross-perry I see. So I'm OK21:19.05 
Robin_Watts You are.21:19.08 
fredross-perry Except, I have a few whitespace issues in Android-only XML files, that only turned up when I tried to push to golden.21:19.34 
  I'll fix those and then push.21:19.41 
  It would be nice if clusterpush would spot those.21:19.54 
 Forward 1 day (to 2016/08/09)>>> 
ghostscript.com
Search: