motion_changed Subroutine

private subroutine motion_changed(self, redraw)

With data in another frame (transformed): redraw set if either frame's motion changed, the data frame changed, or the transform began or ended since the points were written.

Arguments

Type IntentOptional Attributes Name
class(TrajectoryArtist), intent(inout) :: self
logical, intent(inout) :: redraw

set to true if everything must be drawn again


Calls

proc~~motion_changed~~CallsGraph proc~motion_changed motion_changed proc~motion_key ReferenceFrame%motion_key proc~motion_changed->proc~motion_key proc~same_pointer same_pointer proc~motion_changed->proc~same_pointer proc~transformed transformed proc~motion_changed->proc~transformed proc~motion_key->proc~motion_key proc~data_revision TrajectoryFollower%data_revision proc~motion_key->proc~data_revision proc~motion_stamp TrajectoryFollower%motion_stamp proc~motion_key->proc~motion_stamp proc~generation Trajectory%generation proc~data_revision->proc~generation proc~revision~2 Trajectory%revision proc~data_revision->proc~revision~2

Called by

proc~~motion_changed~~CalledByGraph proc~motion_changed motion_changed proc~data_changed data_changed proc~data_changed->proc~motion_changed proc~marker_update MarkerArtist%marker_update proc~marker_update->proc~data_changed proc~segment_update SegmentArtist%segment_update proc~segment_update->proc~data_changed proc~write_changed write_changed proc~write_changed->proc~data_changed proc~chain_update ChainArtist%chain_update proc~chain_update->proc~write_changed proc~curve_update CurveArtist%curve_update proc~curve_update->proc~write_changed

Source Code

    subroutine motion_changed(self, redraw)
        class(TrajectoryArtist), intent(inout) :: self
        logical, intent(inout) :: redraw                    !! set to true if everything must be drawn again
        integer :: key(4)
        key = -1
        if (transformed(self)) then
            call self%data_frame%motion_key(key(1), key(2))
            call self%shown_in%motion_key(key(3), key(4))
        end if
        if (any(key /= self%seen_motion) .or. .not. same_pointer(self%data_frame, self%seen_data_frame)) redraw = .true.
        self%seen_motion = key
        self%seen_data_frame => self%data_frame
    end subroutine motion_changed