On mobile, sorry for brevity. Setup is only done once at skin creation
time. The cue text can change at track load time or when user edits the
text e.g. via the track properties dialog. So you need to check if the text
has changed on every draw. (Or listen to track signals for cue updates)

On Mon, Jan 12, 2015, 11:34 AM Ferran Pujol Camins <
ferranpujolcam...@gmail.com> wrote:

> Also, I've further understood this code (thanks for your hints RJ!). I
> don't feel comfortable setting the text of the WaveformMarks in
> WaveformMarkRenderer. WaveformMarkRenderer already does it's job of
> painting whatever text a WaveformMark happens to have. Doesn't it make more
> sense to modify WaveformMarkSet::setup to construct the hotcue marks
> already with the desired text?
>
> It makes more sense to me, but I'm not 100% sure because I don't
> understand how information about cues reaches these classes: what are all
> those QDomNodes? ALso, what is the default mark?
>
> 2015-01-12 20:21 GMT+01:00 Ferran Pujol Camins <
> ferranpujolcam...@gmail.com>:
>
>> One question: if WaveformMark::setKeyAndIndex(const ConfigKey& key, int
>> i), is called a second time, doesn't this forget to deallocate the old
>> instance of ControlObjectThread?
>>
>> 2015-01-10 0:19 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
>>
>>> 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
>>>>
>>>
>>>
>>
>>
>> --
>> Ferran Pujol Camins
>>
>
>
>
> --
> Ferran Pujol Camins
>
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
www.gigenet.com
_______________________________________________
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