19 - 01 - 2025
Main Menu
Who's online

We have 91 guests and no members online

Latest articles
Visitors
30355889
Today
Yesterday
This Week
This Month
Last Month
All days
6909
9262
50998
160780
288049
30355889

Old stories

Photo resize function

User Rating:  / 1

Da har jeg fått til en fin måte å resize fotoene på i Familie boka for etterkommere og man kan nå sette en max størrelse på bildene. Bildene beholder selvsagt bredde/høyde forhold. For interesserte kan jeg presentere denne funksjonen, det er bare snakk om å finne størrelsen på rektanglet som bildet vil få.

public static RectangleF ResizeRectangle(int w, int h, int maxWidth, int maxHeight)
        {
            float ratioX = (float)maxWidth / (float)w;
            float ratioY = (float)maxHeight / (float)h;
            float scale = Math.Min(ratioX, ratioY);
            return new RectangleF(0, 0, w * scale, h * scale);
        }

Eksempel: Vi har et bilde som er 2500 pixler bredt og 1000 pixler høyt og vil resize det til max bredde på 200 og max høyde på 300 da blir regnestykket slik:

ratioX = 200 / 2500 = 0,08

ratioY = 300 / 1000 = 0,3

scale = (minste tallet av ratioX og ratioY) = 0,08

Bildet resized vil få bredde 2500 * 0,08 = 200 og høyden blir 1000 * 0,08 = 80

 

Hvis et bilde kommer for langt ned på siden (under marginen) blir det plassert på neste side. Man kan angi en max størrelse som bildet vil bli resizet til med samme bredde/høydeforhold som orginalen.

newdescfambok

 

04-05-2013 - Ny oppdatering er lastet opp - Slektsbok funksjonen er oppdatert til også å bruke photo resize funksjonen og plasserer bildet midtstilt på siden. Ancestor Tree vinduet bruker nå også photo resize funksjonen.

New ancestor tree

User Rating:  / 0

Har lastet opp ny versjon av AgetoAgeSqlite (x86) med et helt nytt ancestor tree i tillegg til det som er der fra før. Dette treet begrenser seg til 3 generasjoner over subjekt men man kan presse Venstre og Høyre piltast for å vandre opp i generasjonene og Ned piltasten for å gå tilbake. Jeg ble overrasket over hvor hurtig dette går selv med masse bilder samtidig. Resize funksjonen virker ja.

ancestor3

06-05-2013 - Lastet opp ny versjon av AgetoAgeSqlite (x86) med forbedret Ancestor 3 der man nå kan høyreklikke på en ancestor og velge "Edit" for å få opp personskjemaet. Samtidig har jeg gjort det slik at hvis vinduet resizes til en så liten størrelse at det blir trangt om plassen så blir tekstlengden kortet av litt. Det var forøvrig en interessant oppgave å lage høyreklikk valg for alle ancestorene. Så har jeg også laget en ny knapp på personskjemaet under Functions som får Ancestor 3 til å komme opp. Man finner også Ancestor 3 funksjonen ved høyreklikk i personlisten.

07-05-2013 - Lastet opp ny versjon av AgetoAgeSqlite (x86) med utvidet funksjonalitet i Ancestor 3. Man kan nå vise barn av den ancestoren som musen peker på ved å høyreklikke og velge Children. Alle barn vil vises for denne ancestoren og man kan velge ett som da vil settes som subject. Videre kan man nå se om det finnes flere forfedre ved å se helt øverst i vinduet der det vil vises "More..." hvis det er tilfelle. Se screenshot under. Vinduet er resized ned til nesten minimum og da blir tekstene avkorted også. Klikker man maximize eller resizer større vil hele teksten vises.

anc3

09-05-2013 - Lastet opp ny versjon av AgetoAgeSqlite (x86) med utvidet funksjonalitet i Ancestor 3 vinduet. Man kan nå også gjøre utskrift på printer (med preview). Jeg brukte en forholdsvis enkel teknikk for dette som simpelten bare tar et "bilde" av treet og overfører det til printeren men også her fikk jeg bruk for resize funksjonen som brukes til å resize bildet slik at det passer med marginene for printeren uten at bredde/høyde forholdet endres.

 

New descendant tree

User Rating:  / 0

