docs: def convert_to_imagecoord(shape, header):
      """Convert the coordlist of `shape` to image coordinates
  
      Parameters
      ----------
      shape : `pyregion.parser_helper.Shape`
          The `Shape` to convert coordinates
  
      header : `~astropy.io.fits.Header`
          Specifies what WCS transformations to use.
  
      Returns
      -------
      new_coordlist : list
          A list of image coordinates defining the shape.
  
      """
      arg_types = _generate_arg_types(len(shape.coord_list), shape.name)
  
      new_coordlist = []
      is_even_distance = True
      coord_list_iter = iter(zip(shape.coord_list, arg_types))
  
      new_wcs = WCS(header)
      pixel_scales = proj_plane_pixel_scales(new_wcs)
  
      for coordinate, coordinate_type in coord_list_iter:
          if coordinate_type == CoordOdd:
              even_coordinate = next(coord_list_iter)[0]
  
              old_coordinate = SkyCoord(coordinate, even_coordinate,
                                        frame=shape.coord_format, unit='degree',
                                        obstime='J2000')
              new_coordlist.extend(
                  np.asscalar(x)
                  for x in old_coordinate.to_pixel(new_wcs, origin=1)
              )
  
          elif coordinate_type == Distance:
              if arg_types[-1] == Angle:
                  degree_per_pixel = pixel_scales[0 if is_even_distance else 1]
  
                  is_even_distance = not is_even_distance
              else:
                  degree_per_pixel = np.sqrt(proj_plane_pixel_area(new_wcs))
  
              new_coordlist.append(coordinate / degree_per_pixel)
  
          elif coordinate_type == Angle:
              new_angle = _estimate_angle(coordinate,
                                          shape.coord_format,
                                          header)
              new_coordlist.append(new_angle)
  
          else:
              new_coordlist.append(coordinate)
  
      return new_coordlist