예제 #1
0
        void computeNewRegions(int l, SynthWindows synthwins)
        {
            // compute update regions
            // -> common synthesized part, express in new window coords, to be copied
            Window absSynthCached = bufferrgn(l);
            Window absSynthNew    = synthwins.bufferrgn(l);
            Window absOverlap     = absSynthCached.overlap(absSynthNew);

            Window absValidCached  = valid(l).absoluteFrom(bufferrgn(l));
            Window absValidNew     = synthwins.valid(l).absoluteFrom(synthwins.bufferrgn(l));
            Window absValidOverlap = absValidCached.overlap(absValidNew);

            Pair <Window, Window> rgn = computeUpdateRegions(absValidNew, absValidOverlap);

            m_UpdVert[l]    = rgn.first.relativeTo(synthwins.bufferrgn(l));
            m_UpdHorz[l]    = rgn.second.relativeTo(synthwins.bufferrgn(l));
            m_UpdCopySrc[l] = absValidOverlap.relativeTo(bufferrgn(l));
            m_UpdCopyDst[l] = absValidOverlap.relativeTo(synthwins.bufferrgn(l));

            m_BufferRgn[l] = synthwins.bufferrgn(l);
            m_Valid[l]     = synthwins.valid(l);
            m_Requested[l] = synthwins.requested(l);
            m_Cached[l]    = synthwins.m_Cached[l];
        }