/MapView/Map/RMLayerCollection.h

http://github.com/route-me/route-me · C Header · 74 lines · 22 code · 8 blank · 44 comment · 0 complexity · 9d7ba549f86a745bb9766fe2e67e7cf7 MD5 · raw file

  1. //
  2. // RMLayerSet.h
  3. //
  4. // Copyright (c) 2008-2009, Route-Me Contributors
  5. // All rights reserved.
  6. //
  7. // Redistribution and use in source and binary forms, with or without
  8. // modification, are permitted provided that the following conditions are met:
  9. //
  10. // * Redistributions of source code must retain the above copyright notice, this
  11. // list of conditions and the following disclaimer.
  12. // * Redistributions in binary form must reproduce the above copyright notice,
  13. // this list of conditions and the following disclaimer in the documentation
  14. // and/or other materials provided with the distribution.
  15. //
  16. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  17. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  20. // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  21. // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  22. // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  23. // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  24. // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  25. // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  26. // POSSIBILITY OF SUCH DAMAGE.
  27. #import <Foundation/Foundation.h>
  28. #import "RMFoundation.h"
  29. #import "RMMapLayer.h"
  30. @class RMMapRenderer;
  31. @class RMMapContents;
  32. /*! Appears to be some sort of interface between RMMapContents and markers.
  33. \bug lots of arbitrary-appearing \@synchronized blocks. Old mailing list traffic
  34. claims they're needed, but no one seems to know why. If the #set ivar needs to be guarded,
  35. should be done by \@synchronized(self) and not \@synchronized(sublayers). Maybe the guarding
  36. is needed because of Core Animation thread interactions.
  37. */
  38. @interface RMLayerCollection : RMMapLayer
  39. {
  40. /// The actual collection of all sublayers, including those offscreen.
  41. /// It is ordered back to front.
  42. NSMutableArray *sublayers;
  43. /// Backpointer to map; we need this reference so we can access the projections...
  44. RMMapContents *mapContents;
  45. CGAffineTransform rotationTransform;
  46. }
  47. - (id)initForContents: (RMMapContents *)contents;
  48. //- (void)insertSublayer:(RMMapLayer*) layer below:(RMMapLayer*)sibling;
  49. //- (void)insertSublayer:(RMMapLayer*) layer above:(RMMapLayer*)sibling;
  50. //- (void)removeSublayer:(RMMapLayer*) layer;
  51. - (void)moveToProjectedPoint: (RMProjectedPoint)aPoint;
  52. - (void)moveBy: (CGSize) delta;
  53. - (void)zoomByFactor: (float) zoomFactor near:(CGPoint) center;
  54. - (void)removeSublayer:(CALayer *)layer;
  55. - (void)removeSublayers:(NSArray *)layers;
  56. /// (guess) recompute the screen coordinates for the sublayers (map markers, paths)
  57. /// \deprecated name will change after 0.5
  58. - (void) correctPositionOfAllSublayers;
  59. - (BOOL) hasSubLayer:(CALayer *)layer;
  60. - (void) setRotationOfAllSublayers:(float) angle;
  61. //-(void) drawRect: (CGRect)rect;
  62. //-(CALayer*) layer;
  63. /// Orders layers in the collection based on their position in the map, prioritizing instances/subclass instances of RMMarker above other layers. This is called automatically in addSublayer.
  64. - (void)orderLayers;
  65. @end