Opened 7 years ago

Last modified 6 months ago

#1265 reviewing feature request

Create HeuristicLab.Visualization

Reported by: abeham Owned by: abeham
Priority: medium Milestone: HeuristicLab 4.0
Component: Visualization Version: branch
Keywords: Cc:

Description (last modified by jkarder)

The drawing plugin from the prerelease version should be refactored and included in HeuristicLab 3.3 as a generic possibility for creating custom interactive controls.

This ticket has to be merged into stable before #2205

Change History (68)

comment:1 Changed 7 years ago by abeham

  • Status changed from new to accepted

comment:2 Changed 7 years ago by abeham

r4773

  • Created branch for HeuristicLab.Drawing
  • Updated license headers, namespaces and versions

comment:3 Changed 7 years ago by swagner

I would suggest to name this plugin HeuristicLab.Visualization instead of HeuristicLab.Drawing.

comment:4 Changed 7 years ago by abeham

r4776

  • Renamed HeuristicLab.Drawing to HeuristicLab.Visualization

comment:5 Changed 7 years ago by mkommend

  • Component changed from ### Undefined ### to Visualization
  • Summary changed from Create HeuristicLab.Drawing to Create HeuristicLab.Visualization

comment:6 Changed 7 years ago by abeham

r4831

  • Added a simple batch file that builds the project (without launching VS)

comment:7 Changed 7 years ago by abeham

