diff --git a/.DS_Store b/.DS_Store index 65e07fb..d67fa22 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/cms.py b/cms.py index d8ecffe..3af7a60 100755 --- a/cms.py +++ b/cms.py @@ -37,6 +37,16 @@ FOOTER_PAGE = "footer" # Baustein: wird unter den Inhalt jeder Seite gesetzt # ---------------------------------------------------------------- markdown +def inline(s): + """Inline-Markdown: bilder, code, fett, kursiv, Links.""" + s = re.sub(r"`([^`]+)`", r"\1", s) + s = re.sub(r"!\[([^\]]*)\]\(([^)]+)\)", r'\1', s) + s = re.sub(r"\*\*([^*]+)\*\*", r"\1", s) + s = re.sub(r"\*([^*]+)\*", r"\1", s) + s = re.sub(r"\[([^\]]+)\]\(([^)]+)\)", r'\1', s) + return s + + def md_to_html(text, headings=None): """Minimaler Markdown->HTML-Konverter: Ueberschriften, **fett**, *kursiv*, `code`, [Links](url), @@ -44,6 +54,8 @@ def md_to_html(text, headings=None): Ueberschriften bekommen id-Anker; in headings (Liste) werden optional (anker, text) aller Ueberschriften gesammelt. """ + # vergessenes Trigger-Wort "image" direkt vor einem Bild nicht mit ausgeben + text = re.sub(r"\bimage\s*(?=!\[)", "", text, flags=re.IGNORECASE) lines = text.replace("\r\n", "\n").split("\n") out = [] i = 0 @@ -53,13 +65,6 @@ def md_to_html(text, headings=None): used_ids = {} sec_stack = [] # offene Sektionen (pro # mehr eine Ebene, eingerueckt) - def inline(s): - s = re.sub(r"`([^`]+)`", r"\1", s) - s = re.sub(r"\*\*([^*]+)\*\*", r"\1", s) - s = re.sub(r"\*([^*]+)\*", r"\1", s) - s = re.sub(r"\[([^\]]+)\]\(([^)]+)\)", r'\1', s) - return s - def close_list(): nonlocal in_list, list_tag if in_list: @@ -134,6 +139,24 @@ def md_to_html(text, headings=None): i += 1 continue + # Tabellen: | zelle | zelle | mit --- Trennzeile + if stripped.startswith("|"): + close_list() + rows = [] + j = i + while j < len(lines) and lines[j].strip().startswith("|"): + rows.append(lines[j].strip()) + j += 1 + tbl = _parse_table(rows) + if tbl: + out.append(tbl) + i = j + else: + # keine gueltige Tabelle -> als normaler Absatz + out.append("

%s

