1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-12 13:28:33 +00:00

Documentation - Added DocFX

This commit is contained in:
Robert 2020-08-31 19:44:18 +02:00
parent 68b61cbcb2
commit 1fc2896906
19 changed files with 520 additions and 49 deletions

9
docfx/docfx_project/.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
###############
# folder #
###############
/**/DROP/
/**/TEMP/
/**/packages/
/**/bin/
/**/obj/
_site

5
docfx/docfx_project/api/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
###############
# temp file #
###############
*.yml
.manifest

View File

@ -0,0 +1,2 @@
# PLACEHOLDER
TODO: Add .NET projects to the *src* folder and run `docfx` to generate **REAL** *API Documentation*!

View File

@ -0,0 +1 @@
Bummer, no guides 😌

View File

@ -0,0 +1,3 @@
Plugins allow you to expand on Artemis's functionality. For quick and interactive plugin creation, use the [Visual Studio template extension](https://marketplace.visualstudio.com/items?itemName=SpoinkyNL.ArtemisTemplates).
Example implementations of these plugins can be found on [GitHub](https://github.com/Artemis-RGB/Artemis/tree/master/src/Plugins).

View File

@ -0,0 +1,4 @@
- name: Introduction
href: intro.md
- name: Plugins - Getting started
href: plugins_getting_started.md

View File

@ -0,0 +1,72 @@
{
"metadata": [
{
"src": [
{
"files": [
"Artemis.Core/Artemis.Core.csproj",
"Artemis.UI.Shared/Artemis.UI.Shared.csproj",
],
"src": "../src"
}
],
"dest": "api",
"disableGitFeatures": false,
"disableDefaultFilter": false
}
],
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md"
]
},
{
"files": [
"articles/**.md",
"articles/**/toc.yml",
"toc.yml",
"*.md"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"globalMetadata": {
"_appTitle": "Artemis documentation",
"_enableSearch": true
},
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default",
"templates/artemis",
"templates/material"
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,30 @@
# Welcome to the **Artemis API documentation**
On this website you can browse the Artemis Core and Shared UI API.
A large part of this documentation is being generated based on code but over time the plan is to expand the documentation with written guides.
## Plugins
Artemis 2.0 has been developed from the ground up with plugins in mind. This means almost all functionality can be expanded. The following plugin types are currently available and fully implemented:
- [DataModelExpansion\<T\>](api/Artemis.Core.Plugins.DataModelExpansions.DataModelExpansion-1.html)
- [DeviceProvider](api/Artemis.Core.Plugins.DeviceProviders.DeviceProvider.html)
- [LayerBrush\<T\>](api/Artemis.Core.Plugins.LayerBrushes.LayerBrush-1.html)
- [PerLedLayerBrush\<T\>](api/Artemis.Core.Plugins.LayerBrushes.PerLedLayerBrush-1.html)
- [RgbNetLayerBrush\<T\>](api/Artemis.Core.Plugins.LayerBrushes.RgbNetLayerBrush-1.html)
- [LayerEffect](api/Artemis.Core.Plugins.LayerEffects.LayerEffect-1.html)
- [Module](api/Artemis.Core.Plugins.Modules.Module.html)
- [Module\<T\>](api/Artemis.Core.Plugins.Modules.Module-1.html)
- [ProfileModule](api/Artemis.Core.Plugins.Modules.ProfileModule.html),
- [ProfileModule\<T\>](api/Artemis.Core.Plugins.Modules.ProfileModule-1.html)
These allow you to expand on Artemis's functionality. For quick and interactive plugin creation, use the [Visual Studio template extension](https://marketplace.visualstudio.com/items?itemName=SpoinkyNL.ArtemisTemplates).
Example implementations of these plugins can be found on [GitHub](https://github.com/Artemis-RGB/Artemis/tree/master/src/Plugins).
## Services
Artemis provides plugins with an API through a range of services.
All the services are available to plugins by using dependency injection in your plugin's constructor. Dependency injection is also available for the different view models plugins may provide.
- [Core Services](/api/Artemis.Core.Services.Interfaces.html)
- [UI Services](/api/Artemis.UI.Shared.Services.Interfaces.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@ -0,0 +1,5 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<a class="navbar-brand" href="{{_rel}}index.html">
<img id="logo" src="{{_rel}}images/logo-512.png" alt="Artemis logo" style="width: 38px; height: 38px; margin-top: 6px;">
</a>

View File

@ -0,0 +1,21 @@
{{!Copyright (c) Oscar Vasquez. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}">
<meta name="generator" content="docfx {{_docfxVersion}}">
{{#_description}}<meta name="description" content="{{_description}}">{{/_description}}
<link rel="shortcut icon" href="{{_rel}}{{{_appFaviconPath}}}{{^_appFaviconPath}}favicon.ico{{/_appFaviconPath}}">
<link rel="stylesheet" href="{{_rel}}styles/docfx.vendor.css">
<link rel="stylesheet" href="{{_rel}}styles/docfx.css">
<link rel="stylesheet" href="{{_rel}}styles/main.css">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<meta property="docfx:navrel" content="{{_navRel}}">
<meta property="docfx:tocrel" content="{{_tocRel}}">
{{#_noindex}}<meta name="searchOption" content="noindex">{{/_noindex}}
{{#_enableSearch}}<meta property="docfx:rel" content="{{_rel}}">{{/_enableSearch}}
{{#_enableNewTab}}<meta property="docfx:newtab" content="true">{{/_enableNewTab}}
</head>

View File

@ -0,0 +1,314 @@
/* COLOR VARIABLES*/
:root {
--header-bg-color: #009688;
--header-ft-color: #fff;
--highlight-light: #1de9b6;
--highlight-dark: #00bfa5;
--accent-dim: #e0e0e0;
--accent-super-dim: #f3f3f3;
--font-color: #34393e;
--card-box-shadow: 0 1px 2px 0 rgba(61, 65, 68, 0.06), 0 1px 3px 1px rgba(61, 65, 68, 0.16);
--search-box-shadow: 0 1px 2px 0 rgba(41, 45, 48, 0.36), 0 1px 3px 1px rgba(41, 45, 48, 0.46);
--transition: 350ms;
}
body {
color: var(--font-color);
font-family: "Roboto", sans-serif;
line-height: 1.5;
font-size: 16px;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
word-wrap: break-word;
}
/* HIGHLIGHT COLOR */
button,
a {
color: var(--highlight-dark);
cursor: pointer;
}
button:hover,
button:focus,
a:hover,
a:focus {
color: var(--highlight-light);
text-decoration: none;
}
.toc .nav > li.active > a {
color: var(--highlight-dark);
}
.toc .nav > li.active > a:hover,
.toc .nav > li.active > a:focus {
color: var(--highlight-light);
}
.pagination > .active > a {
background-color: var(--header-bg-color);
border-color: var(--header-bg-color);
}
.pagination > .active > a,
.pagination > .active > a:focus,
.pagination > .active > a:hover,
.pagination > .active > span,
.pagination > .active > span:focus,
.pagination > .active > span:hover {
background-color: var(--highlight-light);
border-color: var(--highlight-light);
}
.affix ul > li.active > a, .affix ul > li.active > a:before {
color: var(--highlight-dark);
}
.affix > ul > li.active > a, .affix > ul > li.active > a:before {
color: var(--highlight-dark);
}
/* HEADINGS */
h1 {
font-weight: 600;
font-size: 32px;
}
h2 {
font-weight: 600;
font-size: 24px;
line-height: 1.8;
}
h3 {
font-weight: 600;
font-size: 20px;
line-height: 1.8;
}
h5 {
font-size: 14px;
padding: 10px 0px;
}
article h1,
article h2,
article h3,
article h4 {
margin-top: 35px;
margin-bottom: 15px;
}
article h4 {
padding-bottom: 8px;
border-bottom: 2px solid #ddd;
}
/* NAVBAR */
.navbar-brand > img {
color: var(--header-ft-color);
}
.navbar {
border: none;
/* Both navbars use box-shadow */
-webkit-box-shadow: var(--card-box-shadow);
-moz-box-shadow: var(--card-box-shadow);
box-shadow: var(--card-box-shadow);
}
.subnav {
border-top: 1px solid #ddd;
background-color: #fff;
}
.navbar-inverse {
background-color: var(--header-bg-color);
z-index: 100;
}
.navbar-inverse .navbar-nav > li > a,
.navbar-inverse .navbar-text {
color: var(--header-ft-color);
background-color: var(--header-bg-color);
border-bottom: 3px solid transparent;
padding-bottom: 12px;
transition: 350ms;
}
.navbar-inverse .navbar-nav > li > a:focus,
.navbar-inverse .navbar-nav > li > a:hover {
color: var(--header-ft-color);
background-color: var(--header-bg-color);
border-bottom: 3px solid white;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:focus,
.navbar-inverse .navbar-nav > .active > a:hover {
color: var(--header-ft-color);
background-color: var(--header-bg-color);
border-bottom: 3px solid white;
}
.navbar-form .form-control {
border: 0;
border-radius: 4px;
box-shadow: var(--search-box-shadow);
transition:var(--transition);
}
.navbar-form .form-control:hover {
background-color: var(--accent-dim);
}
/* NAVBAR TOGGLED (small screens) */
.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
border: none;
}
.navbar-inverse .navbar-toggle {
box-shadow: var(--card-box-shadow);
border: none;
}
.navbar-inverse .navbar-toggle:focus,
.navbar-inverse .navbar-toggle:hover {
background-color: var(--highlight-dark);
}
/* SIDEBAR */
.toc .level1 > li {
font-weight: 400;
}
.toc .nav > li > a {
color: var(--font-color);
}
.sidefilter {
background-color: #fff;
border-left: none;
border-right: none;
}
.sidefilter {
background-color: #fff;
border-left: none;
border-right: none;
}
.toc-filter {
padding: 5px;
margin: 0;
box-shadow: var(--card-box-shadow);
transition:var(--transition);
}
.toc-filter:hover {
background-color: var(--accent-super-dim);
}
.toc-filter > input {
border: none;
background-color: inherit;
transition: inherit;
}
.toc-filter > .filter-icon {
display: none;
}
.sidetoc > .toc {
background-color: #fff;
overflow-x: hidden;
}
.sidetoc {
background-color: #fff;
border: none;
}
/* ALERTS */
.alert {
padding: 0px 0px 5px 0px;
color: inherit;
background-color: inherit;
border: none;
box-shadow: var(--card-box-shadow);
}
.alert > p {
margin-bottom: 0;
padding: 5px 10px;
}
.alert > ul {
margin-bottom: 0;
padding: 5px 40px;
}
.alert > h5 {
padding: 10px 15px;
margin-top: 0;
text-transform: uppercase;
font-weight: bold;
border-radius: 4px 4px 0 0;
}
.alert-info > h5 {
color: #1976d2;
border-bottom: 4px solid #1976d2;
background-color: #e3f2fd;
}
.alert-warning > h5 {
color: #f57f17;
border-bottom: 4px solid #f57f17;
background-color: #fff3e0;
}
.alert-danger > h5 {
color: #d32f2f;
border-bottom: 4px solid #d32f2f;
background-color: #ffebee;
}
/* CODE HIGHLIGHT */
pre {
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
word-break: break-all;
word-wrap: break-word;
background-color: #fffaef;
border-radius: 4px;
border: none;
box-shadow: var(--card-box-shadow);
}
/* STYLE FOR IMAGES */
.article .small-image {
margin-top: 15px;
box-shadow: var(--card-box-shadow);
max-width: 350px;
}
.article .medium-image {
margin-top: 15px;
box-shadow: var(--card-box-shadow);
max-width: 550px;
}
.article .large-image {
margin-top: 15px;
box-shadow: var(--card-box-shadow);
max-width: 700px;
}

View File

@ -0,0 +1,6 @@
- name: Articles
href: articles/
homepage: articles/intro.md
- name: API Documentation
href: api/
homepage: api/index.md

View File

@ -136,9 +136,9 @@ namespace Artemis.Core.Models.Profile.Colors
/// <inheritdoc />
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
internal virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

View File

@ -72,10 +72,10 @@ namespace Artemis.Core.Services.Interfaces
List<PluginInfo> GetAllPluginInfo();
/// <summary>
/// Finds all enabled <see cref="Plugin" /> instances of type <see cref="T" />
/// Finds all enabled <see cref="Plugin" /> instances of type T
/// </summary>
/// <typeparam name="T">Either <see cref="Plugin" /> or a plugin type implementing <see cref="Plugin" /></typeparam>
/// <returns>Returns a list of plug instances of type <see cref="T" /></returns>
/// <returns>Returns a list of plug instances of type T
List<T> GetPluginsOfType<T>() where T : Plugin;
/// <summary>

View File

@ -4,44 +4,6 @@ namespace Artemis.Core.Utilities
{
public static class Easings
{
/// <summary>
/// Easing Functions enumeration
/// </summary>
public enum Functions
{
Linear,
QuadraticEaseIn,
QuadraticEaseOut,
QuadraticEaseInOut,
CubicEaseIn,
CubicEaseOut,
CubicEaseInOut,
QuarticEaseIn,
QuarticEaseOut,
QuarticEaseInOut,
QuinticEaseIn,
QuinticEaseOut,
QuinticEaseInOut,
SineEaseIn,
SineEaseOut,
SineEaseInOut,
CircularEaseIn,
CircularEaseOut,
CircularEaseInOut,
ExponentialEaseIn,
ExponentialEaseOut,
ExponentialEaseInOut,
ElasticEaseIn,
ElasticEaseOut,
ElasticEaseInOut,
BackEaseIn,
BackEaseOut,
BackEaseInOut,
BounceEaseIn,
BounceEaseOut,
BounceEaseInOut
}
/// <summary>
/// Constant Pi.
/// </summary>
@ -178,9 +140,9 @@ namespace Artemis.Core.Utilities
}
/// <summary>
// Modeled after the piecewise quartic
// y = (1/2)((2x)^4) ; [0, 0.5)
// y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1]
/// Modeled after the piecewise quartic
/// y = (1/2)((2x)^4) ; [0, 0.5)
/// y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1]
/// </summary>
public static double QuarticEaseInOut(double p)
{
@ -394,5 +356,43 @@ namespace Artemis.Core.Utilities
return 0.5 * BounceEaseIn(p * 2);
return 0.5 * BounceEaseOut(p * 2 - 1) + 0.5;
}
/// <summary>
/// Easing Functions enumeration
/// </summary>
public enum Functions
{
Linear,
QuadraticEaseIn,
QuadraticEaseOut,
QuadraticEaseInOut,
CubicEaseIn,
CubicEaseOut,
CubicEaseInOut,
QuarticEaseIn,
QuarticEaseOut,
QuarticEaseInOut,
QuinticEaseIn,
QuinticEaseOut,
QuinticEaseInOut,
SineEaseIn,
SineEaseOut,
SineEaseInOut,
CircularEaseIn,
CircularEaseOut,
CircularEaseInOut,
ExponentialEaseIn,
ExponentialEaseOut,
ExponentialEaseInOut,
ElasticEaseIn,
ElasticEaseOut,
ElasticEaseInOut,
BackEaseIn,
BackEaseOut,
BackEaseInOut,
BounceEaseIn,
BounceEaseOut,
BounceEaseInOut
}
}
}

View File

@ -10,7 +10,7 @@ namespace Artemis.UI.Shared.Services.Interfaces
public interface IDialogService : IArtemisSharedUIService
{
/// <summary>
/// Shows a confirm dialog on the dialog host provided in <see cref="identifier" />.
/// Shows a confirm dialog on the dialog host provided
/// </summary>
/// <param name="header">The title of the dialog</param>
/// <param name="text">The body text of the dialog</param>
@ -20,7 +20,7 @@ namespace Artemis.UI.Shared.Services.Interfaces
Task<bool> ShowConfirmDialog(string header, string text, string confirmText = "Confirm", string cancelText = "Cancel");
/// <summary>
/// Shows a confirm dialog on the dialog host provided in <see cref="identifier" />.
/// Shows a confirm dialog on the dialog host provided in identifier.
/// </summary>
/// <param name="identifier">
/// The identifier of the <see cref="DialogHost" /> to use eg.

View File

@ -7,8 +7,7 @@ namespace Artemis.UI.Shared.Utilities
public static class HitTestUtilities
{
/// <summary>
/// Runs a hit test on children of the container within the rectangle matching all elements that have a data context of
/// <see cref="T" />.
/// Runs a hit test on children of the container within the rectangle matching all elements that have a data context of T
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="container"></param>