r4874

  • Updated build script with recent version in trunk (see #1285)

comment:8 Changed 7 years ago by abeham

r5170

  • Set project to compile against .NET 40

comment:9 Changed 6 years ago by abeham

  • Priority changed from highest to medium

comment:10 Changed 5 years ago by bburlacu

r7617: ChartControl.cs: fixed memory leak in GenerateImage() method.

comment:11 Changed 5 years ago by bburlacu

r7780: Fixed zoom and small issue with selection. Added tool tips.

comment:12 Changed 5 years ago by bburlacu

r8215: Introduced a hash for primitives in order to improve lookup performance (Contains method).

comment:13 Changed 5 years ago by bburlacu

r8219: Group.cs: Replaced primitive list with a linked list as it better fits the requirements (random insertion of primitives in the beginning or middle of the list) and gives better performance.

comment:14 Changed 4 years ago by bburlacu

r9415: Added save file functionality in emf and bitmap formats.

comment:15 Changed 4 years ago by bburlacu

r9491: Added mouse wheel support to the picture box.

comment:16 Changed 3 years ago by bburlacu

  • Owner changed from abeham to bburlacu
  • Status changed from accepted to assigned

comment:17 Changed 3 years ago by bburlacu

  • Status changed from assigned to accepted

comment:18 Changed 3 years ago by bburlacu

r10513: Added TextPrimitive and LabeledPrimitive. Fixed group drawing order.

comment:19 Changed 3 years ago by bburlacu

r10515: Removed bitmap private member and converted to auto-property (Bitmap property was never used).

comment:20 Changed 3 years ago by bburlacu

r10516: Replaced LabeledPrimitive with LabeledEllipse and LabeledRectangle, removed TextPrimitive (no need having another primitive type just for text). Removed project .user file.

comment:21 Changed 3 years ago by abeham

Instead of deriving a new type wouldn't it make more sense to just add a Text property to the existing Rectangle and draw the string if it is !string.IsNullOrEmpty ?

comment:22 Changed 3 years ago by bburlacu

I think that's a good idea. Thanks.

r10518: Removed labeled primitives and added text property to the RectangularPrimitiveBase. If the string is not null or empty it is drawn centered inside the rectangular primitive.

comment:23 Changed 3 years ago by bburlacu

r10831: Added MaximumFontSize property to RectangularPrimitiveBase.

comment:24 Changed 3 years ago by bburlacu

r10836: Improved scaling of font size when zooming so that it takes into account vertical dimensions as well.

comment:25 Changed 3 years ago by bburlacu

r11654: Updated target to .net 4.5

comment:26 Changed 2 years ago by gkronber

  • Owner changed from bburlacu to architects
  • Status changed from accepted to assigned

comment:27 Changed 2 years ago by ascheibe

  • Owner changed from architects to bburlacu

comment:28 Changed 2 years ago by gkronber

r12535: updated copyright to 2015

comment:29 Changed 2 years ago by gkronber

  • Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.12
  • Owner changed from bburlacu to gkronber
  • Status changed from assigned to accepted

comment:30 Changed 2 years ago by gkronber

r12536: copied tree layout engines and tree primitives from trunk to visualization branch

comment:31 Changed 2 years ago by gkronber

r12537: fixed namespace

comment:32 Changed 2 years ago by gkronber

  • Milestone changed from HeuristicLab 3.3.12 to HeuristicLab 3.3.13

comment:33 Changed 22 months ago by gkronber

  • Milestone changed from HeuristicLab 3.3.13 to HeuristicLab 4.0.x Backlog

comment:34 Changed 22 months ago by jkarder

  • Owner changed from gkronber to jkarder
  • Status changed from accepted to assigned

comment:35 Changed 22 months ago by jkarder

  • Status changed from assigned to accepted

comment:36 Changed 22 months ago by jkarder

r13045: merged changes from abeham

comment:37 Changed 22 months ago by jkarder

  • Owner changed from jkarder to abeham
  • Status changed from accepted to reviewing

comment:38 Changed 22 months ago by abeham

In my opinion the handling of modes should be improved. I have discussed this with jkarder already, but want to give a summary here: The enum that has been used to store the current "mode" of the chart has not been suitable for extension, I changed this in that I'm using static readonly instances of a class ChartMode (which is still clumsy). The default chart supports "Select", "Move", "ZoomIn" and "ZoomOut". In derived charts there are modes for creating certain objects, connecting objects, etc. These are usually implemented in that a new mode is created. In the current implementation this functionality creates big if-then cascades inside the mouse event handlers of the ChartControl. However it would be nice if the chart control would not care about this and just forward these events to a mode class which makes the appropriate actions. It would be nice if we wouldn't need a new ChartControl class for every new Chart class. The different mode instances that a chart would support could be supplied by the chart class. The chart control could then create buttons on its toolbar for every mode.

comment:39 Changed 22 months ago by jkarder

  • Owner changed from abeham to jkarder
  • Status changed from reviewing to assigned

comment:40 Changed 22 months ago by jkarder

  • Status changed from assigned to accepted

comment:41 Changed 22 months ago by jkarder

r13076: implemented new chart mode concept

comment:42 Changed 22 months ago by jkarder

  • Description modified (diff)

comment:43 Changed 22 months ago by jkarder

r13105: worked on visualization

  • added BackgroundColor to IChart
  • added RulerChartMode
  • renamed MoveChartMode to PanChartMode

comment:44 Changed 22 months ago by jkarder

r13106: fixed bug in ChartControl

comment:45 Changed 22 months ago by jkarder

r13107: fixed ZoomOutChartMode

comment:46 Changed 22 months ago by jkarder

r13108: moved previousLocation assignment to ChartMode class

comment:47 Changed 22 months ago by jkarder

r13112: implemented new render stage concept

comment:48 Changed 22 months ago by jkarder

r13114: worked on visualization

  • removed BackgroundColor and PictureBox from ChartControl
  • updated chart modes

comment:49 Changed 22 months ago by jkarder

r13115: worked on visualization

  • added context menu item for chart modes
  • added ShowToolBar to ChartControl
  • updated chart modes

comment:50 Changed 22 months ago by jkarder

r13122: worked on visualization

  • added default chart mode
  • updated SelectChartMode

comment:51 Changed 22 months ago by jkarder

r13132: worked on visualization

  • added Selected to ChartMode
  • added PrimitiveAttribute

comment:52 Changed 21 months ago by jkarder

  • Milestone changed from HeuristicLab 4.0 to HeuristicLab 3.3.13
  • Owner changed from jkarder to abeham
  • Status changed from accepted to reviewing

comment:53 Changed 21 months ago by abeham

Using the grid only in a renderstage would make SnapToGrid methods obsolete. I would suggest to introduce a "Canvas" property in the Chart of type ICanvas which has Snap() methods (not necessarily grid). Grid would then be an ICanvas. Also please create a SolidCanvas that would just fill everything with a certain color. Implement a base class Canvas that implements the snap methods virtual (and which does nothing), overwrite these in Grid.

comment:54 Changed 21 months ago by abeham

  • Owner changed from abeham to jkarder
  • Status changed from reviewing to assigned

comment:55 Changed 21 months ago by jkarder

  • Milestone changed from HeuristicLab 3.3.13 to HeuristicLab 4.0

comment:56 Changed 21 months ago by jkarder

  • Status changed from assigned to accepted

comment:57 Changed 21 months ago by jkarder

r13444: worked on visualization

  • added private setter to VisualizableType

comment:58 Changed 17 months ago by bburlacu

r13716: Added option to select the SmoothingMode in the ChartControl. Introduced a LabeledPrimitive which encapsulates a RectangularPrimitiveBase primitive and supports drawing a text label on top of it. Introduced a set of useful methods in the PrimitiveUtil class for calculating intersection points between linear and rectangular primitives (useful for connecting shapes together).

comment:59 Changed 17 months ago by bburlacu

r13717: Updated license year to 2016.

comment:60 Changed 16 months ago by jkarder

r13753: worked on visualization

  • brought back support for SnapToGrid methods
  • updated license headers

comment:61 Changed 16 months ago by jkarder

r13762: worked on visualization

  • added shortcut handling prototype

comment:62 Changed 16 months ago by jkarder

r13763: worked on visualization

  • added null check for shortcut actions

comment:63 Changed 16 months ago by jkarder

  • Owner changed from jkarder to abeham
  • Status changed from accepted to reviewing

comment:64 Changed 16 months ago by jkarder

r13769: worked on visualization

  • set KeyEventArgs.Handled to true if shortcut was recognized

comment:65 Changed 16 months ago by jkarder

r13798: worked on visualization

  • fixed bug in primitive selection
  • added SelectedPrimitivesChanged event

comment:66 Changed 16 months ago by bburlacu

r13822: Removed C# 4.6 language features from ChartControl.cs (default property value) to fix compilation.

comment:67 Changed 16 months ago by jkarder

r13832: worked on visualization

  • keep lower left of chart during resizing

comment:68 Changed 6 months ago by abeham

r14679: fixed output paths for some build configurations

Note: See TracTickets for help on using tickets.