PageRenderTime 50ms CodeModel.GetById 42ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/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
28#import <Foundation/Foundation.h>
29#import "RMFoundation.h"
30#import "RMMapLayer.h"
31
32@class RMMapRenderer;
33@class RMMapContents;
34
35/*! Appears to be some sort of interface between RMMapContents and markers.
36 
37 \bug lots of arbitrary-appearing \@synchronized blocks. Old mailing list traffic 
38 claims they're needed, but no one seems to know why. If the #set ivar needs to be guarded,
39 should be done by \@synchronized(self) and not \@synchronized(sublayers). Maybe the guarding
40 is needed because of Core Animation thread interactions.
41 */
42@interface RMLayerCollection : RMMapLayer
43{
44	/// The actual collection of all sublayers, including those offscreen.
45	/// It is ordered back to front.
46	NSMutableArray *sublayers;
47	
48	/// Backpointer to map; we need this reference so we can access the projections...
49	RMMapContents *mapContents;
50	CGAffineTransform rotationTransform;
51}
52
53- (id)initForContents: (RMMapContents *)contents;
54
55//- (void)insertSublayer:(RMMapLayer*) layer below:(RMMapLayer*)sibling;
56//- (void)insertSublayer:(RMMapLayer*) layer above:(RMMapLayer*)sibling;
57//- (void)removeSublayer:(RMMapLayer*) layer;
58
59- (void)moveToProjectedPoint: (RMProjectedPoint)aPoint;
60- (void)moveBy: (CGSize) delta;
61- (void)zoomByFactor: (float) zoomFactor near:(CGPoint) center;
62- (void)removeSublayer:(CALayer *)layer;
63- (void)removeSublayers:(NSArray *)layers;
64/// (guess) recompute the screen coordinates for the sublayers (map markers, paths) 
65/// \deprecated name will change after 0.5
66- (void) correctPositionOfAllSublayers;
67- (BOOL) hasSubLayer:(CALayer *)layer;
68- (void) setRotationOfAllSublayers:(float) angle;
69//-(void) drawRect: (CGRect)rect;
70//-(CALayer*) layer;
71/// 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.
72- (void)orderLayers;
73
74@end