Hi Ferran,

The waveforms are a little twisty-turny. Here are some hints to get you
started:

WaveformMark represents the skin's definition of what the hotcue should be
rendered as (an image from file, an auto-generated image, the text to show,
etc.). WaveformRenderMark is a WaveformRendererAbstract class that takes a
WaveformMark and draws it to the screen when its turn comes.

A waveform widget has a stack of WaveformRendererAbstract classes in a list
that are drawn one after the other -- they're like layers. A typical
waveform widget's render stack looks like this:

* background (WaveformRenderBackground)
* end of track highlight (WaveformRendererEndOfTrack)
* preroll drawing (WaveformRendererPreroll)
* mark range (green loop highlight) rendering (WaveformRenderMarkRange)
* signal rendering (the waveform itself -- a class named something like
WaveforRenderXXXSignalXXX depending on the widget)
* beat rendering (WaveformRenderBeat)
* hotcue / cue / loop in-out point rendering (WaveformRenderMark)

So WaveformRenderMark uses WaveformMark as a description of what to draw.
WaveformMark doesn't have access to the track that's loaded while
WaveformRenderMark can get access. Here's an example from
WaveformRenderBeat:

https://github.com/mixxxdj/mixxx/blob/master/src/waveform/renderers/waveformrenderbeat.cpp#L41

One tricky bit is that WaveformRenderMark pre-generates a pixmap that is
drawn during the render step as a performance optimization. In the draw
method of WaveformRenderMark you should set the text of the currently
loaded cue point's label (you can fetch the cues from the track with
TrackInfoObject::getCues) on the WaveformMark (via some new method you
add). If the label changed since the last render then you'll need to
re-generate the pixmap.

Hope that gets you started,
RJ

On Fri, Jan 9, 2015 at 6:02 PM, Ferran Pujol Camins <
ferranpujolcam...@gmail.com> wrote:

> Now I want the hotcue marks to show their cue's name. I see in
> WaveformMark::setKeyAndIndex that m_text place marker is replaced by the
> hotcue number so I could just append the cue's label there. But I have no
> clue about how to bring the hotcue name to this function. Some quick
> guidance with the waveform rendering system will help a lot :)
>
> 2015-01-09 20:31 GMT+01:00 Ferran Pujol Camins <
> ferranpujolcam...@gmail.com>:
>
>> Thank you both I have a better picture now. :)
>>
>> 2015-01-09 19:55 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
>>
>>> This doc is a bit out of date now (doesn't cover ControlObjectSlave) but
>>> it gives the overview of what the heck ControlObject is used for in Mixxx:
>>>
>>> http://mixxx.org/wiki/doku.php/developer_guide_control
>>>
>>> See also: http://mixxx.org/wiki/doku.php/developer_guide
>>>
>>> On Fri, Jan 9, 2015 at 6:19 AM, Daniel Schürmann <dasch...@mixxx.org>
>>> wrote:
>>>
>>>> Hi Ferran,
>>>>
>>>> do not know what exactly you need.
>>>>
>>>> ControlDoublePrivate is th container that holds the double data value
>>>> for atomic read and writes (also on 32 bit targets).
>>>> The ControlObject is the interface, you can use from your code that
>>>> holds a reference to the ControlDoublePrivate.
>>>>
>>>> ControlObject should be used to create a new ControlDoublePrivate and
>>>> should only be used from one object (You will find exceptions in the legacy
>>>> engine code)
>>>>
>>>> All other Objects should use the ControlObjectSlave to access the
>>>> underlying ControlDoublePrivate.
>>>>
>>>> Hope that helps.
>>>>
>>>>
>>>> Kind regards,
>>>>
>>>> Daniel
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2015-01-09 11:16 GMT+01:00 Ferran Pujol Camins <
>>>> ferranpujolcam...@gmail.com>:
>>>>
>>>>> Hello, could someone give me a short explanation about how
>>>>> ControlObject and ControlDoublePrivate interact? I'm quite confused right
>>>>> now and it would help me digest the code quicker.
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Dive into the World of Parallel Programming! The Go Parallel Website,
>>>>> sponsored by Intel and developed in partnership with Slashdot Media,
>>>>> is your
>>>>> hub for all things parallel software development, from weekly thought
>>>>> leadership blogs to news, videos, case studies, tutorials and more.
>>>>> Take a
>>>>> look and join the conversation now. http://goparallel.sourceforge.net
>>>>> _______________________________________________
>>>>> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
>>>>> http://mixxx.org
>>>>>
>>>>>
>>>>> Mixxx-devel mailing list
>>>>> Mixxx-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Dive into the World of Parallel Programming! The Go Parallel Website,
>>>> sponsored by Intel and developed in partnership with Slashdot Media, is
>>>> your
>>>> hub for all things parallel software development, from weekly thought
>>>> leadership blogs to news, videos, case studies, tutorials and more.
>>>> Take a
>>>> look and join the conversation now. http://goparallel.sourceforge.net
>>>> _______________________________________________
>>>> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
>>>> http://mixxx.org
>>>>
>>>>
>>>> Mixxx-devel mailing list
>>>> Mixxx-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>>>
>>>
>>>
>>
>>
>> --
>> Ferran Pujol Camins
>>
>
>
>
> --
> Ferran Pujol Camins
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to