Picks what the artists draw (see the module documentation), then the frame's origin (if it shows axes or its name label).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(DrawableTrajectory), | intent(in), | target | :: | self | ||
| type(PickCamera), | intent(in) | :: | cam |
the pick camera |
||
| real(kind=wp), | intent(in) | :: | to_root(4,4) |
the frame's transform to the root frame |
||
| type(PickHit), | intent(inout), | allocatable | :: | hits(:) |
hits are added to hits(1:n) |
|
| integer, | intent(inout) | :: | n |
number of hits |
subroutine drawable_pick(self, cam, to_root, hits, n) class(DrawableTrajectory), intent(in), target :: self type(PickCamera), intent(in) :: cam !! the pick camera real(wp), intent(in) :: to_root(4,4) !! the frame's transform to the root frame type(PickHit), allocatable, intent(inout) :: hits(:) !! hits are added to hits(1:n) integer, intent(inout) :: n !! number of hits integer :: k if (self%contents_shown()) then call attach_frames(self) do k = 1, self%n_artists if (.not. self%artists(k)%p%pickable_) cycle select type (a => self%artists(k)%p) class is (CurveArtist) if (wants(cam, PICK_CURVE)) call curve_pick(a, self, cam, to_root, hits, n) class is (SegmentArtist) if (wants(cam, PICK_SEGMENT)) call segment_artist_pick(a, self, cam, to_root, hits, n) class is (MarkerArtist) if (wants(cam, PICK_MARKER)) call marker_pick(a, self, cam, to_root, hits, n) end select end do end if call self%ReferenceFrame%pick(cam, to_root, hits, n) end subroutine drawable_pick