[FreeType] Incorrect application of glyph positioning in the Y direction
[WebKit-https.git] / Source / WebCore / platform / mac / WebCoreFullScreenPlaceholderView.mm
1 /*
2  * Copyright (C) 2012-2018 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "WebCoreFullScreenPlaceholderView.h"
28
29 #if PLATFORM(MAC)
30
31 #include "LocalizedStrings.h"
32 #include "WebCoreFullScreenWarningView.h"
33 #include <wtf/text/WTFString.h>
34
35 @implementation WebCoreFullScreenPlaceholderView
36
37 - (id)initWithFrame:(NSRect)frameRect
38 {
39     self = [super initWithFrame:frameRect];
40     if (!self)
41         return nil;
42
43     self.wantsLayer = YES;
44     self.autoresizesSubviews = YES;
45     self.layerContentsPlacement = NSViewLayerContentsPlacementScaleProportionallyToFit;
46     self.layerContentsRedrawPolicy = NSViewLayerContentsRedrawNever;
47
48     _effectView = adoptNS([[NSVisualEffectView alloc] initWithFrame:frameRect]);
49     _effectView.get().wantsLayer = YES;
50     _effectView.get().autoresizesSubviews = YES;
51     _effectView.get().autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
52     _effectView.get().blendingMode = NSVisualEffectBlendingModeWithinWindow;
53     _effectView.get().hidden = YES;
54     _effectView.get().state = NSVisualEffectStateActive;
55
56 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
57     _effectView.get().material = NSVisualEffectMaterialPopover;
58 #else
59     _effectView.get().material = NSVisualEffectMaterialLight;
60     _effectView.get().appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantLight];
61 #endif
62
63     [self addSubview:_effectView.get()];
64
65     _exitWarning = adoptNS([[NSTextField alloc] initWithFrame:NSZeroRect]);
66     _exitWarning.get().autoresizingMask = NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin | NSViewMaxYMargin;
67     _exitWarning.get().bordered = NO;
68     _exitWarning.get().drawsBackground = NO;
69     _exitWarning.get().editable = NO;
70     _exitWarning.get().font = [NSFont systemFontOfSize:27];
71     _exitWarning.get().selectable = NO;
72     _exitWarning.get().stringValue = WebCore::clickToExitFullScreenText();
73     _exitWarning.get().textColor = [NSColor tertiaryLabelColor];
74     [_exitWarning sizeToFit];
75
76     NSRect warningFrame = [_exitWarning.get() frame];
77     warningFrame.origin = NSMakePoint((frameRect.size.width - warningFrame.size.width) / 2, frameRect.size.height / 2);
78     _exitWarning.get().frame = warningFrame;
79     [_effectView addSubview:_exitWarning.get()];
80
81     return self;
82 }
83
84 - (NSResponder *)target
85 {
86     return _target.get().get();
87 }
88
89 - (void)setTarget:(NSResponder *)target
90 {
91     _target = target;
92 }
93
94 @dynamic contents;
95
96 - (void)setContents:(id)contents
97 {
98     [[self layer] setContents:contents];
99 }
100
101 - (id)contents
102 {
103     return [[self layer] contents];
104 }
105
106 - (void)setExitWarningVisible:(BOOL)visible
107 {
108     [_effectView setHidden:!visible];
109 }
110
111 - (void)mouseDown:(NSEvent *)event
112 {
113     UNUSED_PARAM(event);
114     [_target cancelOperation:self];
115 }
116
117 @end
118
119 #endif // !PLATFORM(IOS_FAMILY)