home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / freedraft.tar.gz / freedraft.tar / FREEdraft-050298 / journal < prev    next >
Text File  |  1998-05-02  |  27KB  |  824 lines

  1.  
  2. //+++++++++++++++++++++++++++++++++++
  3. // copyright 1997,1998 Cliff Johnson
  4. // iamcliff@ix.netcom.com
  5. // all rights reserved
  6. //+++++++++++++++++++++++++++++++++++
  7. //
  8. // THIS FILE IS >>> NOT <<< UNDER THE GNU GENERAL PUBLIC LICENSE. 
  9. // YOU MAY NOT REPRODUCE THIS FILE, IN WHOLE OR IN PART, IN ANY FORM,
  10. // EXCEPT AS NOTED BELOW WITHOUT THE PERMISSION OF THE AUTHOR.
  11. //
  12. // THIS FILE CAN BE REPRODUCED VERBATIM, COMPLETE AND UNALTERED, AS PART OF A 
  13. // COMPLETE FREEdraft SOURCE DISTRIBUTION.
  14. //
  15. // YOU ARE FREE TO REDISTRIBUTE THE FREEdraft SOURCE WITHOUT INCLUDING THIS FILE.
  16. //
  17. //
  18. //+++++++++++++++++++++++++++++++
  19.  
  20. Changes and random thoughts ( and not so random ones I hope ) are cataloged here.  
  21.  
  22. ******************************
  23. Sat May  2 11:56:34 EDT 1998
  24. ******************************
  25.  
  26. release 0.3.3   050298 
  27.  
  28. New module "MEASUREMENT" which for now includes these functions:
  29.  
  30. WHAT IS?   - which displays basic geometric information about a selected entity
  31. DISTANCE   - to measure distances between 2 points, between 2 parallel lines/segments
  32.          or from a point to a line, segment, circle, or arc support.
  33. ANGLE      - to measure the angle between 2 lines/segments
  34.  
  35. Added to the GEOMETRY module:
  36.  
  37. Create:support - to create the underlying sketch geometry (line or circle) from a segment or arc.
  38. Lines: orthoginal - to produce a line, perpendicular to a line, segment, circle, or arc, tangent
  39.                     to a point, circle, or arc.
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. ******************************
  47. Mon Apr 27 23:03:58 EDT 1998
  48. ******************************
  49.  
  50. Another exciting release: freedraft_042798  ( 0.3.2 )
  51.  
  52. In this episode, the function for a circle by radius and 2 constraints is (seems to be) working.
  53. This includes the circle tangent to 2 other circles, which is totally wacked out in implementation,
  54. but actually works! (much to my suprise - actually, not, but it is such a complicated thing, finding
  55. all the possible solutions and then choosing the correct one. Now I think I know how to implement the 
  56. general 3 constraint circle... coming soon)
  57.  
  58. ******************************
  59. Fri Apr 24 00:06:08 EDT 1998
  60. ******************************
  61. Dr. Wampler's stuff is in now and working! 
  62.  
  63. instead of providing my own V functions, I created a patch to be applied to the V sources
  64. v 1.18.  
  65.  
  66. I am going to release another snapshot now: freedraft_042498.tar.gz   (Release 0.3.1)
  67.  
  68.  
  69. ******************************
  70. Thu Apr 23 19:40:03 EDT 1998
  71. ******************************
  72. Crude input boxes now working for point real number input. 
  73. Dr. Bruce gave me some stuff so that the return key can close the dialog, but I have not
  74. put it in yet, so for the moment the user must press the OK button. Yech!  I hate that. 
  75.  
  76. Function Circle by radius and center now implemented
  77.  
  78. Point by keyboard modifier implemented with KB button or just hitting the space bar when point
  79. is an candidate input. 
  80.  
  81. Did some optimization to circles so that the number of points used to draw it changes
  82. with the size on the screen. 
  83.  
  84. Rearranged the selection buttons and such, included a few icon buttons. looks a little sharper. 
  85.  
  86. What I really want to do is institute a Regeneration function in the viewer. 
  87. This function would turn all the objects which are not on the screen, or which are very small,
  88. invisible. This is not practicle at drawing time. It would might be most speed efficient to put
  89. the circle and arc optimizing code here as well. Perhaps 2 functions, Regenerate, to invisibleize 
  90. things off the screen, and Redisplay to optimize circles, arcs, and whatever else. 
  91.  
  92. To be really optimal, maybe restructure the canvasRegister, to have separate lists for
  93. what is drawable, and what is registered. This way, the canvas does not even have to 
  94. ask for each entity- are you displayed?
  95.  
  96.  
  97.  
  98.  
  99. ******************************
  100. Mon Apr 20 19:34:59 EDT 1998
  101. ******************************
  102.  
  103. Basic save and recall are now working... So I am announcing release 0.3 !!!  yee haa!
  104.  
  105. ******************************
  106. Sat Apr 18 10:17:25 EDT 1998
  107. ******************************
  108. --->Moved the instansiation of the drawables into an independant class, where all 
  109. the drawable pointers are accessable via an enum value like FD_DRAWABLE_POINT, etc. 
  110.  
  111. Now I can easily save the drawable with the entity when writing a model to disk. 
  112.  
  113. ---> Added Layer to the Attribute class.
  114.  
  115. In the future I will want to have a layer attribute, and I will need it to be in the file format 
  116. now. 
  117.  
  118. ---> Changed directory name ENTITIES to GEOMLIB2D
  119. ---> Moved pick and pickgeom from CORE to GEOMLIB2D
  120. ---> Changed the Makefiles so that the contents of GEOMLIB2D get made as a shared library. 
  121.     ***This breaks building on other platforms besides linux-elf. ****
  122.  
  123. ---> Added GPL header to all the makefiles.
  124.  
  125. *** minor bugs :
  126.  
  127.     If a modifier is activated, and the function is aborted, reinitialized, or another function
  128. is chosen before the modifier is completed, the button does not reset to the unselected state. 
  129.  
  130. ** 
  131.     SUM should be off by default.
  132.  
  133. ---> Changed Circle-Center back to initializing each time. 
  134.  
  135.  
  136.  
  137. ******************************
  138. Fri Apr 17 20:30:20 EDT 1998
  139. ******************************
  140. Before starting on save/recall (again) I redid the exception classes to all inherit from
  141. a base class. Maybe I should use the standard exceptions instead?
  142.  
  143.  
  144. ******************************
  145. Thu Apr 16 23:00:19 EDT 1998
  146. ******************************
  147.  
  148. How to save/recall? These are my initial thoughts:
  149.  
  150. Me thinks save/recall should be based on the contents of the CanvasRegister, yet not
  151. built into it. 
  152.  
  153. There is some argument for basing saving on the GeomBank contents, but it would be 
  154. more difficult to manage saving the graphical attributes. Besides, as things stand now,
  155. there is nothing in the bank that is not in the register. Possibly this will change in 
  156. the future. 
  157.  
  158. saving:
  159.  
  160. The iterator behavior of the canvas register can be used to iterate through the 
  161. contained entities (like the drawing routine doesAAA) , for each entity, its type, data, and attributes
  162. are written serially to the file. 
  163.  
  164. Sounds simple enough. 
  165.  
  166. possible problems:
  167.  
  168. Drawable support: Currently, the drawables are instansiated 
  169. as static members of the menuhandler children - how do should I save which drawables are
  170. used for which type? This is not much of a problem now, as each type of entity has but one
  171. drawable that it uses. What happens if I want to have different drawables for the same
  172. type of entity? 
  173.  
  174. Answer: A drawable table - or enums which match the drawables - and move the drawables into
  175. the viewer OR somplace where all the drawables can be made at the same time (program start)
  176. and assigned indecies which save/recall can use. Should have done that a long time ago anyway.
  177.  
  178. problem: Adding new entity types. 
  179.  
  180.  
  181.  
  182.  
  183. *****************************
  184. Sun Apr 12 15:21:46 EDT 1998
  185. *****************************
  186.  
  187. New features are linestyle and linethickness editing.
  188.  
  189. I have been thinking that the menuhandler class could be redesigned into a more modular
  190. machine which can load individual functions - based on a common function class. 
  191.  
  192. The menuhandler stuff is very big. geommenuhandler.cpp is more than 2000 lines! yikes. 
  193. all thoses try- catch try catch stuff takes a lot of space up.
  194.  
  195.  
  196.  
  197. *****************************
  198. Wed Apr  1 00:17:59 EST 1998
  199. *****************************
  200.  
  201. Have added color editing ( which is only slightly broken ),
  202. as well as segment and arc trimming/ relimiting and cutting. 
  203.  
  204.  
  205. *****************************
  206. Tue Mar 24 23:23:24 EST 1998
  207. *****************************
  208.  
  209. Tracing is pretty stable now, with only one minor bug that I see when terminating
  210. a line drive entity with a point check entity. 
  211.  
  212. Highlighting of selected entities is now implemented and controlable through the MenuHandler.
  213. Its really neat. 
  214.  
  215. Visibility has been implemented as far as the CanvasRegister goes, but nothing is in the UI yet.
  216.  
  217. I want to now do just a couple more things before releasing 0.3:
  218.     Color and linestyle control for constructing and editing geometry.
  219.  
  220.     Saving and recalling of points lines circles and arcs.
  221.  
  222.  
  223. *****************************
  224. Mon Mar 23 00:55:02 EST 1998
  225. *****************************
  226. Got the trace function to work pretty swell. You can now create a contour make
  227. of a chain of arcs, lines, and points. Nifty. 
  228.  
  229.  
  230. *****************************
  231. Sat Mar 21 14:06:35 EST 1998
  232. *****************************
  233.  
  234. V released v1.18. Included is support for lesstif. - I tried it but there are 
  235. problems with mesa and lesstif OR mesa and V1.18 OR all three, so I could'nt
  236. get it to work. 
  237.  
  238. I considered for a moment changing to the native drawing methods of v, 
  239. but that would totally mess up selections and be a big mess in general, so 
  240. for now I am rejecting it.  
  241.  
  242. Mesa seems no longer to include the widgets... maybe I will include them here. 
  243.  
  244.  
  245.  
  246.  
  247. ****************************
  248. Sun Mar  8 17:11:45 EST 1998 
  249. ****************************
  250.  
  251. Changed the release to a date based system - like da gimp et all... 
  252.  
  253. Got most of my exception handling problems worked out.  Got almost all of
  254. the c-style error handling replaced already. 
  255.  
  256. Fixed a bug in delete, but the type masks are not set correctly.
  257. In fact they are not set correcly most everyplace.
  258. To do this I changed the deletion function to use a pick, just like
  259. all the other function handlers. This simplifies things in some respects
  260. in that I do not need to keep the Selection object around just for deletion.
  261. To do this I added a method to the GeomBank to return a handle, given an
  262. address - ( or throw an exception) 
  263.  
  264. The grammer modifiers seem to be working well. 
  265.  
  266. There is a bug in Points->Create. Button 1 will not create a point.
  267. MenuHandler::Get1Pick is throwing an exception because the pick is local
  268. with button 1. I Think that the GetXPick functions need to be seriously
  269. updated already. They are totally a total cludge.
  270.  
  271. Possibilities:
  272.  
  273.     GetNPicks(int n) throw (ComException)
  274.  
  275. This would be a more general solution along the current lines. 
  276. But it does'nt address a problem with the current approach:
  277. The picks are only checked when they are needed by the 
  278. solving function. It would be better if a function
  279. would set up - somehow - an array of expected pick types and rules -
  280. which could be handled as each pick is made.
  281. Of course this would be much more compilcated...
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294. ****************************
  295. Tue Mar  3 20:01:33 EST 1998 - release level 0.2i
  296. ****************************
  297. I am taking a shot at using egcs with the idea to use exception handling and rtti features
  298. instead of my nasty messy error handling facilities and geometry type data
  299. memebers. 
  300.  
  301. So far the exception handling is blowing up in my face.  I am rebuilding the
  302. compiler with a binutils patch that reportedly fixes exception handling woes.
  303. It could just be that I don't know shit about using exception handling and
  304. have just totally messed up. :)  AH, well, time to learn something gnu.
  305.  
  306. egcs exception handling report = Oh my! it's still not working.
  307.  
  308. ****************************
  309. Sat Dec 20 16:00:32 EST 1997 - release level 0.2f
  310. ****************************
  311.  
  312. upgraded GeomLib2d with a bunch more combinations of entity types.
  313. In particular:
  314.     PointConstraints2D now handles  works for picks which are any combination
  315.     of Points, Lines, Circles, Segments, and Arcs. 
  316.  
  317.  
  318. ****************************
  319. Tue Dec 16 19:19:17 EST 1997
  320. ****************************
  321.  
  322. Implimented a dialog for options when creating closed arcs
  323. Changed the behavior of the circle center + 1 function
  324.  
  325. release level is now 0.2e 
  326.  
  327.  
  328. ****************************
  329. Sun Dec 14 02:31:40 EST 1997
  330. ****************************
  331.  
  332. Segment and Arc entities are up an running. 
  333. Added basic support for linestyles
  334. Countour tracing function is still experimental - work with persistent points only. 
  335. Closed arcs sans options is working.
  336. Arc through 3 point is working but seems buggy. 
  337.  
  338. Posted announcement to comp.os.linux.announce
  339.  
  340. Started putting new stuff at the top of this file. 
  341.  
  342.  
  343. **********************************************************************************************
  344. **********************************************************************************************
  345. **********************************************************************************************
  346. **********************************************************************************************
  347. **********************************************************************************************
  348. **********************************************************************************************
  349. **********************************************************************************************
  350.  
  351.  
  352. 1/25/97 FREE Engineer journal started
  353.  
  354.  
  355.  
  356. :: I now have a working 2D viewer, system to create and manage geometric objects, a 
  357.    system with which I can register objects with the viewer.
  358.  
  359. :: I have created nearly 500 points without problem, except the pickstack overflowing,
  360.    which should be fixible just by defining a bigger stack in vdcmdwin.h
  361.     -->changed vdglcanvas::BUFFSIZE  to 4096, enough for selection of 1000 entities
  362.  
  363. :: Implemented a rounding method for the Point class: { Point Point::Round() }
  364. :: Applied the point rounding to the creation of freely picked points.
  365.  
  366. :: Separated Attributes into 2 classes Attributes and Visibility. 
  367.    The idea is that the Visibility associated with a Handle is 
  368.    used to tell if the Handle referent *should* be drawn, while 
  369.    the Attributes describes *how* to draw it.
  370. - added class Visibility
  371. - added  a Visibility member to class RegisteredEntity
  372. - moved the isVisible and layerValue members from Attributes to Visibility 
  373.  
  374. ::::THink about - drawable class to make representation distinct from geometry type.
  375.            
  376. ::::Interprocess communication - long term architechure. 
  377.  
  378. :: Modified Attributes class by adding thickness member, which represents both point size and
  379.    line thickness for a given entity.
  380.  
  381. :: Modifications to VDGLCanvas::SetAttributes to handle new Attributes object
  382.  
  383.  
  384.  
  385. 1/26/97 
  386.  
  387.  
  388. :: Created a SelectionFilter class - to filter selection be entity type
  389.  
  390. :: Added method TypeMaskBehavior::GetFilter(), returning a SelectionFilter object
  391.    from the current settings of buttons
  392.  
  393. :: Added method SelectStack::Filter(const SelectionFilter& s) returning  a new 
  394.    filtered selectstack 
  395.  
  396. ---> The selection filter is intended to be used by functions so they only have to see the
  397.      entity type they are looking for. 
  398.  
  399. :: Have implemented selection methods on the SelectStack class : Top(), Pop(), and TopOfType(int)
  400.    these should facilitate in selecting the newest entity of a given type.
  401.     ( since the handles will be in order of creation... for now anyway).
  402.  
  403. :: The immediate mode horizontal and vertical line creation (via button 2) is working.
  404.  
  405. --> there is a problem causing a segfault on resize.
  406.  
  407.  
  408. Sun Feb 9 1997:
  409.  
  410. Have been resarching yacc and lex (or flex and bison) for the last week or so. 
  411. Hopfully I will be able to use them to write a parametric language interpreter.
  412.  
  413. Also have started to study unix IPC. 
  414.  
  415. As for FREEdraft, I have started the GeomLib2D class that will supply 2D geometry solutions
  416. to the basic constructions.
  417.  
  418. Basically all the processing which is not the provence of any particular geometry or data
  419. type is handled by this class
  420.  
  421. See GEOMETRY/geomlib2d.h for the details.
  422.  
  423. As of right now, The function SolveLineLineIntersection is working. (testlib.cpp) 
  424.  
  425. I am starting to work on modifing the SelectStack class to add a selection filter 
  426. methods returning objects of type Selection ( a container for the handle and pick coordinates),
  427. based on various criteria. distance to start. 
  428.  
  429. In fact, I think I'll modify the SelectionFilter class, so criteria are specified by it.
  430. if I do that, I can just modify the SelectStack::Filter() method, and not have to 
  431. add a new one. 
  432.  
  433.  
  434. :: SelectionFilter has been modified adding two private data members int depth, and int criteria.
  435.  
  436. It is not up to SelectStack::Filter to process the new filter object correctly.
  437.  
  438. Am installing enums for different criteria values: NONE, CLOSEST, FURTHEST(?) ... 
  439. Well, for now at least NONE and CLOSEST
  440.  
  441.  
  442. Mon Morning 1:10 AM
  443.  
  444. Ive got filtering of the selection by closest type working now by
  445. modifications to SelectStack, SelectionFilter, Selection, 
  446.  
  447. vdCmdWindow has been changed in the menu handling innerds to use the new SelectionFilter,
  448. and take a Selection object off the top of SelectStack passed from VDGLCanvas.
  449.  
  450.  
  451. Now to get the multi pick actions implemented - i.e line by two constraints and point by 
  452. intersection of two lines.
  453.  
  454. Perhaps a stack of selections which could be pushed and popped until the necessary amounts are
  455. ready....
  456.  
  457. Mon Feb 10 1997:
  458.  
  459.  
  460. General case;
  461.  
  462. Action: Line by Two constraints
  463.     parms = 2;
  464.  
  465. Selection Returned
  466.     push(selection)
  467.     parms--;
  468.  
  469. Selection Returned
  470.     push(selection)
  471.     parms--;
  472.  
  473.     parms == 0 : 
  474.     call function(pop(),pop())
  475.  
  476. case with modifiers:
  477.  
  478. Action: Line by Two constraints
  479.     parms = 2;
  480.  
  481.     Action: Modifier>Intersection
  482.         parms += 2;
  483.         mparms = 2;
  484.         
  485.  
  486.         Selection Returned
  487.             push(selection)
  488.             mparms--;
  489.             parms--;
  490.  
  491.         Selection Returned
  492.             push(selection)
  493.             mparms--;
  494.             parms--;
  495.         
  496.         mparms == 0 : 
  497.         Selection = Intersection(pop(),pop())
  498.         parms--;
  499.  
  500. Selection Returned
  501.     push(selection)
  502.     parms--;
  503.  
  504.     parms == 0 : 
  505.     call function(pop(),pop())
  506.  
  507.  
  508. I will put this logic into a utility class SelectionManagment.
  509.  
  510.  
  511. :: Moved the Generic Handle vs. Point distance measurment out of SelectStack and made it a 
  512.    public utility function.
  513. :: fixed a bug in vdCmdWindow that was seg-faulting when zero handles received in a SelectStack
  514.  
  515.  
  516. :: re-architechure of the command calling mechinism:
  517.  
  518. currently-... all the entitiy creation functions , ie calls to GeomBank::Create(...)
  519. were nastily processed directly by vdCmdWindow. This is not good, for several reasons...
  520.  
  521. So anyway, I have designed class SelectionHandler, designed to be a member of
  522. the vdcmdwindow, a parser class of sorts, to handle the recipt of Selection objects
  523. of modifiers, and the calling of GeomBank::Create().
  524.  
  525. This has a couple of advantages:
  526.     - modularizes the code
  527.     - abstracts the menu behavior from the menu itself, so multiple 
  528.       selection management derived classes can be used for different menus.
  529.         in fact this is the mechinism for encapsulating entire menu behaviors
  530.  
  531. ++++++++++++++++++++++++++++
  532. Tue Feb 11 19:41:51 EST 1997
  533. ++++++++++++++++++++++++++++
  534.  
  535. The SelectionHandler class is written and a derived class MySelectionHandler as well
  536. to support the current menu. 
  537.  
  538. Major changes are now needed in vdCmdWindow to use the new handler. 
  539.  
  540. Larges tracks of code will have to be ripped out to be replaced by tidy little efficient
  541. functions. What Fun!
  542.  
  543. extensive modifications to <myselectionhandler> 
  544. extensive modifications to <selectionhandler> 
  545. extensive modifications to <vdcmdwin>
  546.  
  547. need to implement library function LineParallel2D(Line,Selection)
  548.  
  549. +++++++++++++++++++++++++++
  550. Sun Feb 16 23:13:24 EST 1997
  551. +++++++++++++++++++++++++++
  552.  
  553. ANNOUNCMENT: VERSION 0.2 Begins now. - my first slanted line!!!!
  554.  
  555. implemented all of the Line and Point functions in the library. They seem to work
  556. although there are bugs.
  557.  
  558. The resulting structure of myselectionhandler, where much more sophisticated than
  559. I first envisioned. 
  560.  
  561. myselectionhandler inherets its functionality and data protected from selectionhandler
  562.  
  563. selectionhandler is aware of the vdCmdWindow (via a pointer) and a friend of 
  564. vdCmdWindow as well. 
  565.  
  566. SelectionHandler encapsulates a limited set of methods from other children of the command
  567. window : Create(), Register(), Redraw(), and SetTypeMask() being the most important. 
  568.  
  569. These functions are used by the inherited MySelectionHandler class, responding to menu
  570. calls and what not. 
  571.  
  572. The SelectionHandler also swallowed vdCmdWindow::FunctionMenuCommand()  (which no longer
  573. exists) All its functionallity has been transfered out of the command window.
  574.  
  575. This theoretically makes the menus changable, simply by loading another version
  576. MySelectionHandler, into the commmand window. The question is now, can I change the 
  577. labels on the buttons?
  578.  
  579. Now: I want to review the code looking to minimize dependancies. 
  580. Or at least identify them all. 
  581.  
  582. Then I need to implement the circle functions.
  583.  
  584. +++++++++++++++++++++++++++
  585. Thu Feb 20 22:59:04 EST 1997
  586. +++++++++++++++++++++++++++
  587.  
  588. Went to the linux losers group. extrodinarily pathetic waste of 2 hours.
  589.  
  590.  
  591. The manual says that you can change the labels on buttons. This is much more better than Icons
  592. for now. 
  593.  
  594. Now I have to build this final changable menu mechinism into the system. 
  595.  
  596. I also have to get working and test the modifier buttons. at least 'intersection of' . 
  597. Maybe I should call them 'adjective' buttons???
  598.  
  599. create line from circle(...) near point() to intersection of line1 and line2 
  600. create line from circle(...) near point(...) to circle2(...) near point(...)  
  601.  
  602. IDEA: DYNAMIC PROMPTING  
  603.  
  604.     update the text information line each pick prompting for the next expected...
  605.  
  606. for example:
  607.  
  608. pick> 'Line2Consts'
  609.  
  610. prompt: create line from
  611.  
  612. pick> a circle on the screen ...
  613.  
  614. prompt: create line from circle(...) near point(...) to 
  615.  
  616. pick> 'intersection of' adjective 
  617.  
  618. prompt: create line from circle(...) near point(...) to intersection of 
  619.  
  620. pick> first line 
  621.  
  622. prompt: create line from circle(...) near point(...) to intersection of line(...) and 
  623.  
  624. pick>  a  circle
  625.  
  626. prompt: create line from circle(...) near point(...) to intersection of line(...) and circle(...)\
  627. near point(...) 
  628.  
  629.  
  630.  
  631. +++++++++++++++++++++++++++++++++++++
  632. Sun Mar  2 10:07:48 EST 1997
  633. +++++++++++++++++++++++++++++++++++++
  634.  
  635. Back from the sales meeting. What fun.
  636.  
  637. Now I have the Intersection modifier working correctly, having more properly subdivied the 
  638. functions of the MenuHandler, and specialized MyMenuHandler classes. 
  639.  
  640. The MenuHandler class has been given responsibility for the modifiers, and all permanent menu
  641. stuff, while the MyMenuHandler (in this case) handles the specialized processing for 
  642. the current menu. 
  643.  
  644. If I design this right, I should be able just to load a different MenuHandler inheriting class
  645. into the vCmdWindow, like "DimensioningMenuHandler", "MillingMenuHandler" or what not, and
  646. have the system work as necessary. 
  647.  
  648. Current activities:
  649.  
  650. >I am now working on the Delete function. 
  651.  
  652. Besides the implementation in the MenuHandler family, this should involve:
  653.  
  654. Modification of the canvas, attaching a second registry, for highlighted entities, such as 
  655. entities selected for deletion and what not. 
  656.  
  657.     void VDGLCanvas::HighlightRegister(RegisteredEntities* re)
  658.     void VDGLCanvas::ClearHighlightRegister();
  659.  
  660. These entities will then be drawn after the primary registered entities. In this way
  661. displayed things can be redrawn with different attributes for highlighting. 
  662.  
  663.  
  664. ****************************
  665. Tue Mar  4 19:09:32 EST 1997
  666. ****************************
  667.  
  668. Besides adding a highlight register, I have implemented, at least mostly, the 
  669. separation between the viewer, and what is being drawn. 
  670.  
  671. To do this, the RegisteredEntity class was modifier by adding a data member of 
  672. type DrawableGeom*,   The DrawableGeom family of classes encapsulates the actual 
  673. OpenGL commands necessary to render the registered entity.
  674.  
  675. This has the effect of dramatically simplfing the DrawRegisteredENtities() and 
  676. SelectRegisteredEntities() methods of VDGLCanvas.
  677.  
  678.     From about 30 lines of code down to 7  in DrawRegisteredEntities()
  679.  
  680.  
  681. Everytime I add a new feature, I am amazed that the whole thing still works!
  682.  
  683. need to :
  684.     get delete to work. Its just not finished.
  685.  
  686.     possibly get rid of selectRegisteredEntities. The algorithms are so close now.
  687.  
  688.     Implement a hightlight buffer of Geom*,DrawableGeom* pairs. Think about this 
  689.     approach to highlighting, is it better than using a second canvasRegister?
  690.  
  691. The CanvasRegister class is fast evolving into an encapsulation of the MODEL of the MVC.
  692. By adding Names to the RegisteredEntity class, 
  693.  
  694. The MVC of FREEdraft:
  695.  
  696. MODEL 
  697.  
  698.     class CanvasRegister
  699.     |
  700.     ? int nextID;        // static ( ? means static. by the way... )
  701.     |
  702.     + class HandleTable     // symbol table of handle, name, local id triples 
  703.     |
  704.     v class RegisteredEntity
  705.  
  706.     class RegisteredEntity
  707.     |
  708.     |
  709.     + class Handle
  710.     |
  711.     + class Attributes
  712.     |
  713.     + class Visibility
  714.     |
  715.     + class DrawableGeom*
  716.     
  717.  
  718. VIEW:
  719.  
  720.     V family
  721.  
  722.  
  723. CONTROLLER:
  724.  
  725.     menuhandler family
  726.  
  727.  
  728.  
  729. Product plan
  730.  
  731.  
  732.     Version 0.1  Basic menu layout, functioning bank
  733.  
  734.     Version 0.2  M: CanvasRegister evolves into the encapsulation of the MODEL.
  735.                 - geometric definitions
  736.                 - display attributes
  737.                 - drawing methods
  738.              V: The 2D canvas is inpendant of geometry types and drawables. 
  739.                 -Zoom,Pan,Center functions
  740.                 -Hot swappable Models, and Highlight lists
  741.                 -Reasonable size limit assumptions 
  742.                 -Picking services
  743.              C: The MenuHandler family, Solver classes
  744.                 - Basic delete handling
  745.                 - Point and Line and some circle functions.
  746.  
  747.     Version 0.3  M: Circles, Named geometry and parameters. basic save and recall.
  748.              V: Color assignment, Group Selection 
  749.              C: circle library functions, menuhandler functions. 
  750.  
  751.     Version 0.4  M: Segments, Arcs, Contours. Reliable save and recall
  752.              V: Line Styles
  753.              C: 
  754.  
  755.     Version 0.5  M: IGES support: read and write - Segments, Arcs, Points.
  756.              V:
  757.              C: User Promting,  Point Dialogs, Value Dialogs, (combo boxes...)
  758.  
  759.     Version 0.6  M: Recording of Session, dependancies - basic parametric mechanism.
  760.              V:
  761.              C: 
  762.  
  763.     Version 0.7  M: Session playback
  764.              V:
  765.              C: 
  766.  
  767.     Version 0.8  M: 
  768.              V:
  769.              C:
  770.  
  771.     Version 0.9  M: 
  772.              V:
  773.              C:
  774.  
  775.  
  776. *****************************
  777. Fri Mar 21 16:47:47 EST 1997
  778. *****************************
  779.  
  780. compilation timings with my *new* 200MHZ IBM/CYRIX processor and M TECHNOLOGY R436e motherboard
  781.  
  782. -> finish at Fri Mar 21 17:19:41 EST 1997 
  783. -> start at  Fri Mar 21 17:18:17 EST 1997
  784.                         -----------
  785.                 1:24   !!!! WOW !!!! I am most impressed with the compilation speeds
  786.     so far.  The Kernel compiles in 6:10.   
  787.  
  788.  
  789. ****************************
  790. Sun Mar 30 11:08:24 EST 1997
  791. ****************************
  792.  
  793.  
  794.  
  795. ****************************
  796. Sun Nov 30 23:10:32 EST 1997
  797. ****************************
  798.  
  799. Add loadable menu support - different MenuHandler related classes can be swapped in and out.
  800. Reorganized everything. New simpler makefiles. Dependancies are not checked as good though.
  801.  
  802. ****************************
  803. Sun Nov 30 23:10:32 EST 1997
  804. ****************************
  805.  
  806. Wrote README file
  807.  
  808. ****************************
  809. Fri Dec  5 21:23:05 EST 1997
  810. ****************************
  811.  
  812. The Circle and DrawableCircle classes are working. 
  813. The CircleCenter function is about 70% implemented. 
  814.  
  815. I solved a problem with reusing free-picked points. 
  816.  
  817. ****************************
  818. Sun Dec  7 15:31:17 EST 1997
  819. ****************************
  820.  
  821. A day that will live in infamy. Circle center works in most cases now. 
  822. Moved the inputString member from the viewer into the menuhandler parent class.
  823.  
  824.