public override void Draw(Graphics drawer, Bitmap[] images, WatchState state) { AmPm?.Draw(drawer, images, state); var hours = AmPm == null ? state.Time.Hour : state.Time.Hour % 12; var drawingOrder = DrawingOrder ?? 0x1234; foreach (var position in DrawingOrderIterator.Iterate(drawingOrder)) { switch (position) { case DrawingOrderPosition.HourTens: Hours?.Tens?.Draw(drawer, images, hours % 100 / 10); break; case DrawingOrderPosition.HourOnes: Hours?.Ones?.Draw(drawer, images, hours % 10); break; case DrawingOrderPosition.MinuteTens: Minutes?.Tens?.Draw(drawer, images, state.Time.Minute % 100 / 10); break; case DrawingOrderPosition.MinuteOnes: Minutes?.Ones?.Draw(drawer, images, state.Time.Minute % 10); break; default: Logger.Warn("Not supported element {0} in DrawingOrder value", position); break; } } Seconds?.Draw(drawer, images, state.Time.Second); }