" % inline(_escape(stripped))) + i += 1 + continue + m = re.match(r"^([-*+])\s+(.*)$", stripped) if m: if not in_list or list_tag != "ul": @@ -167,7 +190,7 @@ def md_to_html(text, headings=None): close_list() para = [stripped] while (i + 1 < len(lines) and lines[i + 1].strip() - and not re.match(r"^(#{1,6}\s|[-*+]\s|\d+\.\s|>|```|-{3,}$|<)", + and not re.match(r"^(#{1,6}\s|[-*+]\s|\d+\.\s|>|```|-{3,}$|<|\|)", lines[i + 1].strip())): i += 1 para.append(lines[i].strip()) @@ -185,6 +208,54 @@ def _escape(s): return (s.replace("&", "&").replace("<", "<").replace(">", ">")) +def _parse_table(rows): + """Baut aus |-getrennten Zeilen eine HTML-Tabelle. + Zeile 1: Kopfzeile, Zeile 2: Trenner (---, :---, ---:, :---:), + danach: Datenzeilen. Liefert None, wenn es keine gueltige Tabelle ist. + """ + def split_row(r): + if r.startswith("|"): + r = r[1:] + if r.endswith("|"): + r = r[:-1] + return [c.strip() for c in r.split("|")] + + def is_sep(c): + return re.match(r"^:?-{2,}:?$", c) is not None + + if len(rows) < 2 or not all(is_sep(c) and c for c in split_row(rows[1])): + return None + + aligns = [] + for c in split_row(rows[1]): + left, right = c.startswith(":"), c.endswith(":") + if left and right: + aligns.append("center") + elif right: + aligns.append("right") + else: + aligns.append("left") + + def cell(tag, j, text): + style = ' style="text-align: %s"' % aligns[j] if j < len(aligns) else "" + return "<%s%s>%s" % (tag, style, inline(text), tag) + + out = ["", ""] + for j, c in enumerate(split_row(rows[0])): + out.append(cell("th", j, _escape(c))) + out.append("") + if len(rows) > 2: + out.append("") + for r in rows[2:]: + out.append("") + for j, c in enumerate(split_row(r)): + out.append(cell("td", j, _escape(c))) + out.append("") + out.append("") + out.append("
") + return "".join(out) + + def _slugify(s): """Ueberschriftentext -> HTML-id (ankertauglich, klein, ohne Sonderzeichen).""" s = s.lower() @@ -388,6 +459,14 @@ class Handler(BaseHTTPRequestHandler): self._json({"slug": slug, "raw": load_page(slug)}) else: self._json({"error": "Seite nicht gefunden"}, 404) + elif path == "/api/images": + img_dir = os.path.join(ROOT, "images") + files = [] + if os.path.isdir(img_dir): + for f in sorted(os.listdir(img_dir)): + if os.path.isfile(os.path.join(img_dir, f)) and not f.startswith("."): + files.append(f) + self._json({"images": files}) elif path == "/api/export": self._json({"exported": export_site()}) else: @@ -433,7 +512,11 @@ ADMIN_HTML = """ #side h1 { font-size: 1rem; } #pages a { display: block; padding: .35rem .5rem; border-radius: 4px; cursor: pointer; text-decoration: none; color: #000; } #pages a.active, #pages a:hover { background: #ddd; } - #main { flex: 1; display: flex; flex-direction: column; padding: 1rem; box-sizing: border-box; gap: .5rem; } + #main { flex: 1; display: flex; flex-direction: column; padding: 1rem; box-sizing: border-box; gap: .5rem; position: relative; } + #imgdrop { position: absolute; top: 3.2rem; left: 1rem; background: #fff; border: 1px solid #999; border-radius: 4px; box-shadow: 0 2px 10px rgba(0,0,0,.25); max-height: 220px; overflow: auto; z-index: 20; min-width: 240px; } + #imgdrop .imgdrop-title { font-size: .8rem; padding: .4rem .6rem; background: #eee; } + #imglist a { display: block; padding: .35rem .6rem; cursor: pointer; color: #000; } + #imglist a:hover { background: #dde8ff; } #toolbar { display: flex; gap: .5rem; align-items: center; } button { padding: .45rem .9rem; border: 1px solid #999; border-radius: 4px; background: #fff; cursor: pointer; } button.primary { background: #0066cc; color: #fff; border-color: #0066cc; } @@ -461,12 +544,17 @@ ADMIN_HTML = """
+ +Hier den Inhalt schreiben. **fett**, *kursiv*, [Link](seite.html), # Ueberschrift, - Liste. +Das Wort "image" tippen, um ein Bild aus dem images-Ordner einzufuegen.
diff --git a/css/style.css b/css/style.css index 9fb1b82..700bd24 100644 --- a/css/style.css +++ b/css/style.css @@ -138,6 +138,24 @@ main div.sec0 { margin-left: 0; } +/* ---- Bilder ---- */ + +img { + display: block; /* Text startet immer unter dem Bild */ + max-width: 500px; /* Desktop: maximal 500px breit */ + height: auto; + border: 1px solid #333333; /* dunkelgrauer Rand */ + margin: .8rem 0; +} + +/* Smartphone: Bild ueber die volle Breite */ +@media (max-width: 600px) { + img { + max-width: 100%; + width: 100%; + } +} + /* ---- Anker-Navigation im Header (Links auf die Ueberschriften) ---- */ .anker-nav { @@ -215,6 +233,28 @@ hr { margin: 1.5rem 0; } +/* ---- Tabellen ---- */ + +table { + border-collapse: collapse; + margin: 1rem 0; +} + +th, td { + border: 1px solid var(--border); + padding: .4rem .8rem; + text-align: left; +} + +th { + color: var(--heading); + background: #141414; +} + +td { + color: var(--text); +} + /* ---- Code ---- */ code { diff --git a/hfg_os_background_1_fullhd.png.pp3 b/hfg_os_background_1_fullhd.png.pp3 new file mode 100644 index 0000000..790d7db --- /dev/null +++ b/hfg_os_background_1_fullhd.png.pp3 @@ -0,0 +1,872 @@ +[Version] +AppVersion=5.13 +Version=353 + +[General] +ColorLabel=0 +InTrash=false + +[Exposure] +Auto=false +Clip=0.02 +Compensation=0 +Brightness=0 +Contrast=0 +Saturation=0 +Black=0 +HighlightCompr=0 +HighlightComprThreshold=0 +ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true +CurveMode=Standard +CurveMode2=Standard +Curve=0; +Curve2=0; + +[HLRecovery] +Enabled=false +Method=Coloropp +Hlbl=0 +Hlth=1 + +[Retinex] +Enabled=false +Str=20 +Scal=3 +Iter=1 +Grad=1 +Grads=1 +Gam=1.3 +Slope=3 +Median=false +Neigh=80 +Offs=0 +Vart=200 +Limd=8 +highl=4 +skal=3 +complexMethod=normal +RetinexMethod=high +mapMethod=none +viewMethod=none +Retinexcolorspace=Lab +Gammaretinex=none +CDCurve=0; +MAPCurve=0; +CDHCurve=0; +LHCurve=0; +Highlights=0 +HighlightTonalWidth=80 +Shadows=0 +ShadowTonalWidth=80 +Radius=40 +TransmissionCurve=1;0;0.5;0.34999999999999998;0.34999999999999998;0.59999999999999998;0.75;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998; +GainTransmissionCurve=1;0;0.10000000000000001;0.34999999999999998;0;0.25;0.25;0.34999999999999998;0.34999999999999998;0.69999999999999996;0.25;0.34999999999999998;0.34999999999999998;1;0.10000000000000001;0;0; + +[Local Contrast] +Enabled=false +Radius=80 +Amount=0.20000000000000001 +Darkness=1 +Lightness=1 + +[Channel Mixer] +Enabled=false +Red=1000;0;0; +Green=0;1000;0; +Blue=0;0;1000; + +[Black & White] +Enabled=false +Method=Desaturation +Auto=false +ComplementaryColors=true +Setting=RGB-Rel +Filter=None +MixerRed=33 +MixerOrange=33 +MixerYellow=33 +MixerGreen=33 +MixerCyan=33 +MixerBlue=33 +MixerMagenta=33 +MixerPurple=33 +GammaRed=0 +GammaGreen=0 +GammaBlue=0 +Algorithm=SP +LuminanceCurve=0; +BeforeCurveMode=Standard +AfterCurveMode=Standard +BeforeCurve=0; +AfterCurve=0; + +[Luminance Curve] +Enabled=false +Brightness=0 +Contrast=0 +Chromaticity=0 +Gamutmunse=MUN +RedAndSkinTonesProtection=0 +LCredsk=true +LCurve=0; +aCurve=0; +bCurve=0; +ccCurve=0; +chCurve=0; +lhCurve=0; +hhCurve=0; +LcCurve=0; +ClCurve=0; + +[Sharpening] +Enabled=false +Contrast=20 +Method=usm +Radius=0.5 +BlurRadius=0.20000000000000001 +Amount=200 +Threshold=20;80;2000;1200; +OnlyEdges=false +EdgedetectionRadius=1.8999999999999999 +EdgeTolerance=1800 +HalocontrolEnabled=false +HalocontrolAmount=85 +DeconvRadius=0.75 +DeconvAmount=100 +DeconvDamping=0 +DeconvIterations=30 + +[Vibrance] +Enabled=false +Pastels=0 +Saturated=0 +PSThreshold=0;75; +ProtectSkins=false +AvoidColorShift=true +PastSatTog=true +SkinTonesCurve=0; + +[SharpenEdge] +Enabled=false +Passes=2 +Strength=50 +ThreeChannels=false + +[SharpenMicro] +Enabled=false +Matrix=false +Strength=20 +Contrast=20 +Uniformity=5 + +[White Balance] +Enabled=true +Setting=Camera +Temperature=6501 +Green=1 +Equal=1 +TemperatureBias=0 +StandardObserver=TWO_DEGREES +Itcwb_green=0 +Itcwb_rangegreen=1 +Itcwb_nopurple=false +Itcwb_alg=false +Itcwb_prim=beta +Itcwb_sampling=false +CompatibilityVersion=2 + +[Color appearance] +Enabled=false +Degree=90 +AutoDegree=true +Degreeout=90 +AutoDegreeout=true +Surround=Average +complex=normal +ModelCat=16 +CatCat=clas +Surrsrc=Average +AdaptLum=16 +Badpixsl=0 +Model=RawT +Illum=i50 +Algorithm=JC +J-Light=0 +Q-Bright=0 +C-Chroma=0 +S-Chroma=0 +S-Chroma-red=0 +S-Chroma-green=0 +S-Chroma-blue=0 +M-Chroma=0 +J-Contrast=0 +Q-Contrast=0 +H-Hue=0 +H-Hue-red=0 +H-Hue-green=0 +H-Hue-blue=0 +RSTProtection=0 +AdaptScene=2000 +AutoAdapscen=true +YbScene=18 +Autoybscen=true +SurrSource=false +Gamut=false +Tempout=5003 +Autotempout=true +Greenout=1 +Tempsc=5003 +Greensc=1 +Ybout=18 +Datacie=false +Tonecie=false +CurveMode=Lightness +CurveMode2=Brightness +CurveMode3=Chroma +Curve=0; +Curvered=0; +Curvegreen=0; +Curveblue=0; +Curve2=0; +Curve3=0; + +[Impulse Denoising] +Enabled=false +Threshold=50 + +[Defringing] +Enabled=false +Radius=2 +Threshold=13 +HueCurve=1;0.16666666699999999;0;0.34999999999999998;0.34999999999999998;0.34699999999999998;0;0.34999999999999998;0.34999999999999998;0.51366742600000004;0;0.34999999999999998;0.34999999999999998;0.66894457100000004;0;0.34999999999999998;0.34999999999999998;0.82877752459999998;0.97835991;0.34999999999999998;0.34999999999999998;0.99088838270000001;0;0.34999999999999998;0.34999999999999998; + +[Dehaze] +Enabled=false +Strength=50 +ShowDepthMap=false +Depth=25 +Saturation=50 + +[Directional Pyramid Denoising] +Enabled=false +Enhance=false +Median=false +Luma=0 +Ldetail=0 +Chroma=15 +Method=Lab +LMethod=SLI +CMethod=MAN +C2Method=AUTO +SMethod=shal +MedMethod=soft +RGBMethod=soft +MethodMed=Lonly +Redchro=0 +Bluechro=0 +AutoGain=true +Gamma=1.7 +Passes=1 +LCurve=1;0.050000000000000003;0.14999999999999999;0.34999999999999998;0.34999999999999998;0.55000000000000004;0.040000000000000001;0.34999999999999998;0.34999999999999998; +CCCurve=1;0.050000000000000003;0.5;0.34999999999999998;0.34999999999999998;0.34999999999999998;0.050000000000000003;0.34999999999999998;0.34999999999999998; + +[EPD] +Enabled=false +Strength=0.5 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=1 +ReweightingIterates=0 + +[FattalToneMapping] +Enabled=false +Threshold=30 +Amount=20 +Anchor=50 + +[Shadows & Highlights] +Enabled=false +Highlights=0 +HighlightTonalWidth=70 +Shadows=0 +ShadowTonalWidth=30 +Radius=40 +Lab=false + +[Compression gamut] +Enabled=false +th_c=0.81499999999999995 +th_m=0.80300000000000005 +th_y=0.88 +d_c=1.147 +Autodc=true +d_m=1.264 +Autodm=true +d_y=1.3120000000000001 +Autody=true +pwr=1.2 +colorspace=dcip3 +rolloff=true + +[ToneEqualizer] +Enabled=false +Band0=0 +Band1=0 +Band2=0 +Band3=0 +Band4=0 +Band5=0 +Regularization=0 +Pivot=0 + +[Crop] +Enabled=false +X=0 +Y=0 +W=1920 +H=1080 +FixedRatio=true +Ratio=As Image +Orientation=As Image + +[CropGuide] +Enabled=true +RuleOfThirds={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +RuleOfDiagonals={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +HarmonicMeans={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +Crosshair={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +Grid={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +GoldenTriangle={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +GoldenRatio={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +Epassport={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +CenteredSquare={"Enabled":false,"Red":1,"Green":1,"Blue":1,"Alpha":0.618} +GoldenTriangleMirror=false +GoldenRatioRotate=false +GoldenRatioMirror=false +Bleed=0 +Basis=Scale +AspectRatios=[] + +[Coarse Transformation] +Rotate=0 +HorizontalFlip=false +VerticalFlip=false + +[Common Properties for Transformations] +Method=log +Scale=1 +Scale horizontally=1 +Scale vertically=1 +AutoFill=true + +[Rotation] +Degree=0 + +[Distortion] +Amount=0 +FocalLength=12 +Defish=false + +[LensProfile] +LcMode=none +LCPFile= +UseDistortion=true +UseVignette=true +UseCA=false +LFCameraMake= +LFCameraModel= +LFLens= + +[Perspective] +Method=simple +Horizontal=0 +Vertical=0 +CameraCropFactor=0 +CameraFocalLength=0 +CameraPitch=0 +CameraRoll=0 +CameraShiftHorizontal=0 +CameraShiftVertical=0 +CameraYaw=0 +ProjectionShiftHorizontal=0 +ProjectionPitch=0 +ProjectionRotate=0 +ProjectionShiftVertical=0 +ProjectionYaw=0 +ControlLineValues= +ControlLineTypes= + +[Gradient] +Enabled=false +Degree=0 +Feather=25 +Strength=0.59999999999999998 +CenterX=0 +CenterY=0 + +[Locallab] +Enabled=false +Selspot=0 + +[PCVignette] +Enabled=false +Strength=0.59999999999999998 +Feather=50 +Roundness=50 + +[CACorrection] +Red=0 +Blue=0 + +[Vignetting Correction] +Amount=0 +Radius=50 +Strength=1 +CenterX=0 +CenterY=0 + +[Resize] +Enabled=true +Scale=0.63 +AppliesTo=Cropped area +Method=Lanczos +DataSpecified=4 +Width=900 +Height=900 +LongEdge=1200 +ShortEdge=675 +AllowUpscaling=false + +[Framing] +Enabled=false +FramingMethod=Standard +AspectRatio=0 +Orientation=AsImage +FramedWidth=800 +FramedHeight=600 +AllowUpscaling=false +BorderSizingMethod=Percentage +Basis=Auto +RelativeBorderSize=0.10000000000000001 +MinSizeEnabled=false +MinWidth=0 +MinHeight=0 +AbsWidth=0 +AbsHeight=0 +BorderRed=255 +BorderGreen=255 +BorderBlue=255 + +[PostDemosaicSharpening] +Enabled=false +Contrast=10 +AutoContrast=true +AutoRadius=true +DeconvRadius=0.75 +DeconvRadiusOffset=0 +DeconvIterCheck=true +Showcap=false +Noisecaptype=true +Noisecap=0 +Noisecapafter=0 +DeconvIterations=20 + +[PostResizeSharpening] +Enabled=false +Contrast=15 +Method=rld +Radius=0.5 +Amount=200 +Threshold=20;80;2000;1200; +OnlyEdges=false +EdgedetectionRadius=1.8999999999999999 +EdgeTolerance=1800 +HalocontrolEnabled=false +HalocontrolAmount=85 +DeconvRadius=0.45000000000000001 +DeconvAmount=100 +DeconvDamping=0 +DeconvIterations=100 + +[Color Management] +InputProfile=(embedded) +ToneCurve=false +ApplyLookTable=false +ApplyBaselineExposureOffset=true +ApplyHueSatMap=true +DCPIlluminant=0 +WorkingProfile=Rec2020 +WorkingTRC=none +Wwgamut=none +Will=D65 +Wprim=def +Wcat=brad +OpacityCurveWLI=1;0;0.5;0.34999999999999998;0.34999999999999998;0.5;0.69999999999999996;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998; +WorkingTRCGamma=2.3999999999999999 +WorkingTRCSlope=12.92 +WorkingTRCsat=0.5 +Wmidtcie=0 +Sigmatrc=1 +Offstrc=1 +Residtrc=0 +Wgampower=1 +Wgamgain=0 +Pyrwavtrc=2 +Wsmoothcie=false +Wsmoothciesli=0 +Redx=0.70799999999999996 +Redy=0.29199999999999998 +Grex=0.17000000000000001 +Grey=0.79700000000000004 +Blux=0.13100000000000001 +Bluy=0.045999999999999999 +Redrot=0 +Redsat=0 +Grerot=0 +Gresat=0 +Blurot=0 +Blusat=0 +Refi=0 +Shiftx=0 +Shifty=0 +LabGridcieALow=0.46908899999999998 +LabGridcieBLow=-0.287273 +LabGridcieAHigh=-0.57999999999999996 +LabGridcieBHigh=-0.81799999999999995 +LabGridcieGx=-0.50900900000000004 +LabGridcieGy=0.63090000000000002 +LabGridcieWx=-0.24959000000000001 +LabGridcieWy=-0.22 +LabGridcieMx=0 +LabGridcieMy=0 +Preser=0 +Fbw=false +TrcExp=false +WavExp=false +Gamut=true +OutputProfile=RTv4_sRGB +aIntent=Relative +OutputProfileIntent=Relative +OutputBPC=true + +[Wavelet] +Enabled=false +Strength=100 +Balance=0 +Sigmafin=1 +Sigmaton=1 +Sigmacol=1 +Sigmadir=1 +Rangeab=20 +Protab=0 +Iter=0 +MaxLev=7 +TilesMethod=full +complexMethod=normal +mixMethod=mix7 +sliMethod=sli +quaMethod=cons +DaubMethod=6_ +ChoiceLevMethod=all +BackMethod=grey +LevMethod=4 +DirMethod=all +CBgreenhigh=0 +CBgreenmed=0 +CBgreenlow=0 +CBbluehigh=0 +CBbluemed=0 +CBbluelow=0 +Ballum=7 +Sigm=1 +Levden=0 +Thrden=0 +Limden=0 +Balchrom=0 +Chromfine=0 +Chromcoarse=0 +MergeL=20 +MergeC=20 +Softrad=0 +Softradend=0 +Strend=50 +Detend=0 +Thrend=0 +Expcontrast=false +Expchroma=false +Expedge=false +expbl=false +Expresid=false +Expfinal=false +Exptoning=false +Expnoise=false +Expclari=false +LabGridALow=0 +LabGridBLow=0 +LabGridAHigh=0 +LabGridBHigh=0 +Contrast1=0 +Contrast2=0 +Contrast3=0 +Contrast4=0 +Contrast5=0 +Contrast6=0 +Contrast7=0 +Contrast8=0 +Contrast9=0 +Chroma1=0 +Chroma2=0 +Chroma3=0 +Chroma4=0 +Chroma5=0 +Chroma6=0 +Chroma7=0 +Chroma8=0 +Chroma9=0 +ContExtra=0 +HSMethod=with +HLRange=50;75;100;98; +SHRange=0;2;50;25; +Edgcont=0;10;75;40; +Level0noise=0;0; +Level1noise=0;0; +Level2noise=0;0; +Level3noise=0;0; +Leveldenoise=0;0; +Levelsigm=1;1; +ThresholdHighlight=4 +ThresholdShadow=5 +Edgedetect=90 +Edgedetectthr=20 +EdgedetectthrHi=0 +Edgesensi=60 +Edgeampli=10 +ThresholdChroma=5 +CHromaMethod=link +Medgreinf=less +Ushamethod=clari +CHSLromaMethod=SL +EDMethod=CU +NPMethod=none +BAMethod=none +TMMethod=cont +ChromaLink=0 +ContrastCurve=1;0;0.25;0.34999999999999998;0.34999999999999998;0.5;0.75;0.34999999999999998;0.34999999999999998;0.90000000000000002;0;0.34999999999999998;0.34999999999999998; +blcurve=1;0;0;0;0.34999999999999998;0.5;0;0.34999999999999998;0.34999999999999998;1;0;0.34999999999999998;0.34999999999999998; +Pastlev=0;2;30;20; +Satlev=30;45;130;100; +OpacityCurveRG=1;0;0.5;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998; +OpacityCurveBY=1;0;0.5;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998; +wavdenoise=1;0;1;0.34999999999999998;0.34999999999999998;0.5;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998; +wavdenoiseh=1;0;1;0.34999999999999998;0.34999999999999998;0.5;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998; +OpacityCurveW=1;0;0.34999999999999998;0.34999999999999998;0;0.34999999999999998;0.75;0.34999999999999998;0.34999999999999998;0.59999999999999998;0.75;0.34999999999999998;0.34999999999999998;1;0.34999999999999998;0;0; +OpacityCurveWL=1;0;0.5;0.34999999999999998;0.34999999999999998;1;0.5;0.34999999999999998;0.34999999999999998; +HHcurve=0; +Wavguidcurve=0; +Wavhuecurve=0; +CHcurve=0; +WavclCurve=0; +Median=false +Medianlev=false +Linkedg=false +CBenab=false +Lipst=false +Skinprotect=0 +chrwav=0 +bluwav=1 +Hueskin=-5;25;170;120; +Edgrad=15 +Edgeffect=1 +Edgval=0 +ThrEdg=10 +AvoidColorShift=false +Showmask=false +Oldsh=true +TMr=false +Sigma=1 +Offset=1 +Lowthr=40 +ResidualcontShadow=0 +ResidualcontHighlight=0 +ThresholdResidShadow=30 +ThresholdResidHighLight=70 +Residualradius=40 +Residualchroma=0 +Residualblur=0 +Residualblurc=0 +ResidualTM=0 +ResidualEDGS=1.3999999999999999 +ResidualSCALE=1 +Residualgamma=1 +HueRangeResidual=0 +HueRange=-260;-250;-130;-140; +Contrast=0 + +[Spot removal] +Enabled=false + +[Directional Pyramid Equalizer] +Enabled=false +Gamutlab=false +cbdlMethod=bef +Mult0=1 +Mult1=1 +Mult2=1 +Mult3=1 +Mult4=1 +Mult5=1 +Threshold=0.20000000000000001 +Skinprotect=0 +Hueskin=-5;25;170;120; + +[HSV Equalizer] +Enabled=false +HCurve=0; +SCurve=0; +VCurve=0; + +[SoftLight] +Enabled=false +Strength=30 + +[Film Simulation] +Enabled=false +ClutFilename= +Strength=100 + +[RGB Curves] +Enabled=false +LumaMode=false +rCurve=0; +gCurve=0; +bCurve=0; + +[ColorToning] +Enabled=false +Method=LabRegions +Lumamode=true +Twocolor=Std +Redlow=0 +Greenlow=0 +Bluelow=0 +Satlow=0 +Balance=0 +Sathigh=0 +Redmed=0 +Greenmed=0 +Bluemed=0 +Redhigh=0 +Greenhigh=0 +Bluehigh=0 +Autosat=true +OpacityCurve=1;0;0.29999999999999999;0.34999999999999998;0;0.25;0.80000000000000004;0.34999999999999998;0.34999999999999998;0.69999999999999996;0.80000000000000004;0.34999999999999998;0.34999999999999998;1;0.29999999999999999;0;0; +ColorCurve=1;0.050000000000000003;0.62;0.25;0.25;0.58499999999999996;0.11;0.25;0.25; +SatProtectionThreshold=30 +SaturatedOpacity=80 +Strength=50 +HighlightsColorSaturation=60;80; +ShadowsColorSaturation=80;208; +ClCurve=3;0;0;0.34999999999999998;0.65000000000000002;1;1; +Cl2Curve=3;0;0;0.34999999999999998;0.65000000000000002;1;1; +LabGridALow=0 +LabGridBLow=0 +LabGridAHigh=0 +LabGridBHigh=0 +LabRegionA_1=0 +LabRegionB_1=0 +LabRegionSaturation_1=0 +LabRegionSlope_1=1 +LabRegionOffset_1=0 +LabRegionPower_1=1 +LabRegionHueMask_1=1;0.16666666699999999;1;0.34999999999999998;0.34999999999999998;0.82877752459999998;1;0.34999999999999998;0.34999999999999998; +LabRegionChromaticityMask_1=1;0;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998; +LabRegionLightnessMask_1=1;0;1;0.34999999999999998;0.34999999999999998;1;1;0.34999999999999998;0.34999999999999998; +LabRegionMaskBlur_1=0 +LabRegionChannel_1=-1 +LabRegionsShowMask=-1 + +[RAW] +DarkFrame=/szeva +DarkFrameAuto=false +FlatFieldFile=/szeva +FlatFieldAutoSelect=false +FlatFieldFromMetaData=false +FlatFieldBlurRadius=32 +FlatFieldBlurType=Area Flatfield +FlatFieldAutoClipControl=false +FlatFieldClipControl=0 +CA=false +CAAvoidColourshift=true +CAAutoIterations=2 +CARed=0 +CABlue=0 +HotPixelFilter=false +DeadPixelFilter=false +HotDeadPixelThresh=100 +PreExposure=1 + +[RAW Bayer] +Method=amaze +Border=4 +ImageNum=1 +CcSteps=0 +PreBlack0=0 +PreBlack1=0 +PreBlack2=0 +PreBlack3=0 +PreTwoGreen=true +Dehablack=false +LineDenoise=0 +LineDenoiseDirection=3 +GreenEqThreshold=0 +DCBIterations=2 +DCBEnhance=true +LMMSEIterations=2 +DualDemosaicAutoContrast=true +DualDemosaicContrast=20 +PixelShiftMotionCorrectionMethod=1 +PixelShiftEperIso=0 +PixelShiftSigma=1 +PixelShiftShowMotion=false +PixelShiftShowMotionMaskOnly=false +pixelShiftHoleFill=true +pixelShiftAverage=false +pixelShiftMedian=false +pixelShiftGreen=true +pixelShiftBlur=true +pixelShiftSmoothFactor=0.69999999999999996 +pixelShiftEqualBright=false +pixelShiftEqualBrightChannel=false +pixelShiftNonGreenCross=true +pixelShiftDemosaicMethod=amaze +PDAFLinesFilter=false + +[RAW X-Trans] +Method=3-pass (best) +DualDemosaicAutoContrast=true +DualDemosaicContrast=20 +Border=7 +CcSteps=0 +PreBlackRed=0 +PreBlackGreen=0 +PreBlackBlue=0 +Dehablackx=false + +[MetaData] +Mode=1 +ExifKeys=*; + +[Film Negative] +Enabled=false +RedRatio=1.3600000000000001 +GreenExponent=1.5 +BlueRatio=0.85999999999999999 +ColorSpace=1 +RefInput=0;0;0; +RefOutput=2739.961181640625;2740.07568359375;2739.944580078125; + +[RAW Preprocess WB] +Mode=1 diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/images/.DS_Store differ diff --git a/images/hfg_os_background_1_fullhd.jpg b/images/hfg_os_background_1_fullhd.jpg new file mode 100644 index 0000000..1d82c45 Binary files /dev/null and b/images/hfg_os_background_1_fullhd.jpg differ diff --git a/md/startseite.md b/md/startseite.md index 9bb6e5a..41a8de4 100644 --- a/md/startseite.md +++ b/md/startseite.md @@ -30,6 +30,7 @@ Alle, die sich für Linux, Open Source und die Förderung von Wissen in Kunst un Ziel ist es, den Einsatz freier Software in Kunst und Design zu fördern. Durch Workshops, den Aufbau von Wissensdatenbanken, Austausch und Debatten sollen Eigenermächtigung und Verantwortung für Technologie wiederhergestellt werden. Dazu entwickeln wir gemeinsam ein eigenes Linux-basiertes Betriebssystem und unterstützen bei allen Schritten des Wechsels zu freier Software. # Das hfg_OS_ +![hfg_os_background_1_fullhd](images/hfg_os_background_1_fullhd.jpg) Das hfg_OS ist ein auf Debian 13 (Trixie) basierendes, Linux-basiertes Betriebssystem. Es wurde speziell für die Bedürfnisse von Künstler:innen und Designer:innen angepasst und wird kontinuierlich weiterentwickelt. Bald verfügbar: hfg_OS_Falbella-2026-10 diff --git a/output/css/style.css b/output/css/style.css index 9fb1b82..700bd24 100644 --- a/output/css/style.css +++ b/output/css/style.css @@ -138,6 +138,24 @@ main div.sec0 { margin-left: 0; } +/* ---- Bilder ---- */ + +img { + display: block; /* Text startet immer unter dem Bild */ + max-width: 500px; /* Desktop: maximal 500px breit */ + height: auto; + border: 1px solid #333333; /* dunkelgrauer Rand */ + margin: .8rem 0; +} + +/* Smartphone: Bild ueber die volle Breite */ +@media (max-width: 600px) { + img { + max-width: 100%; + width: 100%; + } +} + /* ---- Anker-Navigation im Header (Links auf die Ueberschriften) ---- */ .anker-nav { @@ -215,6 +233,28 @@ hr { margin: 1.5rem 0; } +/* ---- Tabellen ---- */ + +table { + border-collapse: collapse; + margin: 1rem 0; +} + +th, td { + border: 1px solid var(--border); + padding: .4rem .8rem; + text-align: left; +} + +th { + color: var(--heading); + background: #141414; +} + +td { + color: var(--text); +} + /* ---- Code ---- */ code { diff --git a/output/images/.DS_Store b/output/images/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/output/images/.DS_Store differ diff --git a/output/images/hfg_os_background_1_fullhd.jpg b/output/images/hfg_os_background_1_fullhd.jpg new file mode 100644 index 0000000..1d82c45 Binary files /dev/null and b/output/images/hfg_os_background_1_fullhd.jpg differ diff --git a/output/index.html b/output/index.html index 4a2db5d..6b90cc9 100644 --- a/output/index.html +++ b/output/index.html @@ -31,7 +31,7 @@

Die nächsten Termine für den Herbst/Winter 2026 werden aktuell geplant:

hfg_linux_usergroup_date_1_music

-

Platzhalter inhalt, um was geht es hier. Test für den upload.

+

Platzhalter inhalt, um was geht es hier.

hfg_linux_usergroup_date_2_image-editing

@@ -56,7 +56,7 @@

Das hfg_OS_

-

Das hfg_OS ist ein auf Debian 13 (Trixie) basierendes, Linux-basiertes Betriebssystem. Es wurde speziell für die Bedürfnisse von Künstler:innen und Designer:innen angepasst und wird kontinuierlich weiterentwickelt.

+

hfg_os_background_1_fullhd Das hfg_OS ist ein auf Debian 13 (Trixie) basierendes, Linux-basiertes Betriebssystem. Es wurde speziell für die Bedürfnisse von Künstler:innen und Designer:innen angepasst und wird kontinuierlich weiterentwickelt.

Bald verfügbar: hfg_OS_Falbella-2026-10