Initial commit of the source code in the repository.

This commit is contained in:
2025-05-17 20:39:56 -04:00
parent 07d3de8aea
commit 9363f84071
260 changed files with 11918 additions and 1 deletions

310
CSubtitleEntry.wdc Normal file
View File

@@ -0,0 +1,310 @@
#To edit and compare internal_properties, use WINDEV integrated tools.
#Internal properties refer to the properties of controls in windows, reports, etc.
info :
name : CSubtitleEntry
major_version : 30
minor_version : 0
type : 4
description : ""
subtype : 0
options : 256
class :
identifier : 0x181e7a40056cbb40
internal_properties : HwAAAB4AAAD+1kTo6KJy2WQU0Y4fbFD6aQ7NWfD4KKkN7Ml67nIqLXIRxJ1vjfJ1
code_elements :
type_code : 10
p_codes :
-
code : |1+
/* Copyright 2025 Alexandre Leclerc. MPL 2.0. See https://mozilla.org/MPL/2.0/. */
// Contains an SRT entry
CSubtitleEntry est une Classe
m_nID est un entier <sérialise="id"> // ID of this subtitle entry (if not SRT format, a unique ID must be generated)
m_duTimecodeStart est une durée <sérialise="i"> // Timecode start point for this entry
m_duTimecodeEnd est une durée <sérialise="o"> // Timecode end point for this entry
m_sText est une chaine <sérialise=faux> // Text of the subtitle
//
m__bTimecodeNotContinuous est un booléen <sérialise=faux> // If this timecode relative to it's predecessor is not continuous
m__sSpeaker est une chaine <sérialise=faux> // Give the opportunity to identify a speaker for this timecode
fin
ETimecodeFormat est une énumération
tfSRT
tfSVB
fin
ETimecodePart est une combinaison
tpStart
tpEnd
fin
type : 131072
procedures :
-
name : Constructeur
procedure_id : 1737960921599228736
type_code : 27
code : |1+
procédure Constructeur()
type : 589824
-
name : Destructeur
procedure_id : 1737960921599294272
type_code : 28
code : |1+
procédure Destructeur()
type : 655360
-
name : TextAsSingleLine
procedure_id : 1737960921599359808
type_code : 12
code : |1+
// Résumé : Will return the m_sText value as a single line. If there are CRLF, they will be replaced by a space, and make sure there are no double spaces while doing so.
// Paramètres :
// Aucun
// Valeur de retour :
// chaîne ANSI : m_sText value as a single line.
//
procédure TextAsSingleLine() : chaine
sContent est une chaîne
POUR TOUTE CHAÎNE s DE m_sText SÉPARÉE PAR RC
sContent += [" "] + s
FIN
renvoyer sContent
type : 458752
-
name : TimecodeDuration
procedure_id : 1737960921599425344
type_code : 12
code : |1+
// Résumé : <indiquez ici ce que fait la procédure>
// Paramètres :
// Aucun
// Valeur de retour :
// durée : <indiquez ici le rôle de la valeur de retour>
//
procédure TimecodeDuration() : durée
renvoyer m_duTimecodeEnd - m_duTimecodeStart
type : 458752
-
name : MergeWith
procedure_id : 1737960921599490880
type_code : 12
code : |1+
// Résumé : <indiquez ici ce que fait la procédure>
// Paramètres :
// e (CSRTEntry dynamique) : <indiquez ici le rôle de e>
// Valeur de retour :
// Aucune
//
procédure MergeWith(e est un CSubtitleEntry dynamique)
si m_duTimecodeStart < e.m_duTimecodeStart ALORS
// This entry comes first
m_sText += [rc] + e.m_sText
m_dutimecodeend = e.m_duTimecodeEnd
SINON
// The provided entry comes first
m_sText = e.m_sText + [rc] + m_sText
m_duTimecodeStart = e.m_duTimecodeStart
FIN
type : 458752
-
name : SplitTextInLines
procedure_id : 1737960921599556416
type_code : 12
code : |1+
// Résumé : Will split the text on multiple lines so that the maximum number of characters is not exceeded (as best as possible).
// Paramètres :
// nMaxCharPerLine (entier - valeur par défaut=60) : Maximum number of characters there should be on a line.
// Valeur de retour :
// Aucune
//
procédure SplitTextInLines(nMaxCharPerLine est un entier = 60)
nSize est un entier = Taille(m_sText)
// Try to split the sentence as much as possible in the center, if necessary
SI nSize > nMaxCharPerLine ALORS
// We split in equal parts, respecting the maximum number of characters per line:
nParts est un entier = ArrondiSupérieur(nSize / nMaxCharPerLine)
nSection est un entier = nSize / nParts
sTextToSplit est une chaîne = sansespace( Remplace(m_sText, RC, " ") )
m_sText = ""
i est un entier
TANTQUE sTextToSplit <> ""
// Find a nice spot to cut roughly at the n point
SI nParts > 1 ALORS
i = Position(sTextToSplit," ", nSection)
SINON
i = 0
FIN
// Make the cut on the point found
SI i = 0 ALORS
m_sText += [RC] + SansEspace(sTextToSplit)
sTextToSplit = ""
SINON
m_sText += [RC] + SansEspace(sTextToSplit[[ À i]])
sTextToSplit[[ À i]] = ""
FIN
nParts--
FIN
FIN
type : 458752
-
name : TimecodeToString
procedure_id : 1737960921599621952
type_code : 12
code : |1+
// Résumé : Returns timecode as a string in the desired format
// Paramètres :
// eFormat (CSRTEntry.ETimecodeFormat) : Format to use
// ePart (CSRTEntry.ETimeCodePart) : Parts of the timecode to return. If both parts are returned (default), the proper separator will be added.
// Valeur de retour :
// chaîne ANSI : String representing the timecode
//
procédure TimecodeToString(eFormat est un ETimecodeFormat, ePart est une ETimecodePart = tpStart+tpEnd) : chaine
sFormat est une chaîne
sSep est une chaîne
selon eFormat
CAS tfSRT
sFormat = "HH:MM:SS,CCC"
sSep = " --> "
CAS tfSVB
sFormat = "HH:MM:SS.CCC"
sSep = ","
FIN
si ePart = tpStart+tpEnd alors
RENVOYER DuréeVersChaîne(m_duTimecodeStart,sFormat) + sSep + DuréeVersChaîne(m_duTimecodeEnd,sFormat)
SINON si ePart = tpStart
RENVOYER DuréeVersChaîne(m_duTimecodeStart,sFormat)
SINON si ePart = tpEnd
RENVOYER DuréeVersChaîne(m_duTimecodeEnd,sFormat)
sinon
renvoyer ""
FIN
type : 458752
-
name : TimecodeFromString
procedure_id : 1737960921599687488
type_code : 12
code : |1+
// Résumé : Load timecode values from a string.
// Paramètres :
// eFormat (CSRTEntry.ETimecodeFormat) : Format of the string
// sTimecode (chaîne ANSI) : Timecode value as string in the specified format
// Valeur de retour :
// Aucune
//
procédure TimecodeFromString(eFormat est un ETimecodeFormat, sTimecode est une chaine)
sFormat est une chaine
sSep est une chaîne
SELON eFormat
CAS tfSRT
sFormat = "HH:MM:SS,LLL"
sSep = " --> "
CAS tfSVB
sFormat = "HH:MM:SS.LLL"
sSep = ","
// Some timecode entries are not properly formated (like the ones from YouTube miss a leading digit "0:00:00.000" instead of "00:00:00.000")
// If this is the case, we must add the missing leading "0"
SI sTimecode[[2]] = ":" ALORS
sTimecode[[1]] = "0" + sTimecode[[1]]
FIN
n est un entier = position(sTimecode,",")
SI sTimecode[[n+2]] = ":" ALORS
sTimecode[[n+1]] = "0" + sTimecode[[n+1]]
FIN
FIN
m_duTimecodeStart = chaineversdurée( ExtraitChaîne(sTimecode,1,sSep), sFormat )
m_duTimecodeEnd = chaineversdurée( ExtraitChaîne(sTimecode,2,sSep), sFormat )
type : 458752
properties :
-
name : p_sText
identifier : 0x181e7a40056dbb40
type_code : 103
p_codes :
-
code : |1-
procédure publique p_sText() : chaîne ANSI
renvoyer m_sText
type : 1966080
-
code : |1+
procédure publique p_sText(Valeur est chaîne ANSI)
m_sText = Valeur
SplitTextInLines()
type : 2031616
template_refs : []
-
name : p_hTimecodeStart
identifier : 0x1821482d0218227f
type_code : 103
p_codes :
-
code : |1-
procédure publique p_hTimecodeStart() : Heure
renvoyer DuréeVersChaîne(m_duTimecodeStart,"HHMMSSCCC")
type : 1966080
-
code : |1-
procédure publique p_hTimecodeStart(Valeur est Heure)
m_duTimecodeStart=ChaîneVersDurée(Valeur,"HHMMSSLLL")
type : 2031616
template_refs : []
-
name : p_hTimecodeEnd
identifier : 0x18214839022b5130
type_code : 103
p_codes :
-
code : |1-
procédure publique p_hTimecodeEnd() : Heure
renvoyer DuréeVersChaîne(m_duTimecodeEnd,"HHMMSSCCC")
type : 1966080
-
code : |1-
procédure publique p_hTimecodeEnd(Valeur est Heure)
m_duTimecodeEnd=ChaîneVersDurée(Valeur,"HHMMSSLLL")
type : 2031616
template_refs : []
procedure_templates : []
property_templates : []
code_parameters :
internal_properties : HwAAAB4AAAB7MB8NZB5rGUbyk77+IjQnJ74vm430Ar3yq0zmP05sGBBw0ur17uG6ZWry
original_name : Classe1
resources :
string_res :
identifier : 0x17e5b2180962b198
internal_properties : HwAAAB4AAAA809Qj/IAi+r8QXyrnW7sarQeYORCUjKBkmMeTFexSj5AuvTfTUpN0Eg==
custom_note :
internal_properties : HwAAAB4AAADnl3uxgA6ylw4vtqUKEOJQD3VAAOKeNUmhPNojcRFoDpHEcUyYAw==
associated_test :
name : TEST_CSubtitleEntry.wxt