Re: fast blitting with Quartz

  • Hey Kenny,

    (Long time no see!)

    If you are using NSScrollView and NSClipView for your scrolling, then
    this is all built in for you. (See -setCopiesOnScroll: in NSClipView,
    which defaults to YES.) The clip view will do the blitting of your
    view content that was already on screen, and the rectangle passed
    into your view's -drawRect: method will just consist of the 1% of new
    data. So all you need to do to be efficient is to just make sure that
    you pay attention to the rectangle argument passed in to your -
    drawRect: and only draw that rectangle.

    Hope this helps,
    - Greg

    On Sep 28, 2007, at 9:28 AM, Kenny Leung wrote:

    > Hi All.
    >
    > Part of this is more curiosity than anything, but I hope you will
    > indulge me.
    >
    > The situation is this: I would like to have very fast on-screen
    > blitting to support a scrolling-chart like drawing.
    >
    > In the old NeXTstep days of pswraps, there was this cool PostScript
    > operator called "composite" that would blit bits in the current
    > graphics context. So if you were doing a scrolling chart, you would
    > just have to composite the 99% of stuff you already had on-screen,
    > and draw the 1% of new data.
    >
    > Question 1: Does anybody know of the current Quartz equivalent for
    > doing this? I image that the NSScrollView/NSClipView combination
    > knows how to do this, but I have not been able to find the function
    > to do it.
    >
    > Question 2: If you can no longer do this, what would be an
    > efficient strategy to do this? Seems like the same could be
    > achieved using 2 NSImages - composite 99% from one to the other,
    > draw the 1%, composite on-screen, flip, rinse, lather, repeat. But
    > that seems high on both memory usage, and takes one more composite
    > than the optimal version.
    >
    > Thanks for any insight into this!
    >
    > -Kenny
    >
    > P.S. If any of you remember my NeXTstep program KPerfmon, it used
    > this trick.
previous month september 2007 next month
MTWTFSS
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Go to today