Rename to PhotonVision
@@ -1,113 +0,0 @@
|
||||
version: 2
|
||||
jobs:
|
||||
build_ui:
|
||||
working_directory: ~/project/chameleon-client
|
||||
docker:
|
||||
- image: node:latest
|
||||
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/project
|
||||
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- dist
|
||||
|
||||
|
||||
run_tests:
|
||||
working_directory: ~/project/chameleon-server
|
||||
docker:
|
||||
- image: gradle:jdk12
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/project
|
||||
#- restore_cache:
|
||||
# key: v1-gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}
|
||||
#- restore_cache:
|
||||
# key: v1-gradle-cache-{{ checksum "build.gradle" }}
|
||||
- run:
|
||||
name: list
|
||||
command: ls
|
||||
- run:
|
||||
name: Run tests
|
||||
command: ./gradlew test
|
||||
#- save_cache:
|
||||
# paths:
|
||||
# - .gradle/wrapper
|
||||
# key: v1-gradle-wrapper-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}
|
||||
#- save_cache:
|
||||
# paths:
|
||||
# - .gradle/caches
|
||||
# key: v1-gradle-cache-{{ checksum "build.gradle" }}
|
||||
- store_test_results:
|
||||
path: build/test-results/test
|
||||
- store_artifacts: # Upload test results for display in Artifacts: https://circleci.com/docs/2.0/artifacts/
|
||||
path: build/test-results/test
|
||||
when: always
|
||||
|
||||
build_jar:
|
||||
working_directory: ~/project/chameleon-server
|
||||
docker:
|
||||
- image: gradle:jdk12
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/project
|
||||
- attach_workspace:
|
||||
at: /UI
|
||||
|
||||
- run: rm -rf src/main/resources/web/*
|
||||
- run: mkdir -p src/main/resources/web/
|
||||
- run: cp -r /UI/dist/. src/main/resources/web/
|
||||
- run: gradle shadowJar
|
||||
- store_artifacts:
|
||||
path: build/libs
|
||||
- persist_to_workspace:
|
||||
root: ./build/libs
|
||||
paths:
|
||||
- .
|
||||
|
||||
format_diff_against_git:
|
||||
working_directory: ~/project/chameleon-server
|
||||
docker:
|
||||
- image: gradle:jdk12
|
||||
steps:
|
||||
- checkout:
|
||||
path: ~/project
|
||||
|
||||
- run: gradle spotlessApply
|
||||
- run: git --no-pager diff --exit-code HEAD
|
||||
|
||||
deploy:
|
||||
docker:
|
||||
- image: cibuilds/github:0.10
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: ./
|
||||
- run:
|
||||
name: Publish Release on GitHub"
|
||||
command: |
|
||||
VERSION=$(find . -name 'chameleon-vision-*.jar' | sed 's/.*chameleon-vision-//; s/.jar//' )
|
||||
ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${VERSION} ./$(find . -name "chameleon-vision-*")
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
release:
|
||||
jobs:
|
||||
- format_diff_against_git
|
||||
- run_tests
|
||||
- build_ui
|
||||
- build_jar:
|
||||
requires:
|
||||
- format_diff_against_git
|
||||
- run_tests
|
||||
- build_ui
|
||||
- deploy:
|
||||
requires:
|
||||
- build_jar
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
@@ -1,2 +0,0 @@
|
||||
#Sun May 31 18:05:12 EDT 2020
|
||||
gradle.version=6.0.1
|
||||
73
README.md
@@ -1,75 +1,16 @@
|
||||
# Photon Vision
|
||||
|
||||
This is fork of [Chameleon Vision](https://github.com/Chameleon-Vision/chameleon-vision/), a free open-source software for FRC teams to use for vision processing on their robots. Thank you to everyone who worked on the original project.
|
||||
|
||||
# Chameleon-Vision
|
||||
For information on contributing or running PhotonVision, please read our documentation on ReadTheDocs.
|
||||
|
||||
[](https://circleci.com/gh/Chameleon-Vision/chameleon-vision/tree/dev)
|
||||
[](https://circleci.com/gh/Chameleon-Vision/chameleon-vision/tree/master)
|
||||
# Roadmap
|
||||
|
||||
Chameleon Vision is free open-source software for FRC teams to use for vision proccesing on their robots.
|
||||
Our roadmap is publicly available on [Trello](https://trello.com/photonvision).
|
||||
|
||||
|
||||
There instructions are for compiling (contributing) and running the source-code of the project.
|
||||
This is NOT intended for the co-processor setup or your testing PC.
|
||||
To run the program normally (from a build .jar file), take a look at our ReadTheDocs documentation for installation [here](https://chameleon-vision.readthedocs.io/en/latest/installation/coprocessor-setup.html)
|
||||
|
||||
|
||||
These instruction are for the Chameleon Vision's backend/server in Java
|
||||
|
||||
To run the UI's sourcecode (optional) see the UI's [readme](https://github.com/Chameleon-Vision/chameleon-vision/blob/master/chameleon-client/README.md)
|
||||
|
||||
## Hardware
|
||||
Currently any 64-Bit devices (Windows, Linux and Mac OS) are supported.
|
||||
32 Bit devices are not supported.
|
||||
|
||||
At least one USB camera ([supported](https://chameleon-vision.readthedocs.io/en/latest/hardware/supported-hardware.html#supported-cameras) one is recommended)
|
||||
|
||||
## Development setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Java Development Kit 11:
|
||||
Follow the correct instructions for your platform from [AdoptOpenJDK](https://adoptopenjdk.net/)
|
||||
-When running the installer, follow the given instructions and ensure that you select Add to PATH, Associate .jar, and Set JAVA_HOME variable.
|
||||
- Chameleon-Vision source code
|
||||
Clone via a git client or download as zip and extract the source code into a empty folder.
|
||||
`git clone -b 3.0 https://github.com/Chameleon-Vision/chameleon-vision.git`
|
||||
#### For the co-processor(Linux system)
|
||||
- Avahi Daemon:
|
||||
`sudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan`
|
||||
|
||||
#### For the Driver Station
|
||||
|
||||
- Bonjour
|
||||
Download and install Bonjour [from here](https://support.apple.com/kb/DL999?locale=en_US)
|
||||
- VC++ Redistributable (Windows only)
|
||||
Download and install [this](https://aka.ms/vs/16/release/vc_redist.x64.exe)
|
||||
|
||||
## Importing to IDEA
|
||||
We recommend the use of [IntelliJ IDEA](https://www.jetbrains.com/idea/) for running the source-code
|
||||
|
||||
1. Import Project
|
||||
|
||||
2. Choose the path to `chameleon-server` inside the copy of chameleon-vision that you cloned or downloaded
|
||||
|
||||

|
||||
|
||||
3. Click Ok, go to File -> Project Structure -> Project -> Project SDK, and then choose JDK 11.
|
||||
|
||||
4. Gradle will automatically download the necessary dependencies
|
||||
|
||||
Note: At this time, the program is not in a runnable state.
|
||||
|
||||
## Authors
|
||||
|
||||
* **Sagi Frimer** - *initial work* - websocket, settings manager, UI
|
||||
|
||||
* **Ori Agranat** - *main coder* - project manager, vision loop, UI, websocket, networktables
|
||||
|
||||
* **Omer Zipory** - *developer* - vision loop, websocket, networking, documentation, UI
|
||||
|
||||
* **Banks Troutman** - *developer* - vision loop, websocket, networking, project structue
|
||||
|
||||
* **Matt Morley** - *developer* - vision loop, project structue, documentation, solvePNP
|
||||
A list of contributors is available in our documentation on ReadTheDocs.
|
||||
|
||||
|
||||
## Acknowledgments
|
||||
@@ -85,4 +26,4 @@ Note: At this time, the program is not in a runnable state.
|
||||
* [FasterXML](https://github.com/FasterXML) - Specifically [jackson](https://github.com/FasterXML/jackson)
|
||||
|
||||
## License
|
||||
Usage of Chameleon Vision must fall under all terms of [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.html)
|
||||
Usage of PhotonVision must fall under all terms of [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.html)
|
||||
|
||||
6
chameleon-server/.gitignore
vendored
@@ -1,6 +0,0 @@
|
||||
bin/*
|
||||
.settings/*
|
||||
.project
|
||||
.classpath
|
||||
*.prefs
|
||||
chameleon-vision
|
||||
BIN
chameleon-server/gradle/wrapper/gradle-wrapper.jar
vendored
@@ -1,2 +0,0 @@
|
||||
rootProject.name = 'ChameleonServer'
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.chameleonvision.common.datatransfer;
|
||||
|
||||
import com.chameleonvision.common.vision.processes.Data;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public interface DataConsumer extends Consumer<Data> {}
|
||||
@@ -1,3 +0,0 @@
|
||||
package com.chameleonvision.common.datatransfer;
|
||||
|
||||
public interface DataProvider {}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.chameleonvision.common.vision.camera;
|
||||
|
||||
public enum CameraQuirks {
|
||||
Gain
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package com.chameleonvision.common.vision.frame.consumer;
|
||||
|
||||
import com.chameleonvision.common.vision.frame.Frame;
|
||||
import com.chameleonvision.common.vision.frame.FrameConsumer;
|
||||
|
||||
public class DummyFrameConsumer implements FrameConsumer {
|
||||
@Override
|
||||
public void accept(Frame frame) {
|
||||
frame.release(); // lol ez
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package com.chameleonvision.common.vision.processes;
|
||||
|
||||
import com.chameleonvision.common.vision.pipeline.CVPipelineResult;
|
||||
|
||||
// TODO replace with CTT's data class
|
||||
public class Data {
|
||||
public CVPipelineResult result;
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
package com.chameleonvision.server;
|
||||
|
||||
public class RequestHandler {}
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.chameleonvision.server;
|
||||
|
||||
import io.javalin.Javalin;
|
||||
|
||||
public class Server {
|
||||
|
||||
public static void main(int port) {
|
||||
Javalin app =
|
||||
Javalin.create(
|
||||
javalinConfig -> {
|
||||
javalinConfig.showJavalinBanner = false;
|
||||
javalinConfig.addStaticFiles("web");
|
||||
javalinConfig.enableCorsForAllOrigins();
|
||||
});
|
||||
/*Web Socket Events */
|
||||
app.ws(
|
||||
"/websocket",
|
||||
ws -> {
|
||||
ws.onConnect(SocketHandler::onConnect);
|
||||
ws.onClose(SocketHandler::onClose);
|
||||
ws.onBinaryMessage(SocketHandler::onBinaryMessage);
|
||||
});
|
||||
/*API Events*/
|
||||
// app.post("/api/settings/general",
|
||||
// com.chameleonvision._2.web.RequestHandler::onGeneralSettings);
|
||||
// app.post("/api/settings/camera",
|
||||
// com.chameleonvision._2.web.RequestHandler::onCameraSettings);
|
||||
// app.post("/api/vision/duplicate",
|
||||
// com.chameleonvision._2.web.RequestHandler::onDuplicatePipeline);
|
||||
// app.post("/api/settings/startCalibration",
|
||||
// com.chameleonvision._2.web.RequestHandler::onCalibrationStart);
|
||||
// app.post("/api/settings/snapshot",
|
||||
// com.chameleonvision._2.web.RequestHandler::onSnapshot);
|
||||
// app.post("/api/settings/endCalibration",
|
||||
// com.chameleonvision._2.web.RequestHandler::onCalibrationEnding);
|
||||
// app.post("/api/vision/pnpModel",
|
||||
// com.chameleonvision._2.web.RequestHandler::onPnpModel);
|
||||
// app.post("/api/install", RequestHandler::onInstallOrUpdate);
|
||||
app.start(port);
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
log4j.rootLogger=INFO, STDOUT
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
10
photon-server/.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
bin/*
|
||||
.settings/*
|
||||
.project
|
||||
.classpath
|
||||
*.prefs
|
||||
chameleon-vision
|
||||
.gradle
|
||||
.gradle/*
|
||||
build
|
||||
build/*
|
||||
336
photon-server/build/resources/main/web/Roboto.css
Normal file
@@ -0,0 +1,336 @@
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxEIzIFKw.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxLIzIFKw.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxHIzIFKw.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzI.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCBc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCxc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc4.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
html{overflow-y:hidden!important}.imgClass{width:auto;height:45px;vertical-align:middle;padding-right:5px}.loggerClass{position:absolute;bottom:0;height:25%!important;left:0;right:0;-webkit-box-shadow:#282828 0 0 5px 1px;box-shadow:0 0 5px 1px #282828;background-color:#2b2b2b}::-webkit-scrollbar{width:.5em;border-radius:5px}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);border-radius:10px}::-webkit-scrollbar-thumb{background-color:#4baf62;border-radius:10px}.container{background-color:#212121;padding:0!important}#title{color:#4baf62}span{color:#fff}.hover[data-v-6fe754e4]:hover{color:#fff!important}#canvasId[data-v-7cadfa0d]{width:400px;height:400px;background-color:#2b2b2b;border-radius:5px;border:2px solid grey;-webkit-box-shadow:0 0 5px 1px;box-shadow:0 0 5px 1px}th[data-v-7cadfa0d]{width:80px;text-align:center}.miniMapClass[data-v-383a7992]{width:50%!important;height:50%!important}.colsClass[data-v-9e4d1488]{padding:0!important}.videoClass[data-v-9e4d1488]{text-align:center}th[data-v-9e4d1488]{width:80px;text-align:center}.videoClass[data-v-4625d12f]{text-align:center}.videoClass img[data-v-4625d12f]{padding-top:10px;height:auto!important;vertical-align:middle}.colsClass[data-v-4625d12f]{padding:0!important}
|
||||
BIN
photon-server/build/resources/main/web/favicon.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 61 KiB |
BIN
photon-server/build/resources/main/web/img/logo.e82307fd.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
1
photon-server/build/resources/main/web/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=/favicon.png><title>Chameleon Vision</title><link rel=stylesheet href=/Roboto.css><link href=/css/app.e8004665.css rel=preload as=style><link href=/css/chunk-vendors.0ad5867f.css rel=preload as=style><link href=/js/app.2e103153.js rel=preload as=script><link href=/js/chunk-vendors.7c313850.js rel=preload as=script><link href=/css/chunk-vendors.0ad5867f.css rel=stylesheet><link href=/css/app.e8004665.css rel=stylesheet></head><body><noscript><strong>We're sorry but Chameleon Vision doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.7c313850.js></script><script src=/js/app.2e103153.js></script></body></html>
|
||||
0
chameleon-server/gradlew → photon-server/gradlew
vendored
Executable file → Normal file
2
photon-server/settings.gradle
Normal file
@@ -0,0 +1,2 @@
|
||||
rootProject.name = 'PhotonServer'
|
||||
|
||||