| 00:13.44 | starseek1r | hmm https://github.com/memononen/libtess2 |
| 00:16.09 | starseek1r | might be handy if we ever want to compare the GLU algorithm to poly2tri |
| 01:47.31 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 02:19.22 | *** join/#brlcad witness___ (uid10044@gateway/web/irccloud.com/x-eqywjjcekbxokgno) | |
| 03:52.50 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 04:06.13 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 04:09.01 | *** join/#brlcad FreezingCold (~FreezingC@135.0.41.14) | |
| 04:28.36 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 05:49.29 | *** join/#brlcad clock (~clock@77-58-143-135.dclient.hispeed.ch) | |
| 05:59.55 | *** join/#brlcad piyushparkash (~piyushpar@117.205.72.30) | |
| 07:10.51 | *** join/#brlcad d_rossberg (~rossberg@66-118-151-70.static.sagonet.net) | |
| 07:19.40 | *** join/#brlcad Zhao_Anqing (~clouddrif@183.157.160.10) | |
| 07:25.53 | Zhao_Anqing | d_rossberg: hi, I see your E-mail. Yes, I use ~/SVN/nmgreorg_build/src/mged$ make |
| 07:26.04 | Zhao_Anqing | it is successful. |
| 07:26.15 | Zhao_Anqing | then, I execute mged. |
| 07:26.36 | Zhao_Anqing | It displays 'attach (nu|txt)[nu]?' |
| 07:27.37 | Zhao_Anqing | I input nu, then the console become 'mged> ', but there is no graphics window like Windows OS. |
| 07:35.10 | d_rossberg | this means that it couldn't find the X libraries |
| 07:38.56 | Zhao_Anqing | OK. I see. Let me have a try. |
| 07:40.41 | d_rossberg | see http://brlcad.org/wiki/Compiling for a list of neccessary libraries (it don't know if this list is complete) |
| 07:44.20 | d_rossberg | or you could use this: http://sourceforge.net/projects/brlcad/files/BRL-CAD%20for%20Virtual%20Machines/ |
| 07:45.18 | Zhao_Anqing | OK. Thank you, I will try these. |
| 08:03.06 | Notify | 03BRL-CAD:d_rossberg * 61478 brlcad/trunk/include/pstdint.h: for Microsoft Visual Studio version 9 (2008) and lower(?): if _UINTPTR_T_DEFINED/_INTPTR_T_DEFINED the types are defined but not the other macros (UINTPTR_MAX etc.)prevent redefinition of uintptr_t/intptr_t for these casesit should be a valid assumption for every system that if _UINTPTR_T_DEFINED/_INTPTR_T_DEFINED is defined the type uintptr_t/intptr_t |
| 08:03.08 | Notify | exists |
| 08:24.10 | *** join/#brlcad piyushparkash (~piyushpar@117.205.72.30) | |
| 08:47.08 | Zhao_Anqing | d_rossberg: I install 'libx11-dev libxi-dev libxt-dev libxau-dev libxext-dev libxmu-dev libxmu-headers' according to the wiki/compiling. but the situation is the same. |
| 08:48.44 | Zhao_Anqing | by the way, the system on my VM is Ubuntu. |
| 08:49.30 | Zhao_Anqing | but it's no problem for me to check the compiling errors. Maybe I can do the main job on Visual Studio, then use 'make' in Linux to ensure it can be compiled. |
| 08:54.00 | d_rossberg | maybe you should try the vn image spexcially prepared for BRL-CAD; you could find out what's missing by analysing the cmake output where it complains about missing headers or libraries but this isn't easy |
| 08:56.54 | Zhao_Anqing | Thank you, I will try again. |
| 08:58.07 | Zhao_Anqing | I should 'make' all BRL-CAD or just MGED? |
| 09:07.53 | d_rossberg | it should build (almost) all |
| 09:09.01 | Zhao_Anqing | OK. Thanks. |
| 10:24.18 | *** join/#brlcad brlcad (~sean@66-118-151-70.static.sagonet.net) | |
| 10:49.12 | *** join/#brlcad andrei_ (~IceChat77@188.26.183.113) | |
| 10:49.50 | andrei_ | hello |
| 10:50.10 | andrei_ | <PROTECTED> |
| 10:50.28 | andrei_ | a) Ok, I should merge Face and Triangle, but keep which one of the names? Triangle sounds more intuitive, imho |
| 10:50.34 | andrei_ | b) Does the interface look ok? |
| 10:50.35 | andrei_ | Thanks! |
| 10:57.26 | d_rossberg | a) to me too, b) you should work on the mode/orientation/flags methods, the interface has to be self-explanatory |
| 11:00.34 | andrei_ | they are char fields, you mean I should have methods separate for each mode, or that can expose that in some manner? |
| 11:04.16 | *** join/#brlcad mihaineacsu (~mihaineac@92.85.193.175) | |
| 11:11.32 | d_rossberg | whot does the char mean? |
| 11:12.10 | d_rossberg | go through the coe and find out |
| 13:12.40 | *** join/#brlcad hsrai (~hsrai@202.164.53.122) | |
| 14:16.02 | *** join/#brlcad clock (~clock@77-58-143-135.dclient.hispeed.ch) | |
| 14:25.32 | Notify | 03BRL-CAD:ejno * 61479 (brlcad/trunk/src/conv/3dm/3dm-g.cpp brlcad/trunk/src/conv/3dm/conv3dm-g.cpp): import shader settings |
| 14:44.59 | Notify | 03BRL-CAD:starseeker * 61480 (brlcad/branches/openscenegraph/include/dm.h brlcad/branches/openscenegraph/include/ged.h and 37 others): Complete the first stage of dm extraction from libged - mged and archer build and run again. Still a great deal more extraction/rationalization to do before starting to rework the libdm API towards a scene graph approach, but this was the first stage. |
| 14:48.14 | Notify | 03BRL-CAD:starseeker * 61481 brlcad/branches/openscenegraph/include/ged.h: ged_vclip is no more - was just a copy of a libdm function. |
| 15:08.28 | Notify | 03BRL-CAD:starseeker * 61482 (brlcad/branches/openscenegraph/include/dm.h brlcad/branches/openscenegraph/src/adrt/isst_tcltk.c and 5 others): More winnowing of libdm pieces - plot and postscript should be outputs of displays, not full-fledged display managers. |
| 15:12.54 | brlcad | starseeker: interesting conundrum with the libdm/libged refactoring work, and don't know if you've got any ideas on how to get there or if it's already in your plans, but from an architecture-standpoint it'd be good to have libged not depend (directly) on libdm |
| 15:20.38 | brlcad | starseeker: also (reading backlog) the freetype requirement on downstream is the same as on us: no mixing of sources, no derivative work, and must retain credit statements |
| 15:22.18 | brlcad | starseeker: it is gpl-incompatible due to the advert clause which is why you can't mix the sources, but still doesn't mean one can't use the library |
| 15:23.07 | brlcad | I can clearly fulfill all the terms of the FTL and LGPL/GPL if they're kept separate, and that's what matters for our particular use |
| 15:24.59 | brlcad | integrating something even more minimal like fontstash or whatever sounds good, but just shouldn't discount freetype because of the license |
| 15:47.18 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 15:47.38 | starseeker | brlcad: OK, sounds good |
| 15:47.58 | starseeker | (freetype license) |
| 15:48.47 | starseeker | as far as libged/libdm goes - at this point, libged pretty much 'de-facto' required libdm and was duplicating things and holding a lot of logic that libdm (imho anyway) should be handling |
| 15:49.33 | starseeker | while I've now introduced an explicit libdm dependency in libged, I've gotten libged at least partially out of the libdm business and hope to get it further out |
| 15:50.40 | starseeker | the real trick seems to be that a lot of "libged" commands have explicit notions of interacting with the display |
| 16:09.43 | starseeker | my long term plan would be to split the commands acting on the view out of libged altogether, but that shifts the responsibility of updating the display to the application using both libged and libdm |
| 16:09.51 | starseeker | (i.e. more than a little invasive) |
| 16:34.52 | Zhao_Anqing | brlcad:hi, excuse me, do you know why there is no graphics window when I run mged on Linux. |
| 16:35.20 | Zhao_Anqing | it prompt 'attach (nu|txt)?[nu]' |
| 16:35.44 | Zhao_Anqing | there isn't such problem on Windows. |
| 16:37.43 | brlcad | starseeker: it was not a good thing, but it was doing all that duplication explicitly to avoid requiring libdm |
| 16:38.44 | brlcad | bob just found it easier to copy the code instead of creating a proper interface that hides libdm being registered by a libged caller (i.e., mged/archer) |
| 16:40.09 | brlcad | the problem is one of encapsulation -- binding to libdm (and libfb, similar issues) makes it practically impossible to create a self-contained libged that apps could download and use (which is a goal) |
| 16:40.58 | brlcad | makes libged intimately aware of a lot that isn't necessarily (probably isn't) relevant to app developers |
| 16:41.25 | starseeker | nods |
| 16:41.35 | brlcad | the other issue is that we're really coupling libdm to libged for the sake of .. 3 commands? |
| 16:41.44 | starseeker | not sure |
| 16:42.00 | starseeker | a lot of them seem to want to update the view after their work is done |
| 16:42.13 | brlcad | sure |
| 16:42.45 | brlcad | "most" of the commands need to or should update the view after they're done working .. really any command that affects whatever is considered the active working set |
| 16:43.21 | starseeker | right - and right now, that means they all need to know about the display |
| 16:43.23 | brlcad | decoupling libdm is a CS-architecture issue, not a behavior/functionality issue |
| 16:44.07 | starseeker | brlcad: for me, at the moment, I'm trying to get to a point where more of the details of how the display manager does what it does are hidden from the user libraries and apps |
| 16:44.37 | starseeker | hopefully, that will also set up a longer term general improvement in the API design, but I don't know if I have the time/resources to tackle the whole thing right now |
| 16:44.46 | brlcad | "that means they all need to know about the display" -> does not mean they need to know about libdm |
| 16:44.58 | brlcad | and technically they don't need to know about the display, the app does |
| 16:45.03 | starseeker | sure |
| 16:45.15 | brlcad | the app needs to know that the command has changed something |
| 16:45.36 | starseeker | would have expected to have something in the ged struct that gets set that the app can check to know whether or not to update the view |
| 16:45.58 | brlcad | heh, THAT's the point :) |
| 16:46.07 | brlcad | something like that should exist, and is the issue |
| 16:46.18 | brlcad | and it's certainly not more work |
| 16:46.37 | starseeker | brlcad: what I'm doing right now should help set the stage for that |
| 16:47.14 | starseeker | it *is* more work in that all the calling applications have to change both their libdm and libged interaction paradigm |
| 16:47.18 | brlcad | I'm not seeing how that is true from the commits, but okay |
| 16:47.37 | starseeker | I need to get the libdm-esque functionality out of libged |
| 16:48.38 | brlcad | adding a dm architecture linkage does the exact opposite of that :) |
| 16:48.57 | starseeker | it was already there, just "implicit" in all the copied code |
| 16:49.02 | starseeker | that's cheating |
| 16:49.12 | brlcad | I know it's a work in progress, but that linkage really does defeat one of the central usages for how that library was architected |
| 16:49.48 | starseeker | brlcad: I'm aiming to get libdm out of libged altogether, but do so while keeping everything working |
| 16:50.23 | Notify | 03BRL-CAD:ejno * 61483 (brlcad/trunk/src/conv/3dm/conv3dm-g.cpp brlcad/trunk/src/conv/3dm/conv3dm-g.hpp): fix invalid color generation and check validity of m_material_index |
| 16:50.52 | brlcad | so then we're in violent agreement? why is this so difficult to discuss? :) |
| 16:51.05 | brlcad | if you're getting it out, then entirely moot point |
| 16:51.16 | brlcad | my only concern is shipping a libged that needs libdm |
| 16:51.19 | starseeker | I guess it just doesn't look like that's what I'm doing from the commits |
| 16:51.25 | starseeker | hence working in a branch :-) |
| 16:51.29 | brlcad | if that happens, I think we have a big problem and have regressed |
| 16:52.14 | brlcad | well the context you're maybe missing is that libdm was initially added the way you just reverted it |
| 16:52.20 | brlcad | and it was changed because that is a greater problem |
| 16:52.39 | Notify | 03BRL-CAD:ejno * 61484 brlcad/trunk/src/conv/3dm/conv3dm-g.cpp: fix missing const |
| 16:53.06 | brlcad | so now it's back to where it was, even more spread throughout ged because there are one or two additional commands ... so in all -- at the current state of the branch code -- it's a regression of the architecture further away |
| 16:53.17 | starseeker | nods - but if libdm is to be radically reworked to take on a lot more of the responsibility of the details of scene management, those management codes need to come out of everywhere else |
| 16:53.18 | brlcad | if that's you're method for making progress forward, okay great |
| 16:53.56 | starseeker | if I understood correctly what happened in libged, the way it avoided depending on libdm was simply snarfing in large parts of it |
| 16:54.44 | brlcad | yes, that is basically what happened |
| 16:55.06 | brlcad | it sucked, but it DID technically fix the architecture regression |
| 16:55.46 | starseeker | still think's it's cheating - it doesn't really address the issue unless libged is reworked to not *need* those pieces |
| 16:55.56 | starseeker | which is where I'm headed |
| 16:56.21 | *** join/#brlcad Darshpreet (~Darsh@202.164.53.117) | |
| 16:56.50 | starseeker | pretty much forced to do it, since if libdm + scene graph works the way I'm hoping it will the libraries/apps *can't* micromanage at that level |
| 16:56.51 | brlcad | I can't nod any more vigorously in agreement that it sucked and was bad |
| 16:57.08 | brlcad | making libdm explicit (and shipping it that way) is just worse |
| 16:57.14 | brlcad | only by a hair |
| 16:57.40 | brlcad | turns it from being an implementation detail to something apps have to deal with |
| 16:57.43 | starseeker | nods |
| 16:58.30 | starseeker | don't worry - I won't fold those commits back into trunk |
| 16:58.43 | *** part/#brlcad Darshpreet (~Darsh@202.164.53.117) | |
| 16:59.17 | starseeker | is actually more concerned that once he gets done with this the libged API may end up looking rather... different |
| 16:59.28 | starseeker | at least, in terms of immediate backwards compatibility |
| 17:01.37 | brlcad | front-end API or back-end API? |
| 17:02.04 | starseeker | probably both... |
| 17:02.08 | brlcad | ged's front-end API should consist of very very little... |
| 17:02.58 | brlcad | what really should happen is ged have absolutely no awareness of a display |
| 17:03.20 | brlcad | it should know about active sets of geometry and changes to geometry |
| 17:03.28 | starseeker | right. That means large swatchs of ged.h (like a lot of what I already grabbed out of it) won't return |
| 17:03.32 | brlcad | views on that geometry |
| 17:03.47 | starseeker | even views are a bit iffy... |
| 17:04.01 | brlcad | I see ged a lot like gcv .. it should be less than probably a dozen functions on the public API side of things |
| 17:04.08 | starseeker | 'view' - to me at least - is a display concept |
| 17:04.16 | brlcad | "run this command" .. call the event callbacks |
| 17:04.25 | starseeker | information deduced from the view might be fed to libged... |
| 17:05.19 | brlcad | possibly, I toyed with that idea years ago, but there are several commands that I think may be impossible without at least a notional view concept |
| 17:05.30 | brlcad | view may even be not the best word to use |
| 17:05.41 | brlcad | or have to at least think about it in more abstract terms |
| 17:05.45 | starseeker | brlcad: well, libged doesn't necessarily need to be the source of all application commands |
| 17:06.06 | starseeker | was actually thinking that's a bad idea... "geometry editing" is a specific focus |
| 17:06.43 | brlcad | maybe, but I'm not convinced it can't be architectured to support most if not all in a plugin style |
| 17:06.54 | starseeker | commands manipulating the display it seems to me should come from libdm |
| 17:07.13 | starseeker | "open" -> dm_open, etc. |
| 17:07.19 | brlcad | having to ask "well, what kind of command is that" already sucks for pure tcl vs C tcl vs mged C vs GED C ... |
| 17:08.17 | brlcad | a command like "select" is a good example of one that really begs awareness of some "view" concept |
| 17:08.19 | starseeker | double edged sword - when I go looking for the aet command, my first instinct is to go looking in the display manager code |
| 17:09.00 | *** join/#brlcad hcurtis (4ab29bcf@gateway/web/freenode/ip.74.178.155.207) | |
| 17:09.03 | brlcad | instincts are a dangerous notion .. that's just familiarity which can be highly biased ;) |
| 17:09.05 | starseeker | select too, actually - that has to do with "geometry editing" only in the sense of preparing a list of object on which to operate |
| 17:09.20 | brlcad | speaking of double-edged swords :) |
| 17:09.45 | starseeker | "command manipulating the display is the responsibility of the display library" |
| 17:10.07 | starseeker | maybe funneled through libtclcad for the Tcl wrappings |
| 17:10.35 | brlcad | that is entirely the purpose of select, prepare lists of objects ... so there is some interaction with the view but I don't see that interaction as being at all dependent upon how a display manager is implemented |
| 17:10.58 | starseeker | it isn't. but it doesn't (necessariliy) have anything to do with actually editing the geometry |
| 17:10.59 | brlcad | or whether one even exists .. I can use it in console mode just as well |
| 17:11.42 | brlcad | I'm not following what your point is .. to remove select from libged? |
| 17:11.57 | brlcad | I see it as quite fundamental |
| 17:13.12 | starseeker | not specifically select - anything that interacts with a notion of "view" (in this case, the NULL display manager is just a view without rendering) either to manipulate the view or to extract information from it that is in turn fed to other libraries (like libged) I see as separate from actually changing/editing the geometry objects themselves |
| 17:15.15 | brlcad | and separate then means what? doesn't belong in libged? |
| 17:15.24 | starseeker | right - libdm handles views |
| 17:15.35 | brlcad | except select is specifically a command that extracts information from "some notion of a display/view/context/set", so how does it fit in that view? |
| 17:15.53 | starseeker | I would put it in libdm, but that's me |
| 17:16.23 | starseeker | select generates a list of objects, which is then supplied as libged input |
| 17:16.25 | brlcad | yeah ... that makes no sense to me :) |
| 17:18.34 | brlcad | select is ALSO view agnostic .. so I can say "select all objects that start with the letter J with a regionID attribute" .. that would have absolutely no basis for being in libdm |
| 17:18.36 | starseeker | well, like you said, select "begs awareness of some "view" concept" |
| 17:19.16 | brlcad | trying to fully characterize commands as being "display commands" and "editing commands" was already attempted |
| 17:19.19 | brlcad | twice |
| 17:19.20 | brlcad | both failed |
| 17:19.34 | starseeker | that example actually sounds like a search command, but anyway... |
| 17:19.37 | brlcad | actually three times if you count back when they were up in librt |
| 17:19.52 | brlcad | sure, might even be built on the search API |
| 17:20.00 | brlcad | all the more reason it wouldn't belong in libdm |
| 17:20.52 | starseeker | might hinge on what the notion of select's responsibilities are - I see it as defining some constraint in the view and collecting the objects that satisfy those constraints (drawn, within distance X of this line, etc.) |
| 17:21.15 | brlcad | or even more twisted .. someone begs for something like a search -isDisplayed option |
| 17:21.28 | brlcad | so you can search only the hierarchy of things being displayed |
| 17:21.50 | brlcad | would that suddenly make it libdm's responsibility? ... yikes! |
| 17:21.56 | starseeker | would implement that as an application level filter that collects the output of a view command and passes it to search |
| 17:23.17 | brlcad | so now I'm an application developer like openscad that is just hooked into libged .. and I either don't get search or I don't get that option |
| 17:23.32 | brlcad | saying it's the apps problem is just punting on the problem |
| 17:24.20 | starseeker | but openscad will have its own notion of what is being displayed/drawn, and unless it's using our display manager our libraris won't know what's displayed |
| 17:24.28 | starseeker | s/libraris/libraries |
| 17:24.38 | brlcad | not true |
| 17:24.54 | starseeker | ? |
| 17:26.25 | brlcad | there are several possible ways that I could implement a search -isDisplayed without needing to know about libdm and without needing to know what openscad's drawing notions are |
| 17:26.51 | starseeker | and without libged needing a notion of view? |
| 17:26.56 | brlcad | it's an API design question, encapsulation and bindings |
| 17:28.41 | brlcad | to answer isDisplayed, sure I don't need a notion of a view .. I need some simple container notion |
| 17:29.16 | starseeker | you mean a list of what is active at the moment? |
| 17:29.17 | brlcad | that one app might use to imply "these things are displayed" or "these are hidden" or "these are wireframe and these are shaded" .. whatever, app specific |
| 17:29.30 | brlcad | it's just a set of something |
| 17:30.05 | brlcad | that's basic API query-request management that it needs to be doing anyways |
| 17:30.37 | starseeker | right... I was thinking that the application maintains its sets and passes them in to libged calls as arguments - "operate on this set" |
| 17:31.20 | brlcad | that's certainly one way, but then we'll end up with fragmented commands |
| 17:31.38 | starseeker | thought that was a way to keep state out of libged... |
| 17:31.54 | brlcad | commands that only exist on the application front-end because they needed something from there, and again needing to know where a command was stashed limiting its utility elsewhere |
| 17:32.34 | brlcad | commands are implemented stateless -- they're passed the state in the ged struct |
| 17:32.56 | starseeker | wouldn't libtclcad or something like it be the place to define commands needing pieces from multiple places? |
| 17:33.35 | brlcad | if I were only writing a tcl application, maybe |
| 17:33.42 | brlcad | libtclcad shouldn't even need to exist |
| 17:34.07 | starseeker | ok, so a libcadcmd or some such |
| 17:35.04 | brlcad | and when you're done implementing it that generically, fully encapsulated .. you'd have exactly what libged was intended to be |
| 17:35.05 | starseeker | maybe part of my reluctance is just that a lot of libged stuff needs to be pushed lower |
| 17:35.54 | brlcad | why does needing to push some things lower make you reluctant for having all commands in one place ?? |
| 17:36.27 | brlcad | I should not have to go to more than one place to find the implementation for any command |
| 17:36.28 | starseeker | wants conceptual separation between view manipulation and geometry editing (changing objects on disk) |
| 17:36.43 | brlcad | anything else is really just bad architecture, encapsulation fail |
| 17:37.12 | brlcad | but that doesn't work!! :) |
| 17:37.15 | starseeker | that doesn't necessarily need to be at the command level, but if the commands are going to know about views then I don't see how we keep libdm out of the command mix |
| 17:37.33 | brlcad | and was attempted VERY unsuccessfuly multiple times before |
| 17:37.50 | starseeker | isn't convinced it doesn't work, but I suppose I'm just not smart enough to see it. |
| 17:38.15 | brlcad | see the _obj commands in libged (which came from mged and librt prior) |
| 17:38.47 | brlcad | dg_obj ... "drawable geometry commands" .. commands that supposedly only affect the display of objects |
| 17:39.16 | brlcad | view_obj ... commands that supposedly only manipulate the view |
| 17:39.24 | brlcad | wdb_obj .. commands that modify geometry |
| 17:39.57 | brlcad | it's a royal clusterfudge in terms of encapsulation, because useful commands invariably and often have aspects of all three to make them more useful |
| 17:40.40 | brlcad | that's why a plugin-style one-stop shop was architected for libged, everything I need for a command in one place (one dir, one file, whatever) |
| 17:40.47 | starseeker | brlcad: then I'm having a really hard time reconsiling that with the drive to keep libdm out of libged |
| 17:41.01 | brlcad | maybe this will help |
| 17:41.13 | starseeker | at least, libdm as I'm imagining it (which is more than a device wrapper) |
| 17:41.34 | brlcad | a command can be written to intimately USE libdm without libged api ever knowing that it existed |
| 17:42.04 | brlcad | that's not an ideal end-state, but it's better than type exposure |
| 17:42.36 | brlcad | e.g., say you have a command that needs to know what is drawn, and libdm somehow statefully was aware of that information |
| 17:43.22 | brlcad | the app could register a "here's what's displayed" function with the ged struct that is passed to ged_whatever() .. which that function calls |
| 17:44.13 | brlcad | call that "simple method A" |
| 17:45.08 | starseeker | so functab style callbacks? |
| 17:45.38 | brlcad | "ideal method B" would be to have ged have API that has some label->set notion so the app could create a set called "active geometry" and provide either a callback or provide identifiers |
| 17:46.37 | starseeker | that has to be synced with the display manager (intimately - any change to the libged list would have to pass immediately to the display manager) |
| 17:46.49 | brlcad | yes, method A would be akin to functab ... libged still relies on libdm from a library dependency standpoint, but the app created that dependency |
| 17:47.31 | brlcad | ideally the API for method A would expose no libdm types, so libged could remain dependency-free symbolwise |
| 17:47.43 | brlcad | i.e., no libdm headers on the implementation |
| 17:48.11 | brlcad | method B is far better, but just a little bit more work to define the ged api |
| 17:49.35 | starseeker | I'm not sure how to proceed then. I need to radically rework how libdm does business, and as matters stand right now that means anywhere display lists (libged, mged, whatever) are in play I need to rework how they're handled |
| 17:49.36 | brlcad | ideal method C" would be to have ged API fully contain some notion of display sets (in agnostic terms, i.e., predefined containers), views on those display sets (in fully generalized terms), and geometry associated with each |
| 17:50.57 | brlcad | method C was the original design plan |
| 17:51.06 | brlcad | it's documented somewhere, but don't recall exactly where .. maybe a header |
| 17:52.02 | brlcad | method C lets you really capture any action I could conceive an application performing, whether GUI or command-based, embedded or otherwise |
| 17:52.03 | starseeker | but how do we guarantee thay any change to the display sets also updates the display manager? Does all access to the geometry list go through functions? |
| 17:52.43 | brlcad | the app sets up the ged context |
| 17:53.33 | brlcad | so the ged API is either "these events happened, handle them" or we make it explicit where the app registers handlers for given events |
| 17:54.16 | starseeker | doesn't that constrain us to a fixed set of event types? |
| 17:54.37 | brlcad | could be as simple as "the geometry in the ged context I got back is different than the one I gave you, so update the display" and we'd avoid events and callbacks, but that's a loose guarantee |
| 17:55.43 | brlcad | there is nothing that precludes having dynamic events, but a very limited set of event types does cover everything we currently do |
| 17:56.22 | brlcad | especially with method C, you end up basically covering display, view, and geometry events ... the only thing you're missing is any GUI events that are already fully in the app's domain |
| 17:57.53 | starseeker | There's a "Conceptual Documentation for LIBGED" in ged.h - is that it? |
| 17:59.57 | starseeker | so under method C, libdm would take the view struct and operate on that? |
| 18:00.25 | starseeker | and it would be the applications responsibility to do so? |
| 18:00.53 | starseeker | or is the libdm call embedded as a callback in the view update() concept by the application? |
| 18:02.39 | brlcad | that looks like a simplified version of it in ged.h |
| 18:03.42 | brlcad | making libdm take the view struct would make libged a libdm dependency, which would similarly be as undesirable as the reverse from an encapsulation perspective |
| 18:03.54 | brlcad | I'd expect the application to set up what it wants |
| 18:05.36 | brlcad | if it's going to use libdm to display things, it's going to be the one responsible for wiring it up |
| 18:06.07 | starseeker | is fine with that, if we can figure out what we need to define and set up to make it work |
| 18:06.58 | brlcad | what will probably work best and most automatic would be for libged to define an update callback interface that the app would register, that callback has front-end state (e.g., pointers to Qt data structures or libdm std::maps or whatever) so it would do the work to update based on the response |
| 18:07.24 | brlcad | or more generally, an event callback interface where "update" is just one of many possible events |
| 18:18.01 | Notify | 03BRL-CAD:carlmoore * 61485 brlcad/trunk/doc/docbook/system/mann/en/picket_fence.xml: add comma, use boldface for -r in paragraph, and rearrange/reword Example; also put space between 2 arguments in the Example |
| 18:26.19 | Notify | 03BRL-CAD:n_reed * 61486 (brlcad/branches/brep-debug/src/libbrep/debug_plot.cpp brlcad/branches/brep-debug/src/libbrep/debug_plot.h): simplify surface plots to include only the knot isocurves used during overlap detection |
| 18:48.14 | hcurtis | These questions are for anyone and everyone: 1) Since I'm a beginner, what should I do to become a better programmer? 2) What helped you when you were first getting started in programming? I know I need to keep reading, taking classes, and writing code, but maybe you would have additional suggestions I'm not yet aware of. |
| 18:55.29 | brlcad | hcurtis: what you know is really 95% of the effort |
| 18:55.41 | brlcad | write code (every day) |
| 18:56.01 | brlcad | lots and lots of code |
| 18:56.07 | brlcad | as much as you can, with specific goals in mind |
| 18:56.13 | brlcad | and once you are proficient with the basic syntax, read code (every day) |
| 18:57.27 | brlcad | how do you get proficient building furniture? you build furniture. the more the better. |
| 18:57.53 | hcurtis | Ok |
| 19:00.05 | brlcad | of course you have to have place to begin (example code, tutorials, classes, reading websites) and you'll make lots of mistakes |
| 19:00.46 | brlcad | but that's to be expected, we've all spent hours hunting down some problem only to find it was a single character typo at some point in the learning adventure |
| 19:01.29 | hcurtis | True |
| 19:02.08 | brlcad | really, though, you shouldn't obsess on those beginning points -- reading and writing code is how you will mostly learn how to read and write code |
| 19:03.28 | brlcad | I suggest thinking up the simplest smallest possible application that would be interesting to you, and working towards that as a goal |
| 19:04.01 | hcurtis | That's a good idea. |
| 19:04.11 | clock | brlcad, "you shouldn't obsess" - I think telling someone what mental states to have is generally considered disrespectful |
| 19:07.01 | brlcad | clock: I don't see it that way when someone asks for advice, as considering how to mentally frame and approach a learning problem can very much influence the outcome |
| 19:08.00 | brlcad | perhaps "my suggestion for anyone wanting to learn something would be to not spend a lot of relative time reading about learning that thing, but actually doing that thing" |
| 19:09.40 | brlcad | someone suggested to me to not worry about making coding mistakes when I was younger, and I like to think it was helpful -- especially contrasted with other students I knew that had an overwhelming sense of defeat after making mistake after mistake, seemingly endlessly |
| 19:13.15 | brlcad | wonders if Douglas Adams considered how disrespectful he was being telling everyone "Don't Panic" :) |
| 19:19.47 | clock | "Don't Panic" is another example yes |
| 19:33.32 | hcurtis | brlcad: Thanks |
| 19:48.02 | Notify | 03BRL-CAD:starseeker * 61487 brlcad/trunk/src/other/libgdiam/gdiam.cpp: Start trying to use the Monotone chain hull approach for libgdiam, in the hope that it will provide a more robust convex hull. Right now, the code is imperfectly adapted to the libgdiam structures so it's not clear if it will work. |
| 19:50.21 | n_reed | I think this two-part animated video is a friendly summary of the typical programming advice: https://www.youtube.com/watch?v=WCuUWGmatpU |
| 19:59.49 | brlcad | n_reed: that's pretty awesome, thanks for sharing that video -- hadn't seen it before |
| 20:10.10 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 20:14.06 | Notify | 03BRL-CAD Wiki:Sean * 7439 /wiki/An_Introduction_To_New_Developers: link to a pair of good videos on being a dev |
| 20:21.29 | *** join/#brlcad mihaineacsu (~mihaineac@92.81.55.66) | |
| 20:27.54 | mihaineacsu | brlcad: in order to link rtweight and gqa with libcurl, I probably need to modify cmakelists. Any advice on how to that? |
| 20:28.38 | mihaineacsu | I managed to compile rtweight by adding -lcurl flag in link.txt in the build folder; tested it out and it worked fine with a remote density file. |
| 20:32.04 | n_reed | brlcad: glad you like it. now if only I actually followed all of that advice =) |
| 20:41.25 | hcurtis | n_reed: I agree with Sean. Great videos. Thanks for posting that link. |
| 20:45.40 | Notify | 03BRL-CAD:n_reed * 61488 brlcad/branches/brep-debug/src/libtclcad/tclcad_obj.c: have dplot only trigger an autoview after the first draw to an empty display |
| 21:14.31 | Notify | 03BRL-CAD:ejno * 61489 (brlcad/trunk/src/conv/3dm/conv3dm-g.cpp brlcad/trunk/src/conv/3dm/conv3dm-g.hpp brlcad/trunk/src/conv/CMakeLists.txt): import textures using libicv (in progress) |
| 22:03.58 | Notify | 03BRL-CAD Wiki:Ankeshanand * 7440 /wiki/User:Ankeshanand/GSoC14/logs: /* Week 6 */ |
| 22:06.50 | Notify | 03BRL-CAD Wiki:Albertcoder * 7441 /wiki/User:Albertcoder/GSoC2014/logs: /* Week 6 */ |
| 23:03.06 | *** join/#brlcad KimK (~Kim__@ip68-102-30-143.ks.ok.cox.net) | |