Noen nye oppdateringer der jeg har føyd til Print preview på f.eks Globen og begge etterkommer trærne som er Descendant Tree og Descendant Tree View. Sistnevnte er blitt kraftig oppdatert med en helt ny visning bruker den nye photo resize metoden nå og plasser bildet sentrert i boksen med navn og fødsels og dødsdato under. Det er lett å zoome inn og ut og man kan bevege seg til høyre, venstre, opp og ned. Plasserer man musen på et punkt og presser "+" eller "-" tasten zoomer man inn på det punktet musen peker på. Testet med en stamfar som har nesten 500 ettterkommere og det var ingen problemer å oppdage. Når man printer ut printes ut det området man ser på skjermen og i teorien skulle det være mulig å forflytte seg og skrive ut hele treet og så sette sammen A4 arkene til et stort etterkommer tre. Man kan også zoome med scroll hjulet på musen hvis man har det. Man kan også forflytte seg et helt skjermbilde til f.eks høyre med å presse og holde inne SHIFT mens man presser høyre piltast på tastaturet.

 

 

 

newdesctreeview2

Her er et eksempel på Print preview. Størrelsen på rektanglene som omringer personene kan settes til ønsket størrelse (høyreklikk og velg Size).

(Bildet er kraftig forminsket)

newdesctreeview3

Og her har jeg gått en generasjon lenger tilbake men brukt en grense på hvor mange generasjoner jeg viser (4)

newdesctreeview4

Og her er samme bilde men har satt "Generation limit" på 5. (høyreklikk)

newdesctreeview5

modifieddesctree

12-05-2013 - Oppdatert etterkommer treet og ancestor treet slik at det implementeres i hoved vinduet hvis det ikke åpnes fra et vindu som er frittstående i såfall blir disse også vist som dialog vindu. Oppdaget også at jeg i farten hadde glemt å sette tilbake noen parametre ved redigering av familie fra personskjemaet, slik at barn ikke fikk foreldrene registrert riktig, dette er nå selvfølgelig ordnet.

13-05-2013 - Har gått gjennom prosedyrene for å legge til barn fra personskjemaet og man kan nå også høyreklikke et barn og flytte det opp eller ned (hvis det er flere enn ett da). Samtidig har jeg gjort det slik at når man legger til nye barn vil etternavnet til faren bli satt som forslag til etternavn på det nye barnet (men det kan man selvsagt endre til hva man vil). Oppdateringen er lastet opp.

New ancestor 3.1

User Rating:  / 0

New ancestor tree named 3.1 is added to AgetoAgeSqlite (x86).

Dette treet er svært likt Ancestor 3 men med bedre sentrering av navnene og mye raskere resizing av vinduet (man kan lett dra vinduet til ønsket størrelse)

25-05-2013 - Lastet opp ny versjon med flere valg på Ancestor 3.1, man kan nå sette bredde av pennen som tegner rektanglet og på bildet under har jeg brukt en penn bredde på 8 pixler og satt hvit farve på pennen. Man kan også sette hvor mye rektanglet skal reduseres for det arealet der teksten og bildene skal være. Man kan høyreklikke og velge Edit for å redigere en ancestor. Eller høyreklikke og velge Children for å sette barn av ancestoren som musen peker på som subject. Man kan også presse CTRL + PIL NED for å velge et barn av subjectet som subject.

På Options/Tree/Rectangle finner man InflateX og inflateY disse verdiene skulle være negative, prøv f.eks med -4 for både inflateX og inflateY.

updanc3j

25-05-2013 - 21.00.00 - Lastet opp ny versjon med texture valg for Ancestor 3.1. Her er et eksempel og her har jeg brukt InflateX og InflateY med -4 for begge.

updanc3m

26-05-2013 - Lastet opp ny versjon, nå kan man høyreklikke og velge Paste texture hvis man har valgt "Use texture" og har kopiert et bilde man vil bruke som texture. F.eks man har laget et texture i et tegneprogram og kopierer bare så bildet og går til Ancestor 3.1 og høyreklikker og velger Paste texture. Lager man et texture man vil ha i databasen for senere bruk kan man lagre texturet som en fil først og så legge dette til i AgetoAgeSqlites PhotoManager. Når man på et senere tidspunkt vil bruke dette texturet kan man bare gå til Photo Manager dobbelklikke texturet og høyreklikke på bildet og velge Copy to Clipboard og så i Ancestor 3.1 lime det inn. Jeg satte en grense på max 400 x 400 pixler for bildene som skal brukes til texture. Det kan være lurt å bruke en funksjon i tegneprogrammet man bruker til å lage bildet litt lyst og en smule diffust for at det skal bli bedre kontrast med navnene og bildene av ancestorene.

