feat: label alpha tweak for on-screen widgets
This commit is contained in:
1 parent
86a0ff46ee
commit
10ceac2ce3
7 files changed
+68
-8
No files matched your search
@@ -393,6 +393,7 @@ static CGRect layoutViewBounds;
|
|||||||
buttonState.widthFactor = [self normalizeSizeWidthFactorWith:widgetView and:buttonState];
|
buttonState.widthFactor = [self normalizeSizeWidthFactorWith:widgetView and:buttonState];
|
||||||
buttonState.heightFactor = [self normalizeSizeHeightFactor:widgetView and:buttonState];
|
buttonState.heightFactor = [self normalizeSizeHeightFactor:widgetView and:buttonState];
|
||||||
buttonState.backgroundAlpha = widgetView.backgroundAlpha;
|
buttonState.backgroundAlpha = widgetView.backgroundAlpha;
|
||||||
|
buttonState.labelAlpha = widgetView.labelAlpha;
|
||||||
buttonState.borderWidth = widgetView.borderWidth;
|
buttonState.borderWidth = widgetView.borderWidth;
|
||||||
buttonState.autoTapInterval = widgetView.autoTapInterval;
|
buttonState.autoTapInterval = widgetView.autoTapInterval;
|
||||||
buttonState.vibrationStyle = widgetView.vibrationStyle;
|
buttonState.vibrationStyle = widgetView.vibrationStyle;
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
|
|
||||||
@property (nonatomic, assign) CGFloat oscLayerSizeFactor; // for OnScreenController CALayer
|
@property (nonatomic, assign) CGFloat oscLayerSizeFactor; // for OnScreenController CALayer
|
||||||
@property (nonatomic, assign) CGFloat backgroundAlpha;
|
@property (nonatomic, assign) CGFloat backgroundAlpha;
|
||||||
|
@property (nonatomic, assign) CGFloat labelAlpha;
|
||||||
@property (nonatomic, assign) uint8_t vibrationStyle;
|
@property (nonatomic, assign) uint8_t vibrationStyle;
|
||||||
@property (nonatomic, assign) uint8_t mouseButtonAction;
|
@property (nonatomic, assign) uint8_t mouseButtonAction;
|
||||||
@property (nonatomic, assign) uint16_t autoTapInterval;
|
@property (nonatomic, assign) uint16_t autoTapInterval;
|
||||||
|
|||||||
@@ -52,6 +52,7 @@
|
|||||||
[encoder encodeFloat:self.stickIndicatorOffset forKey:@"stickIndicatorOffset"];
|
[encoder encodeFloat:self.stickIndicatorOffset forKey:@"stickIndicatorOffset"];
|
||||||
[encoder encodeFloat:self.oscLayerSizeFactor forKey:@"oscLayerSizeFactor"];
|
[encoder encodeFloat:self.oscLayerSizeFactor forKey:@"oscLayerSizeFactor"];
|
||||||
[encoder encodeFloat:self.backgroundAlpha forKey:@"backgroundAlpha"];
|
[encoder encodeFloat:self.backgroundAlpha forKey:@"backgroundAlpha"];
|
||||||
|
[encoder encodeFloat:self.labelAlpha forKey:@"labelAlpha"];
|
||||||
[encoder encodeFloat:self.borderWidth forKey:@"borderWidth"];
|
[encoder encodeFloat:self.borderWidth forKey:@"borderWidth"];
|
||||||
[encoder encodeObject:self.widgetShape forKey:@"widgetShape"];
|
[encoder encodeObject:self.widgetShape forKey:@"widgetShape"];
|
||||||
[encoder encodeFloat:self.minStickOffset forKey:@"minStickOffset"];
|
[encoder encodeFloat:self.minStickOffset forKey:@"minStickOffset"];
|
||||||
@@ -79,7 +80,8 @@
|
|||||||
self.decelerationRate = [decoder decodeFloatForKey:@"decelerationRate"];
|
self.decelerationRate = [decoder decodeFloatForKey:@"decelerationRate"];
|
||||||
self.stickIndicatorOffset = [decoder decodeFloatForKey:@"stickIndicatorOffset"];
|
self.stickIndicatorOffset = [decoder decodeFloatForKey:@"stickIndicatorOffset"];
|
||||||
self.oscLayerSizeFactor = [decoder decodeFloatForKey:@"oscLayerSizeFactor"];
|
self.oscLayerSizeFactor = [decoder decodeFloatForKey:@"oscLayerSizeFactor"];
|
||||||
self.backgroundAlpha = [decoder decodeFloatForKey:@"backgroundAlpha"];
|
self.backgroundAlpha = [decoder containsValueForKey:@"backgroundAlpha"] ? [decoder decodeFloatForKey:@"backgroundAlpha"] : 0.5;
|
||||||
|
self.labelAlpha = [decoder containsValueForKey:@"labelAlpha"] ? [decoder decodeFloatForKey:@"labelAlpha"] : 0.82;
|
||||||
self.borderWidth = [decoder decodeFloatForKey:@"borderWidth"];
|
self.borderWidth = [decoder decodeFloatForKey:@"borderWidth"];
|
||||||
self.widgetShape = [decoder decodeObjectForKey:@"widgetShape"];
|
self.widgetShape = [decoder decodeObjectForKey:@"widgetShape"];
|
||||||
self.minStickOffset = [decoder decodeFloatForKey:@"minStickOffset"];
|
self.minStickOffset = [decoder decodeFloatForKey:@"minStickOffset"];
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ import UIKit
|
|||||||
|
|
||||||
@objc public var borderWidth: CGFloat = 0.0
|
@objc public var borderWidth: CGFloat = 0.0
|
||||||
@objc public var backgroundAlpha: CGFloat = 0.5
|
@objc public var backgroundAlpha: CGFloat = 0.5
|
||||||
|
@objc public var labelAlpha: CGFloat = 0.82
|
||||||
@objc public var vibrationStyle: Int = 6
|
@objc public var vibrationStyle: Int = 6
|
||||||
@objc public var latestTouchLocation: CGPoint
|
@objc public var latestTouchLocation: CGPoint
|
||||||
@objc public var selfViewOnTheRight: Bool = false
|
@objc public var selfViewOnTheRight: Bool = false
|
||||||
@@ -455,6 +456,11 @@ import UIKit
|
|||||||
setupView()
|
setupView()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc public func tweakLabelAlpha(alpha:CGFloat){
|
||||||
|
labelAlpha = alpha
|
||||||
|
label.textColor = UIColor(white: 1.0, alpha: labelAlpha)
|
||||||
|
}
|
||||||
|
|
||||||
private func tweakAlpha(){
|
private func tweakAlpha(){
|
||||||
// setup default border from self.backgroundAlpha
|
// setup default border from self.backgroundAlpha
|
||||||
let realBackgroundAlpha = self.backgroundAlpha - 0.18 // offset to be consistent with legacy onScreen controller layer opacity
|
let realBackgroundAlpha = self.backgroundAlpha - 0.18 // offset to be consistent with legacy onScreen controller layer opacity
|
||||||
@@ -563,7 +569,7 @@ import UIKit
|
|||||||
label.adjustsFontSizeToFitWidth = true
|
label.adjustsFontSizeToFitWidth = true
|
||||||
label.minimumScaleFactor = 0.1 // Adjust the scale factor as needed
|
label.minimumScaleFactor = 0.1 // Adjust the scale factor as needed
|
||||||
|
|
||||||
label.textColor = UIColor(white: 1.0, alpha: 0.82)
|
label.textColor = UIColor(white: 1.0, alpha: labelAlpha)
|
||||||
label.textAlignment = .center
|
label.textAlignment = .center
|
||||||
label.shadowColor = .black
|
label.shadowColor = .black
|
||||||
label.shadowOffset = CGSize(width: 1, height: 1)
|
label.shadowOffset = CGSize(width: 1, height: 1)
|
||||||
|
|||||||
@@ -577,6 +577,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
|||||||
[widgetView resizeWidgetView]; // resize must be called after relocation
|
[widgetView resizeWidgetView]; // resize must be called after relocation
|
||||||
[widgetView adjustTransparencyWithAlpha:buttonState.backgroundAlpha];
|
[widgetView adjustTransparencyWithAlpha:buttonState.backgroundAlpha];
|
||||||
[widgetView adjustBorderWithWidth:buttonState.borderWidth];
|
[widgetView adjustBorderWithWidth:buttonState.borderWidth];
|
||||||
|
[widgetView tweakLabelAlphaWithAlpha:buttonState.labelAlpha];
|
||||||
[widgetView setupAutoTapTimer];
|
[widgetView setupAutoTapTimer];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2701,6 +2701,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Label alpha: %.2f" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "标签透明度: %.2f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "標籤透明度: %.2f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "標籤透明度: %.2f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Later" : {
|
"Later" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|||||||
+32
-6
@@ -28,6 +28,7 @@
|
|||||||
BOOL isToolbarHidden;
|
BOOL isToolbarHidden;
|
||||||
OSCProfilesManager* profilesManager;
|
OSCProfilesManager* profilesManager;
|
||||||
OnScreenWidgetView* selectedWidgetView;
|
OnScreenWidgetView* selectedWidgetView;
|
||||||
|
bool labelAlphaLoaded;
|
||||||
CALayer* selectedControllerLayer;
|
CALayer* selectedControllerLayer;
|
||||||
CGRect controllerLoadedBounds;
|
CGRect controllerLoadedBounds;
|
||||||
bool widgetViewSelected;
|
bool widgetViewSelected;
|
||||||
@@ -152,6 +153,7 @@
|
|||||||
widgetView.sizeReference = [self getCurrentWidgetSizeReference];
|
widgetView.sizeReference = [self getCurrentWidgetSizeReference];
|
||||||
[widgetView resizeWidgetView]; // resize must be called after relocation
|
[widgetView resizeWidgetView]; // resize must be called after relocation
|
||||||
[widgetView adjustTransparencyWithAlpha:buttonState.backgroundAlpha];
|
[widgetView adjustTransparencyWithAlpha:buttonState.backgroundAlpha];
|
||||||
|
[widgetView tweakLabelAlphaWithAlpha:buttonState.labelAlpha];
|
||||||
[widgetView adjustBorderWithWidth:buttonState.borderWidth];
|
[widgetView adjustBorderWithWidth:buttonState.borderWidth];
|
||||||
[self.onScreenWidgetViews addObject:widgetView];
|
[self.onScreenWidgetViews addObject:widgetView];
|
||||||
}
|
}
|
||||||
@@ -335,6 +337,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)switchAlphaSlider:(UISwipeGestureRecognizer *)sender {
|
||||||
|
if(!widgetViewSelected) return;
|
||||||
|
labelAlphaLoaded = !labelAlphaLoaded;
|
||||||
|
if(labelAlphaLoaded) [self.widgetAlphaSlider setValue: self->selectedWidgetView.labelAlpha];
|
||||||
|
else [self.widgetAlphaSlider setValue: self->selectedWidgetView.backgroundAlpha];
|
||||||
|
[self widgetAlphaSliderMoved:self.widgetAlphaSlider];
|
||||||
|
}
|
||||||
|
|
||||||
/* animates the toolbar up and off the screen or back down onto the screen */
|
/* animates the toolbar up and off the screen or back down onto the screen */
|
||||||
- (void) moveToolbar:(UISwipeGestureRecognizer *)sender {
|
- (void) moveToolbar:(UISwipeGestureRecognizer *)sender {
|
||||||
BOOL isPad = [[UIDevice currentDevice].model hasPrefix:@"iPad"];
|
BOOL isPad = [[UIDevice currentDevice].model hasPrefix:@"iPad"];
|
||||||
@@ -663,6 +673,7 @@
|
|||||||
newWidget.sizeReference = widget.sizeReference;
|
newWidget.sizeReference = widget.sizeReference;
|
||||||
[newWidget resizeWidgetView]; // resize must be called after relocation
|
[newWidget resizeWidgetView]; // resize must be called after relocation
|
||||||
[newWidget adjustTransparencyWithAlpha:widget.backgroundAlpha];
|
[newWidget adjustTransparencyWithAlpha:widget.backgroundAlpha];
|
||||||
|
[newWidget tweakLabelAlphaWithAlpha:widget.labelAlpha];
|
||||||
[newWidget adjustBorderWithWidth:widget.borderWidth];
|
[newWidget adjustBorderWithWidth:widget.borderWidth];
|
||||||
[self.onScreenWidgetViews addObject:newWidget];
|
[self.onScreenWidgetViews addObject:newWidget];
|
||||||
self->selectedWidgetView = newWidget;
|
self->selectedWidgetView = newWidget;
|
||||||
@@ -753,6 +764,8 @@
|
|||||||
|
|
||||||
- (void)widgetViewTapped: (NSNotification *)notification{
|
- (void)widgetViewTapped: (NSNotification *)notification{
|
||||||
//self.undoButton.alpha = selectedWidgetView.layoutChanges.count>1 && !CGPointEqualToPoint(selectedWidgetView.layoutChanges.lastObject.CGPointValue, selectedWidgetView.initialCenter)? 1.0 : 0.3;
|
//self.undoButton.alpha = selectedWidgetView.layoutChanges.count>1 && !CGPointEqualToPoint(selectedWidgetView.layoutChanges.lastObject.CGPointValue, selectedWidgetView.initialCenter)? 1.0 : 0.3;
|
||||||
|
// labelAlphaLoaded = false;
|
||||||
|
|
||||||
[self hideStickIndicators];
|
[self hideStickIndicators];
|
||||||
|
|
||||||
// receive the selected widgetView obj passed from the notification
|
// receive the selected widgetView obj passed from the notification
|
||||||
@@ -835,7 +848,8 @@
|
|||||||
[self autoFitLabel:self.widgetHeightLabel];
|
[self autoFitLabel:self.widgetHeightLabel];
|
||||||
[self.widgetHeightLabel setText:[LocalizationHelper localizedStringForKey:@"Height: %.2f", self->selectedWidgetView.deNormalizedHeightFactor]];
|
[self.widgetHeightLabel setText:[LocalizationHelper localizedStringForKey:@"Height: %.2f", self->selectedWidgetView.deNormalizedHeightFactor]];
|
||||||
|
|
||||||
[self.widgetAlphaSlider setValue: self->selectedWidgetView.backgroundAlpha];
|
if(labelAlphaLoaded) [self.widgetAlphaSlider setValue: self->selectedWidgetView.labelAlpha];
|
||||||
|
else [self.widgetAlphaSlider setValue: self->selectedWidgetView.backgroundAlpha];
|
||||||
[self autoFitLabel:self.widgetAlphaLabel];
|
[self autoFitLabel:self.widgetAlphaLabel];
|
||||||
[self widgetAlphaSliderMoved:self.widgetAlphaSlider];
|
[self widgetAlphaSliderMoved:self.widgetAlphaSlider];
|
||||||
|
|
||||||
@@ -942,13 +956,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)widgetAlphaSliderMoved:(UISlider* )sender{
|
- (void)widgetAlphaSliderMoved:(UISlider* )sender{
|
||||||
[self.widgetAlphaLabel setText:[LocalizationHelper localizedStringForKey:@"Alpha: %.2f", sender.value]];
|
if(labelAlphaLoaded){
|
||||||
if(self->selectedWidgetView != nil && self->widgetViewSelected){
|
[self.widgetAlphaLabel setText:[LocalizationHelper localizedStringForKey:@"Label alpha: %.2f", sender.value]];
|
||||||
[self->selectedWidgetView adjustTransparencyWithAlpha:sender.value];
|
[selectedWidgetView tweakLabelAlphaWithAlpha:sender.value];
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
[self.widgetAlphaLabel setText:[LocalizationHelper localizedStringForKey:@"Alpha: %.2f", sender.value]];
|
||||||
|
if(self->selectedWidgetView != nil && self->widgetViewSelected){
|
||||||
|
[self->selectedWidgetView adjustTransparencyWithAlpha:sender.value];
|
||||||
|
}
|
||||||
|
|
||||||
if(self->selectedControllerLayer != nil && self->controllerLayerSelected){
|
if(self->selectedControllerLayer != nil && self->controllerLayerSelected){
|
||||||
[self.layoutOSC adjustControllerLayerOpacityWith:self->selectedControllerLayer and:sender.value];
|
[self.layoutOSC adjustControllerLayerOpacityWith:self->selectedControllerLayer and:sender.value];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1138,6 +1158,12 @@
|
|||||||
|
|
||||||
[self.widgetAlphaSlider addTarget:self action:@selector(widgetAlphaSliderMoved:) forControlEvents:(UIControlEventValueChanged)];
|
[self.widgetAlphaSlider addTarget:self action:@selector(widgetAlphaSliderMoved:) forControlEvents:(UIControlEventValueChanged)];
|
||||||
self.widgetAlphaLabel.text = [LocalizationHelper localizedStringForKey:@"Alpha"];
|
self.widgetAlphaLabel.text = [LocalizationHelper localizedStringForKey:@"Alpha"];
|
||||||
|
self.widgetAlphaLabel.userInteractionEnabled = true;
|
||||||
|
UITapGestureRecognizer *alphaSwitchTapGesture =
|
||||||
|
[[UITapGestureRecognizer alloc] initWithTarget:self
|
||||||
|
action:@selector(switchAlphaSlider:)];
|
||||||
|
[self.widgetAlphaLabel addGestureRecognizer:alphaSwitchTapGesture];
|
||||||
|
|
||||||
|
|
||||||
[self.widgetBorderWidthSlider addTarget:self action:@selector(widgetBorderWidthSliderMoved:) forControlEvents:(UIControlEventValueChanged)];
|
[self.widgetBorderWidthSlider addTarget:self action:@selector(widgetBorderWidthSliderMoved:) forControlEvents:(UIControlEventValueChanged)];
|
||||||
self.widgetBorderWidthLabel.text = [LocalizationHelper localizedStringForKey:@"Border width"];
|
self.widgetBorderWidthLabel.text = [LocalizationHelper localizedStringForKey:@"Border width"];
|
||||||
|
|||||||
Reference in new issue
Block a user