-
Notifications
You must be signed in to change notification settings - Fork 561
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement blue light filters #1065
Merged
Merged
Changes from 4 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
b5728e9
Add gpu color LUT registers to rosalina
panicbit 38f54fd
Add parts of redshift to rosalina
panicbit d13cde3
Implement blue light filters in rosalina
panicbit d030660
Apply screen filter when waking up from standby
panicbit 71039fc
Remove unnecassary permission declarations
panicbit 74a0b2f
Simplify color LUT writes
panicbit 47916b2
Fix menu thread stack overflow
TuxSH File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* | ||
* This file is part of Luma3DS | ||
* Copyright (C) 2016-2017 Aurora Wright, TuxSH | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
* | ||
* Additional Terms 7.b and 7.c of GPLv3 apply to this file: | ||
* * Requiring preservation of specified reasonable legal notices or | ||
* author attributions in that material or in the Appropriate Legal | ||
* Notices displayed by works containing it. | ||
* * Prohibiting misrepresentation of the origin of that material, | ||
* or requiring that modified versions of such material be marked in | ||
* reasonable ways as different from the original version. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include "menu.h" | ||
|
||
extern Menu screenFiltersMenu; | ||
|
||
int screenFiltersCurrentTemperature; | ||
|
||
void screenFiltersSetDisabled(void); | ||
void screenFiltersReduceBlueLevel1(void); | ||
void screenFiltersReduceBlueLevel2(void); | ||
void screenFiltersReduceBlueLevel3(void); | ||
void screenFiltersReduceBlueLevel4(void); | ||
void screenFiltersReduceBlueLevel5(void); | ||
void screenFiltersSetTemperature(int temperature); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* colorramp.h -- color temperature calculation header | ||
This file is part of Redshift. | ||
|
||
Redshift is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
|
||
Redshift is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with Redshift. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
Copyright (c) 2010-2014 Jon Lund Steffensen <jonlst@gmail.com> | ||
*/ | ||
|
||
#ifndef REDSHIFT_COLORRAMP_H | ||
#define REDSHIFT_COLORRAMP_H | ||
|
||
#include <stdint.h> | ||
|
||
#include "redshift.h" | ||
|
||
void colorramp_fill(uint16_t *gamma_r, uint16_t *gamma_g, uint16_t *gamma_b, | ||
int size, const color_setting_t *setting); | ||
void colorramp_fill_float(float *gamma_r, float *gamma_g, float *gamma_b, | ||
int size, const color_setting_t *setting); | ||
|
||
#endif /* ! REDSHIFT_COLORRAMP_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
/* redshift.h -- Main program header | ||
This file is part of Redshift. | ||
|
||
Redshift is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
|
||
Redshift is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with Redshift. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
Copyright (c) 2013-2017 Jon Lund Steffensen <jonlst@gmail.com> | ||
*/ | ||
|
||
#ifndef REDSHIFT_REDSHIFT_H | ||
#define REDSHIFT_REDSHIFT_H | ||
|
||
#include <stdio.h> | ||
#include <stdlib.h> | ||
|
||
/* The color temperature when no adjustment is applied. */ | ||
#define NEUTRAL_TEMP 6500 | ||
|
||
|
||
/* Location */ | ||
typedef struct { | ||
float lat; | ||
float lon; | ||
} location_t; | ||
|
||
/* Periods of day. */ | ||
typedef enum { | ||
PERIOD_NONE = 0, | ||
PERIOD_DAYTIME, | ||
PERIOD_NIGHT, | ||
PERIOD_TRANSITION | ||
} period_t; | ||
|
||
/* Color setting */ | ||
typedef struct { | ||
int temperature; | ||
float gamma[3]; | ||
float brightness; | ||
} color_setting_t; | ||
|
||
/* Program modes. */ | ||
typedef enum { | ||
PROGRAM_MODE_CONTINUAL, | ||
PROGRAM_MODE_ONE_SHOT, | ||
PROGRAM_MODE_PRINT, | ||
PROGRAM_MODE_RESET, | ||
PROGRAM_MODE_MANUAL | ||
} program_mode_t; | ||
|
||
/* Time range. | ||
Fields are offsets from midnight in seconds. */ | ||
typedef struct { | ||
int start; | ||
int end; | ||
} time_range_t; | ||
|
||
/* Transition scheme. | ||
The solar elevations at which the transition begins/ends, | ||
and the association color settings. */ | ||
typedef struct { | ||
double high; | ||
double low; | ||
int use_time; /* When enabled, ignore elevation and use time ranges. */ | ||
time_range_t dawn; | ||
time_range_t dusk; | ||
color_setting_t day; | ||
color_setting_t night; | ||
} transition_scheme_t; | ||
|
||
|
||
/* Gamma adjustment method */ | ||
typedef struct gamma_state gamma_state_t; | ||
|
||
typedef int gamma_method_init_func(gamma_state_t **state); | ||
typedef int gamma_method_start_func(gamma_state_t *state); | ||
typedef void gamma_method_free_func(gamma_state_t *state); | ||
typedef void gamma_method_print_help_func(FILE *f); | ||
typedef int gamma_method_set_option_func(gamma_state_t *state, const char *key, | ||
const char *value); | ||
typedef void gamma_method_restore_func(gamma_state_t *state); | ||
typedef int gamma_method_set_temperature_func( | ||
gamma_state_t *state, const color_setting_t *setting, int preserve); | ||
|
||
typedef struct { | ||
char *name; | ||
|
||
/* If true, this method will be tried if none is explicitly chosen. */ | ||
int autostart; | ||
|
||
/* Initialize state. Options can be set between init and start. */ | ||
gamma_method_init_func *init; | ||
/* Allocate storage and make connections that depend on options. */ | ||
gamma_method_start_func *start; | ||
/* Free all allocated storage and close connections. */ | ||
gamma_method_free_func *free; | ||
|
||
/* Print help on options for this adjustment method. */ | ||
gamma_method_print_help_func *print_help; | ||
/* Set an option key, value-pair */ | ||
gamma_method_set_option_func *set_option; | ||
|
||
/* Restore the adjustment to the state before start was called. */ | ||
gamma_method_restore_func *restore; | ||
/* Set a specific color temperature. */ | ||
gamma_method_set_temperature_func *set_temperature; | ||
} gamma_method_t; | ||
|
||
|
||
/* Location provider */ | ||
typedef struct location_state location_state_t; | ||
|
||
typedef int location_provider_init_func(location_state_t **state); | ||
typedef int location_provider_start_func(location_state_t *state); | ||
typedef void location_provider_free_func(location_state_t *state); | ||
typedef void location_provider_print_help_func(FILE *f); | ||
typedef int location_provider_set_option_func( | ||
location_state_t *state, const char *key, const char *value); | ||
typedef int location_provider_get_fd_func(location_state_t *state); | ||
typedef int location_provider_handle_func( | ||
location_state_t *state, location_t *location, int *available); | ||
|
||
typedef struct { | ||
char *name; | ||
|
||
/* Initialize state. Options can be set between init and start. */ | ||
location_provider_init_func *init; | ||
/* Allocate storage and make connections that depend on options. */ | ||
location_provider_start_func *start; | ||
/* Free all allocated storage and close connections. */ | ||
location_provider_free_func *free; | ||
|
||
/* Print help on options for this location provider. */ | ||
location_provider_print_help_func *print_help; | ||
/* Set an option key, value-pair. */ | ||
location_provider_set_option_func *set_option; | ||
|
||
/* Listen and handle location updates. */ | ||
location_provider_get_fd_func *get_fd; | ||
location_provider_handle_func *handle; | ||
} location_provider_t; | ||
|
||
|
||
#endif /* ! REDSHIFT_REDSHIFT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/* | ||
* This file is part of Luma3DS | ||
* Copyright (C) 2016-2017 Aurora Wright, TuxSH, panicbit | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
* | ||
* Additional Terms 7.b and 7.c of GPLv3 apply to this file: | ||
* * Requiring preservation of specified reasonable legal notices or | ||
* author attributions in that material or in the Appropriate Legal | ||
* Notices displayed by works containing it. | ||
* * Prohibiting misrepresentation of the origin of that material, | ||
* or requiring that modified versions of such material be marked in | ||
* reasonable ways as different from the original version. | ||
*/ | ||
|
||
#include <MyThread.h> | ||
|
||
MyThread *shellOpenCreateThread(void); | ||
void shellOpenThreadMain(void); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This isn't really used, see above comment