/**
   * Rotate the primitive. For a macro, it is different than for the other primitive, since we need
   * to rotate its coordinate system.
   *
   * @param bCounterClockWise specify if the rotation should be done counterclockwise.
   * @param ix the x coordinate of the center of rotation
   * @param iy the y coordinate of the center of rotation
   */
  public void rotatePrimitive(boolean bCounterClockWise, int ix, int iy) {
    super.rotatePrimitive(bCounterClockWise, ix, iy);

    if (bCounterClockWise) o = (o + 3) % 4;
    else o = ++o % 4;

    changed = true;
  }
 /**
  * Mirror the primitive. For a macro, it is different than for the other primitive, since we just
  * need to toggle the mirror flag.
  *
  * @param xpos the x value of the pivot axis.
  */
 public void mirrorPrimitive(int xpos) {
   super.mirrorPrimitive(xpos);
   m ^= true;
   changed = true;
 }
 /**
  * Specifies that the current primitive has been modified or not. If it is true, during the redraw
  * all parameters should be calulated from scratch.
  *
  * @param c the value of the parameter.
  */
 public void setChanged(boolean c) {
   super.setChanged(c);
   macro.setChanged(c);
 }