updanc3n

27-05-2013 - Har testet litt og funnet at det ikke er nødvendig å sette størrelse på texturene så liten som 400 x 400 så jeg har øket max størrelse til 3000 x 3000 pixler (i praksis vil man nok ikke benytte så store texturer men det kan være greit å ha mulighet for å kunne eksprimentere litt. Har også føyd til wrapmode for texturene. Wrapmode angir hvordan texturene skal settes sammen når arealet som skal fylles er større enn selve texturet. Har også laget en ny meny "Styles/Standard" som setter opp ancestor 3.1 vinduet til å vise det oppsettet som er på bilde nr 2 her. Oppdateringen er lastet opp.

28-05-2013 - Lastet opp ny versjon der man kan lime in texturer individuelt på rektanglene. Det rectanglet som musen befinner seg over når man høyreklikker og velger Paste Texture vil da få dette texturet. (Man må ha kopiert et bilde som man vil bruke som texture først).

updanc3q

29-05-2013 - Lastet opp ny versjon med menyen "Use standard textures" som automatisk setter texture på alle ancestor feltene med det texure som er på bilde 2. Hvis man vil bruke et bilde man har laget eller har liggende på PC'n som texture så åpner man bare dette bildet i en eller annen bilde-editor og markere hele eller deler av bildet man vil bruke og så kopierer man (CTRL + C kan brukes som regel) og så høyreklikker man i Ancestor 3.1 vinduet på det feltet man vil sette texturet og velger Paste Texture.

Her et lite enkelt eksempel på hvordan brukeren kan selv definere utseende ved å lage texturer som fyller klient arealet for kontrollene.

updanc3q

 01-06-2013 - Lastet opp ny versjon av AgetoAgeSqlite med flere valg i Ancestor 3.1 vinduet. Man kan nå lime inn texturer og når man er ferdig kan man lagre disse texturene med å velge File/Save textures. En dialog kommer opp der man enten velger et navn eller skriver direkte inn et nytt navn. Hvis man velger et eksisterende navn blir texturene overskrevet. (Men det vil man sikkert i de fleste tilfeller hvis man ikke vil lage en kopi av texurene, da må man skrive inn et nytt navn.) Disse navnene er navn som er felles for texturene som er i bruk. I alt kan det være 15 forskjellige texturer for hvert oppsett og navnet er altså navn på dette oppsettet. Man kan skrive et hvilket som helst ord som navn f.eks Summer.

Jeg vil gi en liten leksjon i hvordan man lager ett oppsett der man skreddersyr hvert enkelt texture.

  1. Høyreklikk på en person i personlisten og velg Ancestor 3.1. Maximer vinduet.
  2. Velg Options/Styles/Standard. Velg så Options/Save settings. (neste gang man åpner Ancestor 3.1 vil Styles/Standard være satt)
  3. Så finner man størrelsen på rektanglene, det er 15 rektangler men de 8 øverste er like i størrelse og de 4 på neste rad er også like i størrelse og det gjelder også de 2 rektanglene på neste rad. Det blir altså 4 forskjellige størrelser man trenger å vite og størrelsen finnes ved å høyreklikke på et rektangel (ancestor) og velge "Size of this rectangle". Man åpner deretter sin favoritt editor for bilder og lager et nytt bilde med denne størrelsen. (størrelsen er angitt i pixler). Til å begynne med kan man lage kun et bilde av disse 4 størrelsene og gjenbruke bildet på de andre ancestorene som er av samme størrelse.
  4. Når man har designet disse 4 forskjellige størrelsene og tegnet og farvesatt disse kan man begynne å legge de inn som texturer. Kopier texturet (merk hele texturet og velg copy i bildeeditoren man bruker) man har laget for den nederste ancestoren (rekkefølgen er ikke viktig men jeg må jo begynne et sted) og høyreklikk på denne ancestoren og velg Paste texture. Så kopierer man og limer inn de neste og limer inn på de ancestorene som har samme størrelse. Til slutt skulle man da ha satt 15 texturer.
  5. Til slutt lagrer man så dette oppsettet med File/Save textures og velger her et navn på oppsettet f.eks "Standard".
  6. Vil man modifisere disse texturene man har laget men vil beholde disse orginalene kan man først lage en kopi av dem ved å velge File/Save textures og velge et nytt navn på oppsettet. Deretter kan man høyreklikke på en ancestor og velge Copy to Clipboard og så kan man lime det inn i sin favoritt bilde editor og gjøre ønskede endringer. Merk hele texturet når man er ferdig, Copy og lim det inn igjen i Ancestor 3.1.

  Lykke til!

Jeg glemte... når man så har lukket Ancestor 3.1 og åpner det igjen velger man så File/Open textures og velger det navnet man valgte eller skrev da man lagret. Så vips er alt ferdig oppsatt og man kan begynne å bla frem og tilbake i ancestorene, gjøre utskrift, etc.....

Her er et skjermbilde hvor jeg prøver litt....

updanc3s

02-06-2013 - Lastet opp ny versjon der jeg har laget tabell som lagrer verdiene på marginene i Ancestor 3.1, disse verdiene vil bli lagret ved lagring av texturer slik at når man velger et oppsett så vil verdiene som ble brukt da bli brukt.

Så har jeg innført en ny variabel cxy som sammen med InflateX og InflateY bestemmer klientarealet som texturet vil få. Men det vil være enklest  og hurtigst å bruke cxy da denne virker inn på både X og Y. Så vil man ha større avstand mellom bordene øker man cxy litt.

Jeg vil med det samme også gi oppskrift på en mye enklere måte å skreddersy texturene:

  1. Samme som forrige (se ovenfor)
  2. Samme som forrige (se ovenfor)
  3. Velg File/Create empty textures.
  4. Nå kommer man til det enkle og geniale. Høyreklikk på ancestorene og velg Copy texture to Clipboard. Og man kan så starte sin favoritt editor for bilder og lime det inn som et nytt bilde. Så kan man redigere det som man vil (bortsett fra størrelsen som ikke bør endres (hvis det skal være skreddersydd)). Når man er ferdig kopier man hele texturet og limer det inn igjen på den ancestoren man kopierte fra.
  5. Velg File/Save textures og skriv inn et nytt navn som ikke er brukt før hvis man ikke vil overskrive noen andre da. I såfall velger man bare et navn som er der fra før.

Her er et til eksempel der jeg har justert litt på cxy og RectanglePenWidth disse verdiene blir nå lagret og brukt igjen for det oppsettet som er valgt.

updanc3t

03-06-2013 - Lastet opp ny versjon der Ancestor 3.1 har fått egen funksjon for å legge til foreldre. Når man klikker Save på Familieskjemaet blir det sent message til Ancestor 3.1 vinduet om å oppdatere. Dette gjør at man ser at Treet oppdateres mens man redigerer og lagrer på familieskjemaet og starter man med en blank database og skal begynne å legge inn personer kan det være praktisk å bare lage en person først i personlisten og deretter høyreklikke denne og velge Ancestor 3.1 for å legge til foreldre osv.

Prøver litt mere...

updanc3u

Tips: Bruk helst noe bedre enn det Paint programmet som følger med Windows for å redigere texturene. F.eks Paint.Net er et forholdsvis enkelt og greit program å bruke og det har den fine funksjonen "Paste in to New Image" fra Edit menyen. Paint.Net kan lastes ned her.

New relationship calculator

User Rating:  / 1

En ny relasjonskalkulator har blitt programmert i løpet av de siste 3 dager. Den gamle er fremdeles tilgjengelig da denne nye kun gir positivt resultat hvis det er en ekte relasjon. Denne nye baserer seg på å

  1. Finne en eller to felles ancestorer. Finner den kun èn er det da snakk om en "halv" relasjon (men en ekte relasjon).
  2. Finne avstand i generasjoner mellom A og felles ancestor og mellom B og felles ancestor.
  3. Finne hvem A stammer fra og hvem B stammer fra. (dette gir svar på om A og B har de samme felles ancestor par)

Metoden er hurtig og vil kun bla seg tilbake i ancestorene til A og B for å finne relasjonen.

Oppdateringen er lastet opp.

newrelationship

 

Bm.

Jeg har ikke lagt inn testing om A og B kan være ste-relatert men jeg har kommet frem til en select setning som raskt kan finne ut av det.

Select Count(*) from ata_families where maleid in (select fatherid from ata_persons where pid = P1 and femaleid not in (select motherid from ata_persons where pid = P1)) and femaleid in (select motherid from ata_persons where pid = P2 and maleid not in (select fatherid from ata_persons where pid = P2))

Hvis dette returnerer en verdi som er større enn 0 er P1 og P2 ste-relatert. Setningen er fortsatt under testing og utvikling så jeg har valgt å vente litt til med å inkludere denne testen.